4 #ifndef EventFilter_StorageManager_StateMachine_h
5 #define EventFilter_StorageManager_StateMachine_h
9 #include <boost/statechart/event.hpp>
10 #include <boost/statechart/in_state_reaction.hpp>
11 #include <boost/statechart/state_machine.hpp>
12 #include <boost/statechart/state.hpp>
13 #include <boost/statechart/transition.hpp>
14 #include <boost/mpl/list.hpp>
21 namespace bsc = boost::statechart;
28 class EventDistributor;
31 class TransitionRecord;
202 typedef bsc::transition<Fail,Failed>
FT;
229 typedef bsc::transition<Configure,Ready>
RT;
256 typedef bsc::transition<Configure,Ready>
RT;
283 typedef bsc::transition<Reconfigure,Ready>
ST;
284 typedef bsc::transition<Halt,Halted>
HT;
285 typedef bsc::transition<HaltDone,Halted>
DT;
314 typedef bsc::transition<Enable,Enabled>
ET;
315 typedef bsc::in_state_reaction<HaltDone,Stopped,&Stopped::logHaltDoneRequest>
HaltDoneIR;
345 typedef bsc::transition<StopDone,Stopped>
DT;
346 typedef bsc::in_state_reaction<Halt,Enabled,&Enabled::logHaltRequest>
HaltIR;
347 typedef bsc::in_state_reaction<Reconfigure,Enabled,&Enabled::logReconfigureRequest>
RecfgIR;
377 typedef bsc::transition<StartRun,Running>
ST;
378 typedef bsc::transition<EmergencyStop,Stopping>
ET;
379 typedef bsc::in_state_reaction<StopDone,Starting,&Starting::logStopDoneRequest>
StopDoneIR;
380 typedef bsc::in_state_reaction<HaltDone,Starting,&Starting::logHaltDoneRequest>
HaltDoneIR;
381 typedef boost::mpl::list<ST,ET,StopDoneIR,HaltDoneIR>
reactions;
412 typedef bsc::in_state_reaction<HaltDone,Stopping,&Stopping::logHaltDoneRequest>
HaltDoneIR;
444 typedef bsc::in_state_reaction<StopDone,Halting,&Halting::logStopDoneRequest>
StopDoneIR;
477 typedef bsc::transition<EndRun,Stopping>
ET;
478 typedef bsc::transition<EmergencyStop,Stopping>
EST;
479 typedef bsc::transition<Halt,Halting>
HT;
480 typedef bsc::in_state_reaction<StopDone,Running,&Running::logStopDoneRequest>
StopDoneIR;
481 typedef bsc::in_state_reaction<HaltDone,Running,&Running::logHaltDoneRequest>
HaltDoneIR;
482 typedef boost::mpl::list<ET,EST,HT,StopDoneIR,HaltDoneIR>
reactions;
510 typedef bsc::transition<Stop,DrainingQueues>
DT;
511 typedef bsc::in_state_reaction<EndRun,Processing,&Processing::logEndRunRequest>
EndRunIR;
542 typedef bsc::transition<QueuesEmpty,FinishingDQM>
FT;
543 typedef bsc::in_state_reaction<EndRun,DrainingQueues,&DrainingQueues::logEndRunRequest>
EndRunIR;
591 #endif // EventFilter_StorageManager_StateMachine_h
virtual void do_moveToFailedState(xcept::Exception &exception) const
bsc::transition< EmergencyStop, Stopping > ET
void logEndRunRequest(const EndRun &request)
bsc::transition< QueuesEmpty, FinishingDQM > FT
void processStaleFragments() const
bsc::transition< StopDone, Stopped > DT
virtual std::string do_stateName() const
virtual void do_exitActionWork()
virtual std::string do_stateName() const
std::string stateName() const
virtual void do_moveToFailedState(xcept::Exception &exception) const
void logStopDoneRequest(const StopDone &request)
virtual void do_entryActionWork()
virtual std::string do_stateName() const
SharedResourcesPtr getSharedResources() const
virtual void do_entryActionWork()
virtual void do_entryActionWork()
virtual void do_entryActionWork()
bsc::in_state_reaction< Halt, Enabled,&Enabled::logHaltRequest > HaltIR
virtual void do_moveToFailedState(xcept::Exception &exception) const
virtual void do_moveToFailedState(xcept::Exception &exception) const =0
void noFragmentToProcess() const
bool destructionIsDone() const
void logReconfigureRequest(const Reconfigure &request)
virtual void do_entryActionWork()
bool allQueuesAndWorkersAreEmpty() const
bsc::transition< Fail, Failed > FT
boost::mpl::list< RT > reactions
boost::mpl::list< HaltDoneIR > reactions
virtual void do_moveToFailedState(xcept::Exception &exception) const
boost::shared_ptr< SharedResources > SharedResourcesPtr
virtual void do_noFragmentToProcess() const
boost::mpl::list< ST, HT, DT > reactions
virtual void do_moveToFailedState(xcept::Exception &exception) const
virtual std::string do_stateName() const
boost::shared_ptr< StateMachine > StateMachinePtr
virtual void do_moveToFailedState(xcept::Exception &exception) const
bsc::transition< Configure, Ready > RT
EventDistributor * getEventDistributor() const
bsc::in_state_reaction< StopDone, Halting,&Halting::logStopDoneRequest > StopDoneIR
void moveToFailedState(xcept::Exception &exception) const
bsc::transition< Configure, Ready > RT
void logHaltDoneRequest(const HaltDone &request)
void setExternallyVisibleState(const std::string &)
virtual void do_entryActionWork()
virtual void do_entryActionWork()
boost::mpl::list< DT, EndRunIR > reactions
virtual void do_moveToFailedState(xcept::Exception &exception) const
bsc::transition< StartRun, Running > ST
StateMachine(EventDistributor *ed, FragmentStore *fs, Notifier *n, SharedResourcesPtr sr)
void unconsumed_event(bsc::event_base const &)
virtual void do_entryActionWork()
virtual void do_entryActionWork()
virtual std::string do_stateName() const
bsc::in_state_reaction< Reconfigure, Enabled,&Enabled::logReconfigureRequest > RecfgIR
virtual void do_entryActionWork()
virtual void do_entryActionWork()
virtual void do_exitActionWork()
boost::mpl::list< StopDoneIR > reactions
std::string getCurrentStateName() const
virtual void do_processI2OFragment(I2OChain &frag) const
Operations const & getCurrentState() const
virtual std::string do_stateName() const
virtual std::string do_stateName() const
virtual void do_noFragmentToProcess() const
void logHaltDoneRequest(const HaltDone &request)
virtual void do_noFragmentToProcess() const
virtual void do_exitActionWork()
bsc::transition< Halt, Halting > HT
virtual void do_exitActionWork()=0
boost::mpl::list< DT, HaltIR, RecfgIR > reactions
boost::mpl::list< ST, ET, StopDoneIR, HaltDoneIR > reactions
bool endOfRunProcessingIsDone() const
virtual void do_exitActionWork()
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
bsc::transition< HaltDone, Halted > DT
bsc::in_state_reaction< StopDone, Starting,&Starting::logStopDoneRequest > StopDoneIR
virtual void do_noFragmentToProcess() const
virtual std::string do_stateName() const
bsc::transition< EmergencyStop, Stopping > EST
DrainingQueues(my_context)
void logHaltDoneRequest(const HaltDone &request)
bsc::transition< EndRun, Stopping > ET
virtual ~DrainingQueues()
bsc::in_state_reaction< StopDone, Running,&Running::logStopDoneRequest > StopDoneIR
bsc::transition< Reconfigure, Ready > ST
bsc::in_state_reaction< HaltDone, Starting,&Starting::logHaltDoneRequest > HaltDoneIR
virtual void do_noFragmentToProcess() const
virtual void do_moveToFailedState(xcept::Exception &exception) const
void logStopDoneRequest(const StopDone &request)
virtual std::string do_stateName() const
virtual std::string do_stateName() const
virtual std::string do_stateName() const =0
boost::mpl::list< RT > reactions
virtual void do_exitActionWork()
virtual std::string do_stateName() const
virtual void do_moveToFailedState(xcept::Exception &exception) const
bsc::transition< Halt, Halted > HT
bsc::in_state_reaction< HaltDone, Stopped,&Stopped::logHaltDoneRequest > HaltDoneIR
virtual void do_exitActionWork()
boost::mpl::list< FT, EndRunIR > reactions
virtual void do_moveToFailedState(xcept::Exception &exception) const
SharedResourcesPtr sharedResources_
virtual void do_entryActionWork()
EventDistributor * eventDistributor_
bool workerThreadsConfigured() const
bool destructionIsDone() const
virtual void do_moveToFailedState(xcept::Exception &exception) const
virtual void do_exitActionWork()
boost::mpl::list< ET, EST, HT, StopDoneIR, HaltDoneIR > reactions
void processI2OFragment(I2OChain &frag) const
void logStopDoneRequest(const StopDone &request)
virtual void do_entryActionWork()
virtual void do_exitActionWork()
virtual void do_exitActionWork()
bsc::in_state_reaction< EndRun, Processing,&Processing::logEndRunRequest > EndRunIR
FragmentStore * fragmentStore_
virtual std::string do_stateName() const
void logHaltDoneRequest(const HaltDone &request)
virtual void do_moveToFailedState(xcept::Exception &exception) const
bsc::transition< Stop, DrainingQueues > DT
virtual void do_exitActionWork()
virtual void do_moveToFailedState(xcept::Exception &exception) const
virtual void do_exitActionWork()
boost::mpl::list< FT > reactions
virtual void do_moveToFailedState(xcept::Exception &exception) const
virtual void do_processI2OFragment(I2OChain &frag) const
bsc::in_state_reaction< HaltDone, Stopping,&Stopping::logHaltDoneRequest > HaltDoneIR
virtual void do_entryActionWork()=0
virtual void do_exitActionWork()
FragmentStore * getFragmentStore() const
void logEndRunRequest(const EndRun &request)
bsc::transition< Enable, Enabled > ET
bsc::in_state_reaction< EndRun, DrainingQueues,&DrainingQueues::logEndRunRequest > EndRunIR
virtual std::string do_stateName() const
virtual void do_exitActionWork()
bsc::in_state_reaction< HaltDone, Running,&Running::logHaltDoneRequest > HaltDoneIR
boost::mpl::list< ET, HaltDoneIR > reactions
virtual std::string do_stateName() const
virtual void do_exitActionWork()
void logHaltRequest(const Halt &request)
virtual void do_entryActionWork()
virtual void do_noFragmentToProcess() const
virtual void do_noFragmentToProcess() const
void updateHistory(const TransitionRecord &tr)