Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

DbObjectGuard.h

Go to the documentation of this file.
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

Generated at Wed Nov 21 12:22:20 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000