|
Gaudi Framework, version v21r6 |
| Home | Generated: 11 Nov 2009 |
#include <EventSelectorDataStream.h>


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 | +---------+----------------------------------------------+------------+ | 4/09/09 | Added m_dbName and dbName() | R. Lambert | +---------+----------------------------------------------+------------+
Definition at line 45 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 void | setSelector (IEvtSelector *pSelector) |
| Attach event selector object. | |
| virtual StatusCode | initialize () |
| Parse input criteria. | |
| virtual StatusCode | finalize () |
| Finalize stream and release resources. | |
| StringProperty * | property (const std::string &nam) |
| Allow access to individual properties by name. | |
| const StringProperty * | property (const std::string &nam) const |
| Allow access to individual properties by name (CONST). | |
| const Properties & | properties () |
| Access properties. | |
| const std::string & | name () const |
| Retrieve stream name. | |
| const std::string & | criteria () const |
| Retrieve stream criteria. | |
| const std::string & | dbName () const |
| Retrieve stream dbName. | |
| const std::string & | selectorType () const |
| Retrieve event selector type. | |
| const std::string & | definition () const |
| Retrieve definition string. | |
| IEvtSelector * | selector () const |
| Retrieve event selector object. | |
| bool | isInitialized () const |
| Check initialization status. | |
Protected Member Functions | |
| virtual | ~EventSelectorDataStream () |
| Standard Destructor. | |
Protected Attributes | |
| std::string | m_name |
| Name. | |
| std::string | m_definition |
| Definition string. | |
| std::string | m_criteria |
| Criteria. | |
| std::string | m_dbName |
| String with name of the db as parsed. | |
| std::string | m_selectorType |
| Event selector type. | |
| IEvtSelector * | m_pSelector |
| Pointer to valid selector. | |
| ISvcLocator * | m_pSvcLocator |
| Reference to service locator. | |
| Properties * | m_properties |
| Properties vector. | |
| bool | m_initialized |
| Initialization state. | |
Friends | |
| MsgStream & | operator<< (MsgStream &s, const EventSelectorDataStream &obj) |
| Output friend for MsgStream. | |
| std::ostream & | operator<< (std::ostream &s, const EventSelectorDataStream &obj) |
| Output friend for standard I/O. | |
Definition at line 51 of file EventSelectorDataStream.h.
| EventSelectorDataStream::~EventSelectorDataStream | ( | ) | [protected, virtual] |
Standard Destructor.
Definition at line 50 of file EventSelectorDataStream.cpp.
00050 { 00051 setSelector(0); 00052 delete m_properties; 00053 }
| EventSelectorDataStream::EventSelectorDataStream | ( | const std::string & | nam, | |
| const std::string & | def, | |||
| ISvcLocator * | svcloc | |||
| ) |
Standard Constructor.
Definition at line 39 of file EventSelectorDataStream.cpp.
00040 : m_pSelector(0), 00041 m_pSvcLocator(svcloc) 00042 { 00043 m_name = nam; 00044 m_definition = def; 00045 m_initialized = false; 00046 m_properties = new Properties(); 00047 }
| void EventSelectorDataStream::setSelector | ( | IEvtSelector * | pSelector | ) | [virtual] |
Attach event selector object.
Definition at line 56 of file EventSelectorDataStream.cpp.
00056 { 00057 if ( 0 != pSelector ) pSelector->addRef(); 00058 if ( 0 != m_pSelector ) m_pSelector->release(); 00059 m_pSelector = pSelector; 00060 }
| StatusCode EventSelectorDataStream::initialize | ( | ) | [virtual] |
Parse input criteria.
Definition at line 83 of file EventSelectorDataStream.cpp.
00083 { 00084 bool isData = true; 00085 std::string auth, dbtyp, item, crit, sel, svc, stmt; 00086 std::string cnt = "/Event"; 00087 std::string db = "<Unknown>"; 00088 Tokenizer tok(true); 00089 00090 SmartIF<IDataManagerSvc> eds(m_pSvcLocator->service("EventDataSvc")); 00091 if( !eds.isValid() ) { 00092 std::cout << "ERROR: Unable to localize interface IDataManagerSvc from service EventDataSvc" 00093 << std::endl; 00094 return StatusCode::FAILURE; 00095 } 00096 else { 00097 cnt = eds->rootName(); 00098 } 00099 m_selectorType = m_criteria = m_dbName= ""; 00100 m_properties->erase(m_properties->begin(), m_properties->end()); 00101 00102 tok.analyse(m_definition, " ", "", "", "=", "'", "'"); 00103 for ( Tokenizer::Items::iterator i = tok.items().begin(); i != tok.items().end(); i++ ) { 00104 long hash = -1; 00105 const std::string& tag = (*i).tag(); 00106 const std::string& val = (*i).value(); 00107 switch( ::toupper(tag[0]) ) { 00108 case 'A': 00109 auth = val; 00110 break; 00111 case 'C': 00112 svc = "EvtTupleSvc"; 00113 isData = false; 00114 case 'E': 00115 hash = val.find('#'); 00116 if ( hash > 0 ) { 00117 cnt = val.substr(0,hash); 00118 item = val.substr(hash+1, val.length()-hash-1); 00119 } 00120 else { 00121 cnt = val; 00122 item = "Address"; 00123 } 00124 break; 00125 case 'D': 00126 m_criteria = "FILE " + val; 00127 m_dbName=val; 00128 break; 00129 case 'F': 00130 switch( ::toupper(tag[1]) ) { 00131 case 'I': 00132 dbtyp = "SICB"; 00133 m_criteria = "FILE " + val; 00134 m_dbName=val; 00135 break; 00136 case 'U': 00137 stmt = val; 00138 break; 00139 default: 00140 break; 00141 } 00142 break; 00143 case 'J': 00144 m_criteria = "JOBID " + val; 00145 m_dbName=val; 00146 dbtyp = "SICB"; 00147 break; 00148 case 'T': 00149 switch( ::toupper(tag[1]) ) { 00150 case 'Y': 00151 dbtyp = val; 00152 break; 00153 case 'A': 00154 m_criteria = "TAPE " + val; 00155 m_dbName=val; 00156 dbtyp = "SICB"; 00157 break; 00158 default: 00159 break; 00160 } 00161 break; 00162 case 'S': 00163 switch( ::toupper(tag[1]) ) { 00164 case 'E': 00165 sel = val; 00166 break; 00167 case 'V': 00168 svc = val; 00169 break; 00170 default: 00171 break; 00172 } 00173 break; 00174 default: 00175 m_properties->push_back(StringProperty(tag,val)); 00176 break; 00177 } 00178 } 00179 if ( !isData ) { // Unfortunately options do not come in order... 00180 m_selectorType = "EventCollectionSelector"; 00181 } 00182 else if ( dbtyp == "SICB" ) { 00183 m_selectorType = "SicbEventSelector"; 00184 } 00185 else if ( dbtyp.substr(0,4) == "POOL" ) { 00186 m_selectorType = "PoolDbEvtSelector"; 00187 } 00188 else if ( svc.empty() ) { 00189 m_selectorType = "DbEvtSelector"; 00190 } 00191 else { 00192 m_selectorType = svc; 00193 } 00194 StatusCode status = StatusCode::SUCCESS; 00195 if ( svc.length() == 0 && dbtyp.length() != 0 ) { 00196 SmartIF<IPersistencySvc> ipers(m_pSvcLocator->service("EventPersistencySvc")); 00197 if ( ipers.isValid() ) { 00198 IConversionSvc* icnvSvc = 0; 00199 status = ipers->getService(dbtyp, icnvSvc); 00200 if ( status.isSuccess() ) { 00201 IService* isvc = 0; 00202 status = icnvSvc->queryInterface(IService::interfaceID(), pp_cast<void>(&isvc)); 00203 if ( status.isSuccess() ) { 00204 svc = isvc->name(); 00205 isvc->release(); 00206 } 00207 } 00208 } 00209 } 00210 m_properties->push_back( StringProperty("Function", stmt)); 00211 m_properties->push_back( StringProperty("CnvService", svc)); 00212 m_properties->push_back( StringProperty("Authentication",auth)); 00213 m_properties->push_back( StringProperty("Container", cnt)); 00214 m_properties->push_back( StringProperty("Item", item)); 00215 m_properties->push_back( StringProperty("Criteria", sel)); 00216 m_properties->push_back( StringProperty("DbType", dbtyp)); 00217 m_properties->push_back( StringProperty("DB", m_criteria)); 00218 m_initialized = status.isSuccess(); 00219 return status; 00220 }
| StatusCode EventSelectorDataStream::finalize | ( | void | ) | [virtual] |
Finalize stream and release resources.
Definition at line 223 of file EventSelectorDataStream.cpp.
00223 { 00224 setSelector(0); 00225 if ( m_properties ) { 00226 m_properties->clear(); 00227 } 00228 m_initialized = false; 00229 return StatusCode::SUCCESS; 00230 }
| StringProperty * EventSelectorDataStream::property | ( | const std::string & | nam | ) |
Allow access to individual properties by name.
Definition at line 63 of file EventSelectorDataStream.cpp.
00063 { 00064 for ( Properties::iterator i = m_properties->begin(); i != m_properties->end(); i++ ) { 00065 if ( (*i).name() == nam ) { 00066 return &(*i); 00067 } 00068 } 00069 return 0; 00070 }
| const StringProperty * EventSelectorDataStream::property | ( | const std::string & | nam | ) | const |
Allow access to individual properties by name (CONST).
Definition at line 73 of file EventSelectorDataStream.cpp.
00073 { 00074 for ( Properties::const_iterator i = m_properties->begin(); i != m_properties->end(); i++ ) { 00075 if ( (*i).name() == nam ) { 00076 return &(*i); 00077 } 00078 } 00079 return 0; 00080 }
| const Properties& EventSelectorDataStream::properties | ( | ) | [inline] |
Access properties.
Definition at line 87 of file EventSelectorDataStream.h.
00087 { 00088 return *m_properties; 00089 }
| const std::string& EventSelectorDataStream::name | ( | ) | const [inline] |
Retrieve stream name.
Definition at line 91 of file EventSelectorDataStream.h.
00091 { 00092 return m_name; 00093 }
| const std::string& EventSelectorDataStream::criteria | ( | ) | const [inline] |
Retrieve stream criteria.
Definition at line 95 of file EventSelectorDataStream.h.
00095 { 00096 return m_criteria; 00097 }
| const std::string& EventSelectorDataStream::dbName | ( | ) | const [inline] |
Retrieve stream dbName.
Definition at line 99 of file EventSelectorDataStream.h.
00099 { 00100 return m_dbName; 00101 }
| const std::string& EventSelectorDataStream::selectorType | ( | ) | const [inline] |
Retrieve event selector type.
Definition at line 103 of file EventSelectorDataStream.h.
00103 { 00104 return m_selectorType; 00105 }
| const std::string& EventSelectorDataStream::definition | ( | ) | const [inline] |
Retrieve definition string.
Definition at line 107 of file EventSelectorDataStream.h.
00107 { 00108 return m_definition; 00109 }
| IEvtSelector* EventSelectorDataStream::selector | ( | ) | const [inline] |
Retrieve event selector object.
Definition at line 111 of file EventSelectorDataStream.h.
00111 { 00112 return m_pSelector; 00113 }
| bool EventSelectorDataStream::isInitialized | ( | ) | const [inline] |
Check initialization status.
Definition at line 115 of file EventSelectorDataStream.h.
00115 { 00116 return m_initialized; 00117 }
| 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 }
std::string EventSelectorDataStream::m_name [protected] |
std::string EventSelectorDataStream::m_definition [protected] |
std::string EventSelectorDataStream::m_criteria [protected] |
std::string EventSelectorDataStream::m_dbName [protected] |
std::string EventSelectorDataStream::m_selectorType [protected] |
IEvtSelector* EventSelectorDataStream::m_pSelector [protected] |
ISvcLocator* EventSelectorDataStream::m_pSvcLocator [protected] |
Properties* EventSelectorDataStream::m_properties [protected] |
bool EventSelectorDataStream::m_initialized [protected] |