| The Gaudi Framework v32r1 (f65d50dc)

EventSelector.cpp
Go to the documentation of this file.
1 // Include files
2 #include "GaudiKernel/EventSelectorDataStream.h"
3 #include "GaudiKernel/IAddressCreator.h"
4 #include "GaudiKernel/IDataStreamTool.h"
5 #include "GaudiKernel/IIncidentSvc.h"
6 #include "GaudiKernel/ISvcLocator.h"
7 #include "GaudiKernel/ISvcManager.h"
8 #include "GaudiKernel/IToolSvc.h"
9 #include "GaudiKernel/Incident.h"
10 #include "GaudiKernel/MsgStream.h"
11 #include "GaudiKernel/PropertyHolder.h"
12 #include "GaudiKernel/SmartIF.h"
13
14 #include "EventIterator.h"
15 #include "EventSelector.h"
16 #include <climits>
17
18 DECLARE_COMPONENT( EventSelector )
19
20 StatusCode EventSelector::resetCriteria( const std::string& /* criteria */, Context& /* context */ ) const {
21 return StatusCode::FAILURE;
22 }
23
24 // Progress report
25 void EventSelector::printEvtInfo( const EvtSelectorContext* iter ) const {
26 if ( iter ) {
27 long count = iter->numEvent();
28 // Print an message every m_evtPrintFrequency events
29 if ( 0 == iter->context() ) {
30 info() << "End of event input reached." << endmsg;
31 } else if ( iter->numStreamEvent() == -1 ) {
32 // Intial value for this stream
33 } else if ( m_evtPrintFrequency != -1 && ( count % m_evtPrintFrequency == 0 ) ) {
34 always() << "Reading Event record " << count + 1 << ". Record number within stream " << iter->ID() + 1 << ": "
35 << iter->numStreamEvent() + 1 << endmsg;
36 }
37 } else {
38 info() << "End of event input reached." << endmsg;
39 }
40 }
41
42 // IEvtSelector::first()
43 StatusCode EventSelector::firstOfNextStream( bool shutDown, EvtSelectorContext& iter ) const {
44 StatusCode status = StatusCode::SUCCESS;
45 IDataStreamTool::size_type iter_id = ( m_reconfigure ) ? 0 : iter.ID() + 1;
46 if ( m_reconfigure ) const_cast<EventSelector*>( this )->m_reconfigure = false;
47 if ( shutDown ) {
48 if ( iter.ID() >= 0 && iter.ID() < (long)m_streamtool->size() ) {
49 const EventSelectorDataStream* s = m_streamtool->getStream( iter.ID() );
50 if ( s->isInitialized() ) {
51 EventSelector* thisPtr = const_cast<EventSelector*>( this );
52 if ( s->selector() && iter.context() ) {
53 Context* ctxt = iter.context();
54 s->selector()->releaseContext( ctxt ).ignore();
55 iter.set( 0, 0 );
56 }
57 status = thisPtr->m_streamtool->finalizeStream( const_cast<EventSelectorDataStream*>( s ) );
58 iter.set( 0, 0 );
59 }
60 }
61 }
62
63 const EventSelectorDataStream* s;
64 status = m_streamtool->getNextStream( s, iter_id );
65
66 if ( status.isSuccess() ) {
67
68 if ( s ) {
69 if ( !s->isInitialized() ) {
70 EventSelector* thisPtr = const_cast<EventSelector*>( this );
71 status = thisPtr->m_streamtool->initializeStream( const_cast<EventSelectorDataStream*>( s ) );
72 }
73
74 if ( status.isSuccess() ) {
75 const IEvtSelector* sel = s->selector();
76 if ( sel ) {
77 Context* ctxt = nullptr;
78 status = sel->createContext( ctxt );
79 if ( status.isSuccess() ) {
80 status = sel->resetCriteria( s->criteria(), *ctxt );
81 if ( status.isSuccess() ) {
82 iter.set( this, iter_id, ctxt, 0 );
83 info() << *s << endmsg;
84 m_incidentSvc->fireIncident( Incident( s->dbName(), IncidentType::BeginInputFile ) );
85 return StatusCode::SUCCESS;
86 }
87 }
88 }
89 }
90 m_incidentSvc->fireIncident( Incident( s->dbName(), IncidentType::FailInputFile ) );
91 }
92 }
93
94 iter.set( this, -1, 0, 0 );
95 status.setChecked();
96 // m_incidentSvc->fireIncident(Incident(s->dbName(),IncidentType::FailInputFile));
97 return StatusCode::FAILURE;
98 }
99
100 // IEvtSelector::first()
101 StatusCode EventSelector::lastOfPreviousStream( bool shutDown, EvtSelectorContext& iter ) const {
102 StatusCode status = StatusCode::SUCCESS;
103 if ( shutDown ) {
104 if ( iter.ID() >= 0 && iter.ID() < (long)m_streamtool->size() ) {
105 const EventSelectorDataStream* s = m_streamtool->getStream( iter.ID() );
106 if ( s->isInitialized() ) {
107 EventSelector* thisPtr = const_cast<EventSelector*>( this );
108 if ( s->selector() && iter.context() ) {
109 Context* ctxt = iter.context();
110 s->selector()->releaseContext( ctxt );
111 iter.set( 0, 0 );
112 }
113 status = thisPtr->m_streamtool->finalizeStream( const_cast<EventSelectorDataStream*>( s ) );
114 iter.set( 0, 0 );
115 }
116 }
117 }
118
119 IDataStreamTool::size_type iter_id = iter.ID() - 1;
120 const EventSelectorDataStream* s = nullptr;
121 status = m_streamtool->getPreviousStream( s, iter_id );
122
123 if ( status.isSuccess() ) {
124
125 if ( !s->isInitialized() ) {
126 EventSelector* thisPtr = const_cast<EventSelector*>( this );
127 status = thisPtr->m_streamtool->initializeStream( const_cast<EventSelectorDataStream*>( s ) );
128 }
129 if ( status.isSuccess() ) {
130 const IEvtSelector* sel = s->selector();
131 if ( sel ) {
132 Context* ctxt = nullptr;
133 status = sel->createContext( ctxt );
134 if ( status.isSuccess() ) {
135 status = sel->resetCriteria( s->criteria(), *ctxt );
136 if ( status.isSuccess() ) {
137 iter.set( this, iter_id, ctxt, 0 );
138 info() << *s << endmsg;
139 return StatusCode::SUCCESS;
140 }
141 }
142 }
143 }
144 }
145
146 iter.set( this, -1, 0, 0 );
147 return StatusCode::FAILURE;
148 }
149
151 StatusCode EventSelector::createContext( Context*& refpCtxt ) const {
152 // Max event is zero. Return begin = end
153 refpCtxt = nullptr;
154 if ( m_firstEvent < 0 ) {
155 error() << "First Event = " << m_firstEvent << " not valid" << endmsg;
156 error() << "It should be > 0 " << endmsg;
157 return StatusCode::FAILURE; // if failure => iterators = end();
158 }
159 EvtSelectorContext* ctxt = new EvtSelectorContext( this );
160 ctxt->set( 0, -1, 0, 0 );
161 firstOfNextStream( true, *ctxt ).ignore();
162 refpCtxt = ctxt;
163 long nskip = m_firstEvent;
164 while ( --nskip > 0 ) {
165 StatusCode sc = next( *refpCtxt );
166 if ( sc.isFailure() ) {
167 error() << " createContext() failed to start with event number " << m_firstEvent << endmsg;
168 releaseContext( refpCtxt );
169 refpCtxt = nullptr;
170 return StatusCode::FAILURE;
171 }
172 }
173 return StatusCode::SUCCESS;
174 }
175
177 StatusCode EventSelector::next( Context& refCtxt ) const { return next( refCtxt, 1 ); }
178
180 StatusCode EventSelector::next( Context& refCtxt, int /* jump */ ) const {
181 EvtSelectorContext* pIt = dynamic_cast<EvtSelectorContext*>( &refCtxt );
182 if ( pIt ) {
183 if ( pIt->ID() != -1 ) {
184 const EventSelectorDataStream* s = m_streamtool->getStream( pIt->ID() );
185 Context* it = pIt->context();
186 IEvtSelector* sel = s->selector();
187 if ( it && sel ) { // First exploit the current stream
188 StatusCode sc = sel->next( *it ); // This stream is empty: advance to the next stream
189 if ( !sc.isSuccess() ) {
190 m_incidentSvc->fireIncident( Incident( s->dbName(), IncidentType::EndInputFile ) );
191 sc = firstOfNextStream( true, *pIt );
192 if ( sc.isSuccess() ) sc = next( *pIt );
193 } else {
194 pIt->increaseCounters( false );
195 pIt->set( it, 0 );
196 printEvtInfo( pIt );
197 }
198 return sc;
199 } else if ( m_reconfigure ) {
200 StatusCode sc = firstOfNextStream( false, *pIt );
201 printEvtInfo( pIt );
202 return sc;
203 }
204 } else if ( m_reconfigure ) {
205 StatusCode sc = firstOfNextStream( false, *pIt );
206 printEvtInfo( pIt );
207 return sc;
208 }
209 pIt->increaseCounters( false );
210 }
211 printEvtInfo( pIt );
212 return StatusCode::FAILURE;
213 }
214
216 StatusCode EventSelector::previous( Context& refCtxt ) const { return previous( refCtxt, 1 ); }
217
219 StatusCode EventSelector::previous( Context& refCtxt, int jump ) const {
220 EvtSelectorContext* pIt = dynamic_cast<EvtSelectorContext*>( &refCtxt );
221 if ( pIt && jump > 0 ) {
222 StatusCode sc = StatusCode::SUCCESS;
223 for ( int i = 0; i < jump && sc.isSuccess(); ++i ) {
224 const EventSelectorDataStream* s = m_streamtool->getStream( pIt->ID() );
225 Context* it = pIt->context();
226 IEvtSelector* sel = s->selector();
227 if ( it && sel ) { // First exploit the current stream
228 // This stream is empty: advance to the next stream
229 sc = sel->previous( *it ); // This stream is empty: advance to the next stream
230 if ( !sc.isSuccess() ) {
231 sc = lastOfPreviousStream( true, *pIt );
232 } else {
233 pIt->increaseCounters( false );
234 pIt->set( it, 0 );
235 }
236 printEvtInfo( pIt );
237 if ( !sc.isSuccess() ) { return sc; }
238 }
239 pIt->increaseCounters( false );
240 }
241 return sc;
242 }
243 printEvtInfo( pIt );
244 return StatusCode::FAILURE;
245 }
246
248 StatusCode EventSelector::last( Context& refCtxt ) const {
249 EvtSelectorContext* pIt = dynamic_cast<EvtSelectorContext*>( &refCtxt );
250 if ( pIt ) {}
251 return StatusCode::FAILURE;
252 }
253
255 StatusCode EventSelector::rewind( Context& refCtxt ) const {
256 EvtSelectorContext* ctxt = dynamic_cast<EvtSelectorContext*>( &refCtxt );
257 if ( ctxt ) {
258 ctxt->set( 0, -1, 0, 0 );
259 firstOfNextStream( true, *ctxt );
260 long nskip = m_firstEvent;
261 while ( --nskip > 0 ) {
262 StatusCode sc = next( *ctxt );
263 if ( sc.isFailure() ) {
264 error() << "rewind() failed to start with event number " << m_firstEvent << endmsg;
265 return StatusCode::FAILURE;
266 }
267 }
268 return StatusCode::SUCCESS;
269 }
270 return StatusCode::FAILURE;
271 }
272
274 StatusCode EventSelector::createAddress( const Context& refCtxt, IOpaqueAddress*& refpAddr ) const {
275 const EvtSelectorContext* cpIt = dynamic_cast<const EvtSelectorContext*>( &refCtxt );
276 EvtSelectorContext* pIt = const_cast<EvtSelectorContext*>( cpIt );
277 refpAddr = nullptr;
278 if ( pIt ) {
279 const EventSelectorDataStream* s = m_streamtool->getStream( pIt->ID() );
280 Context* it = pIt->context();
281 IEvtSelector* sel = s->selector();
282 if ( it && sel ) {
283 IOpaqueAddress* pAddr = nullptr;
284 StatusCode sc = sel->createAddress( *it, pAddr );
285 if ( sc.isSuccess() ) refpAddr = pAddr;
286 pIt->set( it, pAddr );
287 return sc;
288 }
289 }
290 return StatusCode::FAILURE;
291 }
292
293 // Release existing event iteration context
294 StatusCode EventSelector::releaseContext( Context*& refCtxt ) const {
295 const EvtSelectorContext* cpIt = dynamic_cast<const EvtSelectorContext*>( refCtxt );
296 std::unique_ptr<EvtSelectorContext> pIt{const_cast<EvtSelectorContext*>( cpIt )};
297 if ( pIt && pIt->ID() >= 0 && pIt->ID() < (long)m_streamtool->size() ) {
298 const EventSelectorDataStream* s = m_streamtool->getStream( pIt->ID() );
299 Context* it = pIt->context();
300 IEvtSelector* sel = s->selector();
301 if ( it && sel ) {
302 StatusCode sc = sel->releaseContext( it );
303 if ( sc.isSuccess() ) {
304 refCtxt = nullptr;
305 return sc;
306 }
307 }
308 }
309 return StatusCode::SUCCESS;
310 }
311
313 StatusCode EventSelector::initialize() {
314 // Initialize base class
315 StatusCode status = Service::initialize();
316 if ( !status.isSuccess() ) {
317 error() << "Error initializing base class Service!" << endmsg;
318 return status;
319 }
320 // Get the references to the services that are needed by the ApplicationMgr itself
321 m_incidentSvc = serviceLocator()->service( "IncidentSvc" );
322 if ( !m_incidentSvc ) {
323 fatal() << "Error retrieving IncidentSvc." << endmsg;
324 return StatusCode::FAILURE;
325 }
326 if ( m_evtMax != INT_MAX ) {
327 error() << "EvtMax is an obsolete property of the event selector." << endmsg;
328 error() << "Please set \"ApplicationMgr.EvtMax = " << m_evtMax << ";\" to process the requested number of events."
329 << endmsg;
330 return StatusCode::FAILURE;
331 }
332
333 m_toolSvc = serviceLocator()->service( "ToolSvc" );
334 if ( !m_toolSvc ) {
335 error() << " Could not locate the Tool Service! " << endmsg;
336 return StatusCode::FAILURE;
337 }
338 // make sure we finalize _prior_ to ToolSvc... we are about to get a
339 // a pointer to a tool which gets finalized and released by the ToolSvc
340 // during ToolSvc::finalize, and we don't want dangling pointers...
341 SmartIF<ISvcManager> mgr( serviceLocator() );
342 auto prio = mgr->getPriority( "ToolSvc" );
343 mgr->setPriority( name(), prio + 1 ).ignore();
344
345 status = m_toolSvc->retrieveTool( m_streamManager, m_streamtool, this );
346
347 if ( status.isFailure() ) {
348 error() << "Error initializing " << m_streamManager << endmsg;
349 return status;
350 }
351
352 status = m_streamtool->clear();
353 if ( status.isFailure() ) {
354 // Message already printed by the tool
355 return status;
356 }
357
358 status = m_streamtool->addStreams( m_streamSpecs );
359
360 m_streamSpecsLast = m_streamSpecs;
361
362 m_streamID = 0;
363
364 return status;
365 }
366
367 // Re-initialize
368 StatusCode EventSelector::reinitialize() {
369 if ( FSMState() != Gaudi::StateMachine::INITIALIZED ) {
370 error() << "Cannot reinitialize: service not in state initialized" << endmsg;
371 return StatusCode::FAILURE;
372 }
373
374 if ( m_streamSpecsLast != m_streamSpecs ) {
375 StatusCode status = m_streamtool->clear();
376 if ( status.isFailure() ) return status;
377 m_streamSpecsLast = m_streamSpecs;
378 m_reconfigure = true;
379 return m_streamtool->addStreams( m_streamSpecs );
380 }
381
382 return StatusCode::SUCCESS;
383 }
384
385 //
386 StatusCode EventSelector::finalize() {
387
388 if ( msgLevel( MSG::DEBUG ) ) { debug() << "finalize()" << endmsg; }
389
390 m_incidentSvc = nullptr;
391
392 if ( m_streamtool ) {
393 if ( m_toolSvc ) {
394 m_toolSvc->releaseTool( m_streamtool ).ignore();
395 } else {
396 // It should not be possible to get here
397 m_streamtool->release();
398 }
399 m_streamtool = nullptr;
400 }
401 m_toolSvc.reset();
402
403 return Service::finalize();
404 }
EventSelector::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the indicent service.
Definition: EventSelector.h:63
PropertyHolder.h
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:60
Gaudi::StateMachine::INITIALIZED
Definition: StateMachine.h:15
SmartIF< ISvcManager >
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:277
IDataStreamTool::finalizeStream
virtual StatusCode finalizeStream(EventSelectorDataStream *)=0
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:164
Service::FSMState
Gaudi::StateMachine::State FSMState() const override
Definition: Service.h:52
MsgStream.h
EvtSelectorContext::context
IEvtSelector::Context * context() const
Access "real" iterator.
Definition: EventIterator.h:70
IEvtSelector
The Event Selector Interface.
Definition: IEvtSelector.h:18
EventSelector::releaseContext
StatusCode releaseContext(Context *&refCtxt) const override
Release existing event iteration context.
Definition: EventSelector.cpp:294
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:67
MSG::DEBUG
Definition: IMessageSvc.h:15
IOTest.sel
sel
Definition: IOTest.py:93
EventSelector::m_streamID
long int m_streamID
Definition: EventSelector.h:59
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
std
STL namespace.
CommonMessagingBase::always
MsgStream & always() const
shortcut for the method msgStream(MSG::ALWAYS)
Definition: CommonMessaging.h:89
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:104
IDataStreamTool.h
IToolSvc.h
ISvcManager.h
IToolSvc::retrieveTool
StatusCode retrieveTool(const std::string &type, T *&tool, const IInterface *parent=nullptr, bool createIf=true)
Retrieve specified tool sub-type with tool dependent part of the name automatically assigned.
Definition: IToolSvc.h:138
CommonMessaging< implements< IService, IProperty, IStateful > >::msgLevel
MSG::Level msgLevel() const
get the cached level (originally extracted from the embedded MsgStream)
Definition: CommonMessaging.h:138
EventSelector::m_streamSpecsLast
StreamSpecs m_streamSpecsLast
Input stream specifiers (last used)
Definition: EventSelector.h:72
Incident.h
DECLARE_COMPONENT
#define DECLARE_COMPONENT(type)
Definition: PluginServiceV1.h:46
IDataStreamTool::addStreams
virtual StatusCode addStreams(const StreamSpecs &)=0
EventSelector::next
StatusCode next(Context &refCtxt) const override
Get next iteration item from the event loop context.
Definition: EventSelector.cpp:177
ISvcLocator::service
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:76
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98
EventSelector::m_evtPrintFrequency
Gaudi::Property< int > m_evtPrintFrequency
Definition: EventSelector.h:82
IIncidentSvc::fireIncident
virtual void fireIncident(const Incident &incident)=0
Fire an Incident.
EventSelector::m_streamManager
Gaudi::Property< std::string > m_streamManager
Definition: EventSelector.h:83
EventSelector::rewind
StatusCode rewind(Context &refCtxt) const override
Rewind the dataset.
Definition: EventSelector.cpp:255
EventSelector::reinitialize
StatusCode reinitialize() override
Service override: Reinitialize service.
Definition: EventSelector.cpp:368
EventSelector::previous
StatusCode previous(Context &refCtxt) const override
Get previous iteration item from the event loop context.
Definition: EventSelector.cpp:216
IDataStreamTool::clear
virtual StatusCode clear()=0
EvtSelectorContext
Definition of class EventIterator.
Definition: EventIterator.h:32
IIncidentSvc.h
EvtSelectorContext::numEvent
long numEvent() const
Access counter.
Definition: EventIterator.h:91
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
SmartIF.h
EventCollectionSelector::resetCriteria
StatusCode resetCriteria(const std::string &cr, Context &c) const override
Will set a new criteria for the selection of the next list of events and will change the state of the...
Definition: EventCollectionSelector.cpp:284
EventSelector::printEvtInfo
virtual void printEvtInfo(const EvtSelectorContext *iter) const
Progress report.
Definition: EventSelector.cpp:25
IDataStreamTool::getStream
virtual EventSelectorDataStream * getStream(size_type)=0
EventSelector::m_evtMax
Gaudi::Property< int > m_evtMax
Definition: EventSelector.h:81
EventSelector::firstOfNextStream
StatusCode firstOfNextStream(bool shutDown, EvtSelectorContext &it) const
Retrieve first entry of the next data stream.
Definition: EventSelector.cpp:43
EventSelectorDataStream.h
EventSelector::initialize
StatusCode initialize() override
IService implementation: Db event selector override.
Definition: EventSelector.cpp:313
EventSelector::m_streamSpecs
Gaudi::Property< StreamSpecs > m_streamSpecs
Definition: EventSelector.h:79
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:107
EventSelector::m_firstEvent
Gaudi::Property< int > m_firstEvent
Definition: EventSelector.h:80
IDataStreamTool::size_type
long size_type
Definition: IDataStreamTool.h:28
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
ISvcManager::setPriority
virtual StatusCode setPriority(const std::string &name, int pri)=0
EventSelector::finalize
StatusCode finalize() override
IService implementation: Service finalization.
Definition: EventSelector.cpp:386
IDataStreamTool::getPreviousStream
virtual StatusCode getPreviousStream(const EventSelectorDataStream *&, size_type &)=0
EventSelector::m_toolSvc
SmartIF< IToolSvc > m_toolSvc
Definition: EventSelector.h:65
EventSelector::lastOfPreviousStream
StatusCode lastOfPreviousStream(bool shutDown, EvtSelectorContext &it) const
Retrieve last entry of the previous data stream.
Definition: EventSelector.cpp:101
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
IInterface::release
virtual unsigned long release()=0
Release Interface instance.
ISvcManager::getPriority
virtual int getPriority(const std::string &name) const =0
std::unique_ptr
STL class.
IAddressCreator.h
EvtSelectorContext::set
void set(const IEvtSelector *sel, IDataStreamTool::size_type id, IEvtSelector::Context *it, IOpaqueAddress *pA)
Set the address of the iterator.
Definition: EventIterator.h:55
EventSelectorDataStream
Definition of class EventSelectorDataStream.
Definition: EventSelectorDataStream.h:45
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
gaudirun.s
string s
Definition: gaudirun.py:316
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
EvtSelectorContext::ID
virtual IDataStreamTool::size_type ID() const
Stream identifier.
Definition: EventIterator.h:89
EvtSelectorContext::numStreamEvent
long numStreamEvent() const
Access counter within stream.
Definition: EventIterator.h:93
IToolSvc::releaseTool
virtual StatusCode releaseTool(IAlgTool *tool)=0
Release the tool.
EvtSelectorContext::increaseCounters
IDataStreamTool::size_type increaseCounters(bool reset=false)
Increase counters.
Definition: EventIterator.h:72
EventSelector
Definition of class EventSelector.
Definition: EventSelector.h:53
SmartIF::reset
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:86
EventSelector::createAddress
StatusCode createAddress(const Context &refCtxt, IOpaqueAddress *&refpAddr) const override
Create new Opaque address corresponding to the current record.
Definition: EventSelector.cpp:274
IDataStreamTool::size
virtual size_type size()=0
IDataStreamTool::initializeStream
virtual StatusCode initializeStream(EventSelectorDataStream *)=0
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:130
EventSelector::m_reconfigure
bool m_reconfigure
Reconfigure occurred.
Definition: EventSelector.h:70
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
EventSelector::last
StatusCode last(Context &c) const override
Access last item in the iteration.
Definition: EventSelector.cpp:248
IDataStreamTool::getNextStream
virtual StatusCode getNextStream(const EventSelectorDataStream *&, size_type &)=0
EventSelector::createContext
StatusCode createContext(Context *&refpCtxt) const override
Create a new event loop context.
Definition: EventSelector.cpp:151
ISvcLocator.h
EventIterator.h
CommonMessagingBase::fatal
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
Definition: CommonMessaging.h:92
StatusCode::setChecked
const StatusCode & setChecked(bool checked=true) const
Check/uncheck StatusCode.
Definition: StatusCode.h:143
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
EventSelector.h