00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef DBCNV_DBDEFOBJECT_H
00019 #define DBCNV_DBDEFOBJECT_H 1
00020
00021
00022 #include "DbHandle.h"
00023 #include "GaudiKernel/StatusCode.h"
00024 #include <new>
00025
00026
00027 class IDataDirectory;
00028 class IOpaqueAddress;
00029 class StreamBuffer;
00030 class GenericLink;
00031 class DataObject;
00032
00033
00034 class IService;
00035 class ISvcLocator;
00036 class IMessageSvc;
00037 class IObjManager;
00038 class IDataBaseMgr;
00039 class IAddressCreator;
00040 class IDataProviderSvc;
00041 class IConversionSvc;
00042 class IDataBaseHandler;
00043 class DbDefObject;
00044 class DbPersistent;
00045 template <class T> class DbWrapper;
00046 template <> class DbWrapper<DbDefObject>;
00047
00073 class DbDefObject : public DbObject {
00075 friend DbPersistent;
00076 friend DbWrapper<DbDefObject>;
00077 public:
00079 class HelperServices {
00080 public:
00081 ISvcLocator* SvcLocator;
00082 IMessageSvc* MessageSvc;
00083 IDataProviderSvc* DataSvc;
00084 IConversionSvc* PersSvc;
00085 IConversionSvc* CnvSvc;
00086 IDataBaseMgr* DbaseMgr;
00087 IAddressCreator* AddrCreator;
00088 IObjManager* ObjManager;
00089 HelperServices() {
00090 clear();
00091 }
00092 void clear() {
00093 SvcLocator = 0;
00094 MessageSvc = 0;
00095 DataSvc = 0;
00096 CnvSvc = 0;
00097 PersSvc = 0;
00098 AddrCreator= 0;
00099 DbaseMgr = 0;
00100 ObjManager = 0;
00101 }
00102 };
00103 protected:
00105 long m_numSymbolic;
00106 public:
00108 DbDefObject() : m_numSymbolic(0) {
00109 }
00111 virtual ~DbDefObject() {
00112 }
00114 static DbObject* create(void* buffer);
00116 void setNumSymLink(long length) {
00117 m_numSymbolic = length;
00118 }
00120 long numSymLink() const {
00121 return m_numSymbolic;
00122 }
00124 virtual StatusCode beginTransientUpdate(HelperServices& , DataObject* ) {
00125 return StatusCode::SUCCESS;
00126 }
00128 virtual StatusCode endTransientUpdate(HelperServices& , DataObject* ) {
00129 return StatusCode::SUCCESS;
00130 }
00132 virtual StatusCode doTransientUpdate(HelperServices& , DataObject* ) {
00133 return StatusCode::SUCCESS;
00134 }
00136 virtual StatusCode beginPersistentUpdate(HelperServices& , const DataObject* ) {
00137 return StatusCode::SUCCESS;
00138 }
00140 virtual StatusCode endPersistentUpdate(HelperServices& , const DataObject* ) {
00141 return StatusCode::SUCCESS;
00142 }
00144 virtual StatusCode doPersistentUpdate(HelperServices& , const DataObject* ) {
00145 return StatusCode::SUCCESS;
00146 }
00147 };
00148
00149
00150 inline DbObject* DbDefObject::create(void* buffer) {
00151 return ::new(buffer) DbDefObject();
00152 }
00153
00154 #endif // DBCNV_DBDEFOBJECT_H
00155