|
Gaudi Framework, version v21r4 |
| Home | Generated: 7 Sep 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 | +---------+----------------------------------------------+---------+
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 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 & | 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_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 47 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 = ""; 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 break; 00128 case 'F': 00129 switch( ::toupper(tag[1]) ) { 00130 case 'I': 00131 dbtyp = "SICB"; 00132 m_criteria = "FILE " + val; 00133 break; 00134 case 'U': 00135 stmt = val; 00136 break; 00137 default: 00138 break; 00139 } 00140 break; 00141 case 'J': 00142 m_criteria = "JOBID " + val; 00143 dbtyp = "SICB"; 00144 break; 00145 case 'T': 00146 switch( ::toupper(tag[1]) ) { 00147 case 'Y': 00148 dbtyp = val; 00149 break; 00150 case 'A': 00151 m_criteria = "TAPE " + val; 00152 dbtyp = "SICB"; 00153 break; 00154 default: 00155 break; 00156 } 00157 break; 00158 case 'S': 00159 switch( ::toupper(tag[1]) ) { 00160 case 'E': 00161 sel = val; 00162 break; 00163 case 'V': 00164 svc = val; 00165 break; 00166 default: 00167 break; 00168 } 00169 break; 00170 default: 00171 m_properties->push_back(StringProperty(tag,val)); 00172 break; 00173 } 00174 } 00175 if ( !isData ) { // Unfortunately options do not come in order... 00176 m_selectorType = "EventCollectionSelector"; 00177 } 00178 else if ( dbtyp == "SICB" ) { 00179 m_selectorType = "SicbEventSelector"; 00180 } 00181 else if ( dbtyp.substr(0,4) == "POOL" ) { 00182 m_selectorType = "PoolDbEvtSelector"; 00183 } 00184 else if ( svc.empty() ) { 00185 m_selectorType = "DbEvtSelector"; 00186 } 00187 else { 00188 m_selectorType = svc; 00189 } 00190 StatusCode status = StatusCode::SUCCESS; 00191 if ( svc.length() == 0 && dbtyp.length() != 0 ) { 00192 SmartIF<IPersistencySvc> ipers(m_pSvcLocator->service("EventPersistencySvc")); 00193 if ( ipers.isValid() ) { 00194 IConversionSvc* icnvSvc = 0; 00195 status = ipers->getService(dbtyp, icnvSvc); 00196 if ( status.isSuccess() ) { 00197 IService* isvc = 0; 00198 status = icnvSvc->queryInterface(IService::interfaceID(), pp_cast<void>(&isvc)); 00199 if ( status.isSuccess() ) { 00200 svc = isvc->name(); 00201 isvc->release(); 00202 } 00203 } 00204 } 00205 } 00206 m_properties->push_back( StringProperty("Function", stmt)); 00207 m_properties->push_back( StringProperty("CnvService", svc)); 00208 m_properties->push_back( StringProperty("Authentication",auth)); 00209 m_properties->push_back( StringProperty("Container", cnt)); 00210 m_properties->push_back( StringProperty("Item", item)); 00211 m_properties->push_back( StringProperty("Criteria", sel)); 00212 m_properties->push_back( StringProperty("DbType", dbtyp)); 00213 m_properties->push_back( StringProperty("DB", m_criteria)); 00214 m_initialized = status.isSuccess(); 00215 return status; 00216 }
| StatusCode EventSelectorDataStream::finalize | ( | void | ) | [virtual] |
Finalize stream and release resources.
Definition at line 219 of file EventSelectorDataStream.cpp.
00219 { 00220 setSelector(0); 00221 if ( m_properties ) { 00222 m_properties->clear(); 00223 } 00224 m_initialized = false; 00225 return StatusCode::SUCCESS; 00226 }
| 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 81 of file EventSelectorDataStream.h.
00081 { 00082 return *m_properties; 00083 }
| const std::string& EventSelectorDataStream::name | ( | ) | const [inline] |
Retrieve stream name.
Definition at line 85 of file EventSelectorDataStream.h.
00085 { 00086 return m_name; 00087 }
| const std::string& EventSelectorDataStream::criteria | ( | ) | const [inline] |
Retrieve stream criteria.
Definition at line 89 of file EventSelectorDataStream.h.
00089 { 00090 return m_criteria; 00091 }
| const std::string& EventSelectorDataStream::selectorType | ( | ) | const [inline] |
Retrieve event selector type.
Definition at line 93 of file EventSelectorDataStream.h.
00093 { 00094 return m_selectorType; 00095 }
| const std::string& EventSelectorDataStream::definition | ( | ) | const [inline] |
Retrieve definition string.
Definition at line 97 of file EventSelectorDataStream.h.
00097 { 00098 return m_definition; 00099 }
| IEvtSelector* EventSelectorDataStream::selector | ( | ) | const [inline] |
Retrieve event selector object.
Definition at line 101 of file EventSelectorDataStream.h.
00101 { 00102 return m_pSelector; 00103 }
| bool EventSelectorDataStream::isInitialized | ( | ) | const [inline] |
Check initialization status.
Definition at line 105 of file EventSelectorDataStream.h.
00105 { 00106 return m_initialized; 00107 }
| 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_selectorType [protected] |
IEvtSelector* EventSelectorDataStream::m_pSelector [protected] |
ISvcLocator* EventSelectorDataStream::m_pSvcLocator [protected] |
Properties* EventSelectorDataStream::m_properties [protected] |
bool EventSelectorDataStream::m_initialized [protected] |