// IEvtSelector::first() StatusCode EventSelector::firstOfNextStream(bool shutDown, EvtSelectorContext& iter) const { StatusCode status = StatusCode::SUCCESS; IDataStreamTool::size_type iter_id = (m_reconfigure) ? 0 : iter.ID()+1; if ( m_reconfigure ) const_cast<EventSelector*>(this)->m_reconfigure = false; if ( shutDown ) { if ( iter.ID() >= 0 && iter.ID() < (long)m_streamtool->size() ) { const EventSelectorDataStream* s = m_streamtool->getStream(iter.ID()); if ( s->isInitialized() ) { EventSelector* thisPtr = const_cast<EventSelector*>(this); if ( s->selector() && iter.context() ) { Context* ctxt = iter.context(); s->selector()->releaseContext(ctxt).ignore(); iter.set(0,0); } status = thisPtr->m_streamtool->finalizeStream(const_cast<EventSelectorDataStream*>(s)); iter.set(0,0); } } } const EventSelectorDataStream* s ; status = m_streamtool->getNextStream( s , iter_id ); if ( status.isSuccess() ) { if(s!=NULL) { if ( !s->isInitialized() ) { EventSelector* thisPtr = const_cast<EventSelector*>(this); status = thisPtr->m_streamtool->initializeStream(const_cast<EventSelectorDataStream*>(s)); } if ( status.isSuccess() ) { const IEvtSelector* sel = s->selector(); if ( sel ) { Context* ctxt = 0; status = sel->createContext(ctxt); if ( status.isSuccess() ) { status = sel->resetCriteria(s->criteria(), *ctxt); if ( status.isSuccess() ) { MsgStream log(msgSvc(), name()); iter.set(this, iter_id, ctxt, 0); log << MSG::INFO << *s << endmsg; m_incidentSvc->fireIncident(Incident(s->dbName(),IncidentType::BeginInputFile)); return StatusCode::SUCCESS; } } } } m_incidentSvc->fireIncident(Incident(s->dbName(),IncidentType::FailInputFile)); } } iter.set(this, -1, 0, 0); status.setChecked(); //m_incidentSvc->fireIncident(Incident(s->dbName(),IncidentType::FailInputFile)); return StatusCode::FAILURE; }