00001 //==================================================================== 00002 // DbObjectGuard definition 00003 //-------------------------------------------------------------------- 00004 // 00005 // Package : DbCnv/DbSvc ( The LHCb Offline System) 00006 // 00007 // Description: Guard containing object persistency information 00008 // 00009 // Author : M.Frank 00010 // History : 00011 // +---------+----------------------------------------------+--------- 00012 // | Date | Comment | Who 00013 // +---------+----------------------------------------------+--------- 00014 // | 11/07/99| Initial version | MF 00015 // +---------+----------------------------------------------+--------- 00016 //==================================================================== 00017 #ifndef DBCNV_DBOBJECTGUARD_H 00018 #define DBCNV_DBOBJECTGUARD_H 1 00019 00020 // STL include files 00021 #include <string> 00022 00023 // Framework include files 00024 #include "GaudiKernel/StreamBuffer.h" 00025 #include "GaudiDb/DbOOMs.h" 00026 #include "GaudiDb/DbVArray.h" 00027 #include "GaudiDb/DbContainer.h" 00028 00029 // Forward declarations 00030 class DbPersistent; 00031 class DbTypeInfo; 00032 class DbObject; 00033 class DbLink; 00034 00060 class DbObjectGuard : public DbPersistentGuard { 00061 protected: 00063 mutable long m_refCount; 00065 mutable long m_objSize; 00067 mutable long m_size; 00069 mutable unsigned long m_oid[3]; 00071 mutable dbVarray< dbHandle<DbLink> > m_links; 00073 mutable StreamBuffer m_objBuff; 00075 mutable StreamBuffer m_linkBuff; 00077 mutable dbHandle<DbContainer> m_container; 00079 mutable DbPersistent* m_persistent; 00080 00082 virtual ~DbObjectGuard() { 00083 } 00084 public: 00085 typedef DbPersistent Persistent; 00087 DbObjectGuard(unsigned char type = TEST_StorageType, Persistent* persistent = 0) 00088 : m_container(type) 00089 { 00090 m_persistent = persistent; 00091 m_refCount = m_size = m_objSize = 0; 00092 m_oid[0] = m_oid[1] = m_oid[2] = 0xFFFFFFFF; 00093 } 00095 DbObjectGuard(unsigned char /*type*/, Persistent* persistent, const dbHandle<DbContainer>& cntH) { 00096 m_container = cntH; 00097 m_persistent = persistent; 00098 m_refCount = m_size = m_objSize = 0; 00099 m_oid[0] = m_oid[1] = m_oid[2] = 0xFFFFFFFF; 00100 } 00102 virtual unsigned long addRef() const { 00103 return ++m_refCount; 00104 } 00106 virtual unsigned long release() const { 00107 return --m_refCount; 00108 } 00110 virtual unsigned long* oid() const { 00111 return m_oid; 00112 } 00114 virtual unsigned char type() const { 00115 return m_container.type(); 00116 } 00118 virtual void setContainer (const dbHandle<DbContainer>& cntH) { 00119 m_container = cntH; 00120 } 00122 virtual dbHandle<DbContainer>& container() const { 00123 return m_container; 00124 } 00126 virtual void setPersistent (DbPersistent* p) { 00127 m_persistent = p; 00128 } 00130 virtual DbPersistent* persistent() const { 00131 return m_persistent; 00132 } 00134 virtual void setObjectSize(long siz) { 00135 m_objSize = siz; 00136 } 00138 virtual long objectSize() const { 00139 return m_objSize; 00140 } 00142 virtual void setSize(long siz) { 00143 m_size = siz; 00144 } 00146 virtual long size() const { 00147 return m_size; 00148 } 00150 virtual dbVarray< dbHandle<DbLink> >& links() const { 00151 return m_links; 00152 } 00154 virtual StreamBuffer& objBuffer() const { 00155 return m_objBuff; 00156 } 00158 virtual StreamBuffer& linkBuffer() const { 00159 return m_linkBuff; 00160 } 00161 }; 00162 #endif // DBCNV_DBOBJECTGUARD_H
1.2.3 written by Dimitri van Heesch,
© 1997-2000