• Classes
  • Modules
  • Namespaces
  • Files
  • Related Pages
  • File List
  • File Members

cdbDALaccess.h

Go to the documentation of this file.
00001 /*******************************************************************
00002 * E.S.O. - ACS project
00003 *
00004 * "@(#) $Id: cdbDALaccess.h,v 1.33 2008/09/29 09:51:19 cparedes Exp $"
00005 *
00006 * who       when        what
00007 * --------  ----------  ----------------------------------------------
00008 * dvitas    2002/07/01  created
00009 */
00010 
00011 #ifndef __cdb_DALaccess_h__
00012 #define __cdb_DALaccess_h__
00013 
00014 
00015 #include <acsutil.h>
00016 #include <cdbExport.h>
00017 
00018 #include <cdb.h>
00019 #include <cdbDALC.h>
00020 #include <cdbDALS.h>
00021 #include <cdbDAOImpl.h>
00022 
00023 
00024 namespace cdb {
00025 
00026 class DALChangeListenerImpl;
00027 
00028 class cdb_EXPORT DALaccess : public Table
00029 {
00030 public:
00031         DALaccess( int argc, char *argv[], CORBA::ORB_ptr orb = CORBA::ORB::_nil() );
00032         virtual ~DALaccess();
00033         static  Table* createTable( int argc, char** argv, CORBA::ORB_ptr orb );
00034 
00035 // Overrides
00036         virtual Boolean isInitialized() { return m_initialized; }
00037 
00038         Boolean CreateRecord(const String &strRecordName,
00039                 Boolean bTruncate = FALSE);
00040         
00041         ULong           GetRecordState(const String &strRecordName);
00042         
00043         Boolean GetField(const String &strRecordName,
00044                 const String &strFieldName,
00045                 Field &fld);
00046         
00047         Boolean SetField(const String &strRecordName,
00048                 const String &strFieldName,
00049                 const Field &fld,
00050                 Boolean bCreate = TRUE);
00051         
00052         Boolean RemoveField(const String &strRecordName,
00053                 const String &strFieldName);
00054         
00055         Boolean GetRecord(const String &strRecordName,
00056                 Record &rec,
00057                 Boolean bCreate = FALSE,
00058                 Boolean bAppend = FALSE);
00059         
00060         Boolean SetRecord(const String &strRecordName,
00061                 const Record &rec,
00062                 Boolean bCreate = TRUE,
00063                 Boolean bAll = TRUE);
00064         Boolean RemoveRecord(const String &strRecordName);
00065         
00066         virtual Boolean GetChildren(const String &strRecordName,
00067                 StringArray &astrChildren);
00068 //
00069         void    UseLocalDAOs( int localDAOs = 1 ) { m_useLocalDAO = localDAOs; }
00070 
00071         static void forceDAL(CDB::DAL_ptr dal) { m_forcedDAL = CDB::DAL::_duplicate(dal); }
00072         static void exitFunction() { exitStarts = 1; }
00073 protected:
00074 // Operations
00075         char*                           resolveDALserverIOR( int argc, char *argv[] );
00076         DAOImpl*                getDAO( const String &strRecordName );
00077 
00078 // Implementation
00079         CORBA::ORB_var  m_orb;
00080         CDB::DAL_var    m_dal;
00081   Boolean       m_initialized;
00082   int           m_useLocalDAO;
00083   Boolean       m_destroyORB;
00084   int           m_useCacheListener;
00085 
00086   typedef std::map<String, DAOImpl*> MapStrRec;
00087   MapStrRec m_mpRecords;
00088 
00089   CDB::DALChangeListener_var changeListenerObj;
00090   long changeListenerID;
00091 
00092   friend class DALChangeListenerImpl;
00093 // avoid deregistration of change listener when stub objects are destroyed
00094   static int exitStarts;
00095 
00096   static CDB::DAL_var m_forcedDAL;
00097 
00098 };
00099 
00100 class DALChangeListenerImpl : public POA_CDB::DALChangeListener
00101 {
00102 public:
00103     virtual void object_changed (
00104         const char * curl
00105          
00106       );
00107 
00108       DALaccess::MapStrRec* pMap;
00109 
00110 };
00111 
00112  }; 
00113 
00114 #endif // __cdb_DALaccess_h__
00115 
00116 
00117 

Generated on Thu Jan 12 2012 23:13:50 for ACS-10.0 C++ API by  doxygen 1.7.0