Gaudi Framework, version v20r4

Generated: 8 Jan 2009

EventSelectorDataStream Class Reference

#include <EventSelectorDataStream.h>

Inheritance diagram for EventSelectorDataStream:

Inheritance graph
[legend]
Collaboration diagram for EventSelectorDataStream:

Collaboration graph
[legend]

List of all members.


Detailed Description

Definition of class EventSelectorDataStream.

Small class which eases the management of multiple input streams for the event selector.

History: +---------+----------------------------------------------+---------+ | Date | Comment | Who | +---------+----------------------------------------------+---------+ | 3/10/00 | Initial version | M.Frank | +---------+----------------------------------------------+---------+

Author:
Markus Frank
Version:
1.0

Definition at line 41 of file EventSelectorDataStream.h.


Public Types

typedef std::vector
< StringProperty
Properties

Public Member Functions

 EventSelectorDataStream (const std::string &nam, const std::string &def, ISvcLocator *svcloc)
 Standard Constructor.
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvUnknown)
 Query interfaces of Interface.
virtual unsigned long addRef ()
 Reference Interface instance.
virtual unsigned long release ()
 Release Interface instance.
virtual void setSelector (IEvtSelector *pSelector)
 Attach event selector object.
virtual StatusCode initialize ()
 Parse input criteria.
virtual StatusCode finalize ()
 Finalize stream and release resources.
StringPropertyproperty (const std::string &nam)
 Allow access to individual properties by name.
const StringPropertyproperty (const std::string &nam) const
 Allow access to individual properties by name (CONST).
const Propertiesproperties ()
 Access properties.
const std::string & name () const
 Retrieve stream name.
const std::string & criteria () const
 Retrieve stream criteria.
const std::string & selectorType () const
 Retrieve event selector type.
const std::string & definition () const
 Retrieve definition string.
IEvtSelectorselector () const
 Retrieve event selector object.
bool isInitialized () const
 Check initialisation status.

Protected Member Functions

virtual ~EventSelectorDataStream ()
 Standard Destructor.

Protected Attributes

long m_refCount
 Reference count.
std::string m_name
 Name.
std::string m_definition
 Definition string.
std::string m_criteria
 Criteria.
std::string m_selectorType
 Event selector type.
IEvtSelectorm_pSelector
 Pointer to valid selector.
ISvcLocatorm_pSvcLocator
 Reference to service locator.
Propertiesm_properties
 Properties vector.
bool m_initialized
 Initialization state.

Friends

MsgStreamoperator<< (MsgStream &s, const EventSelectorDataStream &obj)
 Output friend for MsgStream.
std::ostream & operator<< (std::ostream &s, const EventSelectorDataStream &obj)
 Output friend for standard I/O.

Member Typedef Documentation

Definition at line 47 of file EventSelectorDataStream.h.


Constructor & Destructor Documentation

EventSelectorDataStream::~EventSelectorDataStream (  )  [protected, virtual]

Standard Destructor.

Definition at line 51 of file EventSelectorDataStream.cpp.

00051                                                     {
00052   setSelector(0);
00053   delete m_properties;
00054 }

EventSelectorDataStream::EventSelectorDataStream ( const std::string &  nam,
const std::string &  def,
ISvcLocator svcloc 
)

Standard Constructor.

Definition at line 39 of file EventSelectorDataStream.cpp.

00040 : m_refCount(0),
00041   m_pSelector(0),
00042   m_pSvcLocator(svcloc)
00043 {
00044   m_name = nam;
00045   m_definition = def;
00046   m_initialized = false;
00047   m_properties = new Properties();
00048 }


Member Function Documentation

StatusCode EventSelectorDataStream::queryInterface ( const InterfaceID riid,
void **  ppvUnknown 
) [virtual]

Query interfaces of Interface.

Parameters:
riid ID of Interface to be retrieved
ppvUnknown Pointer to Location for interface pointer

Implements IInterface.

Definition at line 72 of file EventSelectorDataStream.cpp.

00072                                                                                                 {
00073   if ( riid == IID_IInterface )   {
00074     *ppvInterface = (IInterface*)this;
00075   }
00076   else   {
00077      return NO_INTERFACE;
00078   }
00079   addRef();
00080   return SUCCESS;
00081 }

unsigned long EventSelectorDataStream::addRef (  )  [virtual]

Reference Interface instance.

Implements IInterface.

Definition at line 57 of file EventSelectorDataStream.cpp.

00057                                                 {
00058   m_refCount++;
00059   return m_refCount;
00060 }

unsigned long EventSelectorDataStream::release (  )  [virtual]

Release Interface instance.

Implements IInterface.

Definition at line 63 of file EventSelectorDataStream.cpp.

00063                                                  {
00064   unsigned long count = --m_refCount;
00065   if( count <= 0) {
00066     delete this;
00067   }
00068   return count;
00069 }

void EventSelectorDataStream::setSelector ( IEvtSelector pSelector  )  [virtual]

Attach event selector object.

Definition at line 84 of file EventSelectorDataStream.cpp.

00084                                                                    {
00085   if ( 0 != pSelector   )  pSelector->addRef();
00086   if ( 0 != m_pSelector )  m_pSelector->release();
00087   m_pSelector = pSelector;
00088 }

StatusCode EventSelectorDataStream::initialize (  )  [virtual]

Parse input criteria.

Definition at line 111 of file EventSelectorDataStream.cpp.

00111                                                  {
00112   bool isData = true;
00113   std::string auth, dbtyp, item, crit, sel, svc, stmt;
00114   std::string cnt    = "/Event";
00115   std::string db     = "<Unknown>";
00116   Tokenizer tok(true);
00117 
00118   IDataManagerSvc* eds;
00119   StatusCode sc = m_pSvcLocator->service("EventDataSvc", eds);
00120   if( !sc.isSuccess() ) {
00121     std::cout << "ERROR: Unable to localize interface IID_IDataManagerSvc from service EventDataSvc"
00122               << std::endl;
00123     return sc;
00124   }
00125   else {
00126     cnt = eds->rootName();
00127   }
00128   eds->release();
00129   m_selectorType = m_criteria = "";
00130   m_properties->erase(m_properties->begin(), m_properties->end());
00131 
00132   tok.analyse(m_definition, " ", "", "", "=", "'", "'");
00133   for ( Tokenizer::Items::iterator i = tok.items().begin(); i != tok.items().end(); i++ )   {
00134     long hash = -1;
00135     const std::string& tag = (*i).tag();
00136     const std::string& val = (*i).value();
00137     switch( ::toupper(tag[0]) )    {
00138     case 'A':
00139       auth = val;
00140       break;
00141     case 'C':
00142       svc  = "EvtTupleSvc";
00143       isData = false;
00144     case 'E':
00145       hash = val.find('#');
00146       if ( hash > 0 )   {
00147         cnt  = val.substr(0,hash);
00148         item = val.substr(hash+1, val.length()-hash-1);
00149       }
00150       else    {
00151         cnt  = val;
00152         item = "Address";
00153       }
00154       break;
00155     case 'D':
00156       m_criteria     = "FILE " + val;
00157       break;
00158     case 'F':
00159       switch( ::toupper(tag[1]) )    {
00160       case 'I':
00161         dbtyp        = "SICB";
00162         m_criteria   = "FILE " + val;
00163         break;
00164       case 'U':
00165         stmt = val;
00166         break;
00167       default:
00168         break;
00169       }
00170       break;
00171     case 'J':
00172       m_criteria     = "JOBID " + val;
00173       dbtyp          = "SICB";
00174       break;
00175     case 'T':
00176       switch( ::toupper(tag[1]) )    {
00177       case 'Y':
00178         dbtyp = val;
00179         break;
00180       case 'A':
00181         m_criteria   = "TAPE " + val;
00182         dbtyp        = "SICB";
00183         break;
00184       default:
00185         break;
00186       }
00187       break;
00188     case 'S':
00189       switch( ::toupper(tag[1]) )    {
00190       case 'E':
00191         sel = val;
00192         break;
00193       case 'V':
00194         svc = val;
00195         break;
00196       default:
00197         break;
00198       }
00199       break;
00200     default:
00201       m_properties->push_back(StringProperty(tag,val));
00202       break;
00203     }
00204   }
00205   if ( !isData )    { // Unfortunaltely options do not come in order...
00206     m_selectorType = "EventCollectionSelector";
00207   }
00208   else if ( dbtyp == "SICB" )    {
00209     m_selectorType = "SicbEventSelector";
00210   }
00211   else if ( dbtyp.substr(0,4) == "POOL" )    {
00212     m_selectorType = "PoolDbEvtSelector";
00213   }
00214   else if ( svc.empty() ) {
00215     m_selectorType = "DbEvtSelector";
00216   }
00217   else  {
00218     m_selectorType = svc;
00219   }
00220   StatusCode status = StatusCode::SUCCESS;
00221   if ( svc.length() == 0 && dbtyp.length() != 0 )    {
00222     IPersistencySvc* ipers = 0;
00223     status = m_pSvcLocator->getService("EventPersistencySvc", IID_IPersistencySvc, *pp_cast<IInterface>(&ipers));
00224     if ( status.isSuccess() )   {
00225       IConversionSvc* icnvSvc = 0;
00226       status = ipers->getService(dbtyp, icnvSvc);
00227       if ( status.isSuccess() )   {
00228         IService* isvc = 0;
00229         status = icnvSvc->queryInterface(IID_IService, pp_cast<void>(&isvc));
00230         if ( status.isSuccess() )   {
00231           svc = isvc->name();
00232           isvc->release();
00233         }
00234       }
00235     }
00236   }
00237   m_properties->push_back( StringProperty("Function",      stmt));
00238   m_properties->push_back( StringProperty("CnvService",    svc));
00239   m_properties->push_back( StringProperty("Authentication",auth));
00240   m_properties->push_back( StringProperty("Container",     cnt));
00241   m_properties->push_back( StringProperty("Item",          item));
00242   m_properties->push_back( StringProperty("Criteria",      sel));
00243   m_properties->push_back( StringProperty("DbType",        dbtyp));
00244   m_properties->push_back( StringProperty("DB",            m_criteria));
00245   m_initialized = status.isSuccess();
00246   return status;
00247 }

StatusCode EventSelectorDataStream::finalize ( void   )  [virtual]

Finalize stream and release resources.

Definition at line 250 of file EventSelectorDataStream.cpp.

00250                                                {
00251   setSelector(0);
00252   if ( m_properties )  {
00253     m_properties->clear();
00254   }
00255   m_initialized = false;
00256   return StatusCode::SUCCESS;
00257 }

StringProperty * EventSelectorDataStream::property ( const std::string &  nam  ) 

Allow access to individual properties by name.

Definition at line 91 of file EventSelectorDataStream.cpp.

00091                                                                          {
00092   for ( Properties::iterator i = m_properties->begin(); i != m_properties->end(); i++ )   {
00093     if ( (*i).name() == nam )    {
00094       return &(*i);
00095     }
00096   }
00097   return 0;
00098 }

const StringProperty * EventSelectorDataStream::property ( const std::string &  nam  )  const

Allow access to individual properties by name (CONST).

Definition at line 101 of file EventSelectorDataStream.cpp.

00101                                                                                      {
00102   for ( Properties::const_iterator i = m_properties->begin(); i != m_properties->end(); i++ )   {
00103     if ( (*i).name() == nam )    {
00104       return &(*i);
00105     }
00106   }
00107   return 0;
00108 }

const Properties& EventSelectorDataStream::properties (  )  [inline]

Access properties.

Definition at line 92 of file EventSelectorDataStream.h.

00092                                     {
00093     return *m_properties;
00094   }

const std::string& EventSelectorDataStream::name (  )  const [inline]

Retrieve stream name.

Definition at line 96 of file EventSelectorDataStream.h.

00096                                     {
00097     return m_name;
00098   }

const std::string& EventSelectorDataStream::criteria (  )  const [inline]

Retrieve stream criteria.

Definition at line 100 of file EventSelectorDataStream.h.

00100                                         {
00101     return m_criteria;
00102   }

const std::string& EventSelectorDataStream::selectorType (  )  const [inline]

Retrieve event selector type.

Definition at line 104 of file EventSelectorDataStream.h.

00104                                             {
00105     return m_selectorType;
00106   }

const std::string& EventSelectorDataStream::definition (  )  const [inline]

Retrieve definition string.

Definition at line 108 of file EventSelectorDataStream.h.

00108                                         {
00109     return m_definition;
00110   }

IEvtSelector* EventSelectorDataStream::selector (  )  const [inline]

Retrieve event selector object.

Definition at line 112 of file EventSelectorDataStream.h.

00112                                    {
00113     return m_pSelector;
00114   }

bool EventSelectorDataStream::isInitialized (  )  const [inline]

Check initialisation status.

Definition at line 116 of file EventSelectorDataStream.h.

00116                                 {
00117     return m_initialized;
00118   }


Friends And Related Function Documentation

MsgStream& operator<< ( MsgStream s,
const EventSelectorDataStream obj 
) [friend]

Output friend for MsgStream.

Definition at line 27 of file EventSelectorDataStream.cpp.

00027                                                                            {
00028   s << "Stream:"   << obj.name() << " Def:" << obj.definition();
00029   return s;
00030 }

std::ostream& operator<< ( std::ostream &  s,
const EventSelectorDataStream obj 
) [friend]

Output friend for standard I/O.

Definition at line 33 of file EventSelectorDataStream.cpp.

00033                                                                              {
00034   s << "Stream:"   << obj.name() << " Def:" << obj.definition();
00035   return s;
00036 }


Member Data Documentation

Reference count.

Definition at line 50 of file EventSelectorDataStream.h.

std::string EventSelectorDataStream::m_name [protected]

Name.

Definition at line 52 of file EventSelectorDataStream.h.

std::string EventSelectorDataStream::m_definition [protected]

Definition string.

Definition at line 54 of file EventSelectorDataStream.h.

std::string EventSelectorDataStream::m_criteria [protected]

Criteria.

Definition at line 56 of file EventSelectorDataStream.h.

std::string EventSelectorDataStream::m_selectorType [protected]

Event selector type.

Definition at line 58 of file EventSelectorDataStream.h.

Pointer to valid selector.

Definition at line 60 of file EventSelectorDataStream.h.

Reference to service locator.

Definition at line 62 of file EventSelectorDataStream.h.

Properties vector.

Definition at line 64 of file EventSelectorDataStream.h.

Initialization state.

Definition at line 66 of file EventSelectorDataStream.h.


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

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