Gaudi Framework, version v20r4

Generated: 8 Jan 2009

PoolDbTupleCallback Class Reference

#include <PoolDbTupleCallback.h>

Inheritance diagram for PoolDbTupleCallback:

Inheritance graph
[legend]
Collaboration diagram for PoolDbTupleCallback:

Collaboration graph
[legend]

List of all members.


Detailed Description

Description: Specialized callback to handle N-tuple interactions while saving and lodaing POOL data.

Author:
M.Frank
Version:
1.0

Definition at line 40 of file PoolDbTupleCallback.h.


Public Member Functions

 PoolDbTupleCallback (DataObject *pObj)
 Initializing constructor for N-tuple callback object.
virtual ~PoolDbTupleCallback ()
 Standard Destructor.
virtual pool::DataCallBackclone () const
 Virtual copy.
virtual void release ()
 Virtual delete.
std::vector< void * > & addresses ()
 Access to the bound addresses.
const std::vector< int > & mapping ()
 Access re-direction map.
std::vector< PoolDbTokenWrap * > & links ()
 Access to pointers of the links.
pool::DbBlobstream ()
 Access to streambuffer object, for items which must be blobified.
pool::DbSelectiterator () const
 Access to select statement.
pool::DbSelectselect (ISelectStatement *sel)
 Select new tokens according to new selection criteria.
void configure (const INTuple *pTuple, const pool::DbTypeInfo *typ, const pool::DbContainer &cntH)
 Configure N-tuple callback and store properties for re-use.
virtual pool::DbStatus start (CallType action_type, void *pObj, void **context)
 Callback when a read sequence should be started.
virtual pool::DbStatus end (CallType action_type, void *context)
 Callback when a read sequence should be started.
virtual pool::DbStatus bind (CallType action_type, const pool::DbColumn *col_ident, int col_number, void *context, void **data_pointer)
 Callback to retrieve the absolute address of a column.

Private Types

typedef const ROOT::Reflex::Type & TypeH
 Reflection information.

Private Attributes

std::vector< void * > m_addr
 Vector with all addresses mapped.
std::vector< PoolDbTokenWrapm_links
 Vector to store pointers link information for address columns.
std::vector< PoolDbTokenWrap * > m_plinks
 Vector to store pointers link information for address columns.
std::vector< int > m_map
 Redirection map between N-tuple columns and DbTypeInfo columns.
pool::DbSelectm_iter
 Pointer to hold the select statement.
pool::DbBlob m_stream
 Reference to streambuffer to hold blobified data.
pool::DbContainer m_cntH
 Pointer to pool container handle.
long m_refCount
 Reference counter.

Member Typedef Documentation

typedef const ROOT::Reflex::Type& PoolDbTupleCallback::TypeH [private]

Reflection information.

Reimplemented from pool::DataCallBack.

Definition at line 45 of file PoolDbTupleCallback.h.


Constructor & Destructor Documentation

PoolDbTupleCallback::PoolDbTupleCallback ( DataObject pObj  ) 

Initializing constructor for N-tuple callback object.

Parameters:
svc [IN] Manager interface of conversion service
pObj [IN] Pointer to N-tuple object
reading [IN] Read/Write flag (Needed by base class
Returns:
Reference to object

Definition at line 28 of file PoolDbTupleCallback.cpp.

00029 : pool::DbDefaultDataHandler(),
00030   pool::DbObjectCallBack(0), 
00031   m_iter(0), m_cntH(pool::POOL_StorageType)
00032 {
00033   m_refCount = 1;
00034   setObject(pObj);
00035   s_count->increment();
00036 }

PoolDbTupleCallback::~PoolDbTupleCallback (  )  [virtual]

Standard Destructor.

Definition at line 39 of file PoolDbTupleCallback.cpp.

00040 {
00041   pool::deletePtr(m_iter);
00042   s_count->decrement();
00043   const pool::DbTypeInfo* typ = (const pool::DbTypeInfo*)shape();
00044   if ( typ ) typ->deleteRef();
00045 }


Member Function Documentation

pool::DataCallBack * PoolDbTupleCallback::clone ( void   )  const [virtual]

Virtual copy.

Reimplemented from pool::DbObjectCallBack.

Definition at line 48 of file PoolDbTupleCallback.cpp.

00049 {
00050   PoolDbTupleCallback* cb = const_cast<PoolDbTupleCallback*>(this);
00051   cb->m_refCount++;
00052   return cb;
00053 }

void PoolDbTupleCallback::release (  )  [virtual]

Virtual delete.

Reimplemented from pool::DataCallBack.

Definition at line 56 of file PoolDbTupleCallback.cpp.

00057 {
00058   if ( --m_refCount <= 0 ) {
00059     delete this;
00060   }
00061 }

std::vector<void*>& PoolDbTupleCallback::addresses (  )  [inline]

Access to the bound addresses.

Definition at line 80 of file PoolDbTupleCallback.h.

00080 {  return m_addr;     }

const std::vector<int>& PoolDbTupleCallback::mapping (  )  [inline]

Access re-direction map.

Definition at line 82 of file PoolDbTupleCallback.h.

00082 {  return m_map;      }

std::vector<PoolDbTokenWrap*>& PoolDbTupleCallback::links (  )  [inline]

Access to pointers of the links.

Definition at line 84 of file PoolDbTupleCallback.h.

00084 {  return m_plinks; }

pool::DbBlob& PoolDbTupleCallback::stream (  )  [inline]

Access to streambuffer object, for items which must be blobified.

Definition at line 86 of file PoolDbTupleCallback.h.

00086 {  return m_stream;   }

pool::DbSelect* PoolDbTupleCallback::iterator (  )  const [inline]

Access to select statement.

Definition at line 88 of file PoolDbTupleCallback.h.

00088 {  return m_iter;     }

pool::DbSelect * PoolDbTupleCallback::select ( ISelectStatement sel  ) 

Select new tokens according to new selection criteria.

Definition at line 97 of file PoolDbTupleCallback.cpp.

00097                                                   {
00098   pool::deletePtr(m_iter);
00099   if ( m_cntH.isValid() )  {
00100     std::string criteria = (sel && (sel->type() & ISelectStatement::STRING))
00101       ? sel->criteria() : std::string("");
00102     m_iter = new pool::DbSelect( criteria );
00103     pool::DbDatabase dbH = m_cntH.containedIn();
00104     m_iter->start(dbH, m_cntH.name());
00105   }
00106   return m_iter;
00107 }

void PoolDbTupleCallback::configure ( const INTuple pTuple,
const pool::DbTypeInfo typ,
const pool::DbContainer cntH 
)

Configure N-tuple callback and store properties for re-use.

Definition at line 64 of file PoolDbTupleCallback.cpp.

00067 {
00068   pool::DbTypeInfo::Columns::const_iterator ic;
00069   const INTuple::ItemContainer& items = pTuple->items();
00070   const pool::DbTypeInfo::Columns& cols = typ->columns();
00071   size_t colsize = cols.size();
00072   m_map.resize(items.size()+1,-1);
00073   for(size_t item_no = 0; item_no < items.size(); ++item_no ) {
00074     int icc = 0;
00075     m_map[item_no] = -1;
00076     const std::string& itm_nam = items[item_no]->name();
00077     for (ic=cols.begin(); ic != cols.end(); ++ic, ++icc )  {
00078       if ( (*ic)->name() == itm_nam )  {
00079         m_map[item_no] = icc;
00080         break;
00081       }
00082     }
00083   }
00084   m_addr.resize(colsize);
00085   m_addr[colsize-1] = &m_stream;
00086   m_links.resize(m_map.size());
00087   m_plinks.resize(m_map.size());
00088   for(size_t i = 0; i < m_map.size(); ++i )  {
00089     m_plinks[i] = &m_links[i];
00090   }
00091   m_cntH = cntH;
00092   typ->addRef();
00093   setShape(typ);
00094 }

pool::DbStatus PoolDbTupleCallback::start ( CallType  action_type,
void *  pObj,
void **  context 
) [virtual]

Callback when a read sequence should be started.

Reimplemented from pool::DbObjectCallBack.

Definition at line 111 of file PoolDbTupleCallback.cpp.

00114 {
00115   return pool::Success;
00116 }

pool::DbStatus PoolDbTupleCallback::end ( CallType  action_type,
void *  context 
) [virtual]

Callback when a read sequence should be started.

Reimplemented from pool::DbObjectCallBack.

Definition at line 119 of file PoolDbTupleCallback.cpp.

00121 {
00122   return pool::Success;
00123 }

pool::DbStatus PoolDbTupleCallback::bind ( CallType  action_type,
const pool::DbColumn col_ident,
int  col_number,
void *  context,
void **  data_pointer 
) [virtual]

Callback to retrieve the absolute address of a column.

Reimplemented from pool::DbObjectCallBack.

Definition at line 127 of file PoolDbTupleCallback.cpp.

00132 {
00133   switch(action_type)  {
00134   case GET:
00135     *data_pointer = m_addr[col_number];
00136     break;
00137   case PUT:
00138     *data_pointer = m_addr[col_number];
00139     break;
00140   }
00141   return pool::Success;
00142 }


Member Data Documentation

std::vector< void* > PoolDbTupleCallback::m_addr [private]

Vector with all addresses mapped.

Definition at line 47 of file PoolDbTupleCallback.h.

Vector to store pointers link information for address columns.

Definition at line 49 of file PoolDbTupleCallback.h.

Vector to store pointers link information for address columns.

Definition at line 51 of file PoolDbTupleCallback.h.

std::vector<int> PoolDbTupleCallback::m_map [private]

Redirection map between N-tuple columns and DbTypeInfo columns.

Definition at line 53 of file PoolDbTupleCallback.h.

Pointer to hold the select statement.

Definition at line 55 of file PoolDbTupleCallback.h.

Reference to streambuffer to hold blobified data.

Definition at line 57 of file PoolDbTupleCallback.h.

Pointer to pool container handle.

Definition at line 59 of file PoolDbTupleCallback.h.

Reference counter.

Definition at line 61 of file PoolDbTupleCallback.h.


The documentation for this class was generated from the following files:

Generated at Thu Jan 8 17:52:13 2009 for Gaudi Framework, version v20r4 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004