CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions
evf::rb_statemachine::Halting Class Reference

#include <RBStateMachine.h>

Inheritance diagram for evf::rb_statemachine::Halting:
evf::rb_statemachine::BaseState

Public Types

typedef bsc::transition
< HaltDone, Halted
HD
 
typedef boost::mpl::list< HDreactions
 

Public Member Functions

virtual bool discardDataEvent (MemRef_t *bufRef) const
 
virtual bool discardDqmEvent (MemRef_t *bufRef) const
 
virtual void do_stateAction () const
 
virtual void do_stateNotify ()
 
 Halting (my_context)
 
virtual int stateID () const
 
virtual ~Halting ()
 
- Public Member Functions inherited from evf::rb_statemachine::BaseState
 BaseState ()
 
void moveToFailedState (xcept::Exception &exception) const
 
std::string stateName () const
 
virtual ~BaseState ()=0
 

Private Member Functions

bool destructionIsDone () const
 
virtual void do_entryActionWork ()
 
virtual void do_exitActionWork ()
 
virtual void do_moveToFailedState (xcept::Exception &exception) const
 
virtual std::string do_stateName () const
 
void doAsync () const
 

Additional Inherited Members

- Protected Member Functions inherited from evf::rb_statemachine::BaseState
void fail ()
 
void safeEntryAction ()
 
void safeExitAction ()
 

Detailed Description

Halting state

Definition at line 639 of file RBStateMachine.h.

Member Typedef Documentation

Definition at line 643 of file RBStateMachine.h.

Definition at line 644 of file RBStateMachine.h.

Constructor & Destructor Documentation

Halting::Halting ( my_context  c)

Definition at line 119 of file Halting.cc.

References evf::rb_statemachine::BaseState::safeEntryAction().

119  :
120  my_base(c) {
121  safeEntryAction();
122 }
Halting::~Halting ( )
virtual

Definition at line 124 of file Halting.cc.

References evf::rb_statemachine::BaseState::safeExitAction().

124  {
125  safeExitAction();
126 }

Member Function Documentation

bool evf::rb_statemachine::Halting::destructionIsDone ( ) const
private
bool Halting::discardDataEvent ( MemRef_t bufRef) const
virtual

Base callback on process buffer received via I2O_SM_DATA_DISCARD message

Reimplemented from evf::rb_statemachine::BaseState.

Definition at line 94 of file Halting.cc.

References alignCSCRings::e, and evf::rb_statemachine::BaseState::moveToFailedState().

94  {
95  SharedResourcesPtr_t res = outermost_context().getSharedResources();
96  bool returnValue = false;
97  try {
98  returnValue = res->resourceStructure_->discardDataEventWhileHalting(
99  bufRef);
100  } catch (evf::Exception& e) {
102  }
103  return returnValue;
104 }
boost::shared_ptr< SharedResources > SharedResourcesPtr_t
void moveToFailedState(xcept::Exception &exception) const
Definition: BaseState.cc:35
bool Halting::discardDqmEvent ( MemRef_t bufRef) const
virtual

Base callback on process buffer received via I2O_SM_DQM_DISCARD message

Reimplemented from evf::rb_statemachine::BaseState.

Definition at line 105 of file Halting.cc.

References alignCSCRings::e, and evf::rb_statemachine::BaseState::moveToFailedState().

105  {
106  SharedResourcesPtr_t res = outermost_context().getSharedResources();
107  bool returnValue = false;
108  try {
109  returnValue = res->resourceStructure_->discardDqmEvent(bufRef);
110  //returnValue = res->resourceStructure_->discardDqmEventWhileHalting(bufRef);
111  } catch (evf::Exception& e) {
113  }
114  return returnValue;
115 }
boost::shared_ptr< SharedResources > SharedResourcesPtr_t
void moveToFailedState(xcept::Exception &exception) const
Definition: BaseState.cc:35
void Halting::do_entryActionWork ( )
privatevirtual

Implements evf::rb_statemachine::BaseState.

Definition at line 18 of file Halting.cc.

18  {
19 }
void Halting::do_exitActionWork ( )
privatevirtual

Implements evf::rb_statemachine::BaseState.

Definition at line 130 of file Halting.cc.

130  {
131 }
void Halting::do_moveToFailedState ( xcept::Exception &  exception) const
privatevirtual

Implements evf::rb_statemachine::BaseState.

Definition at line 137 of file Halting.cc.

References edm::hlt::Fail, and evf::rb_statemachine::BaseState::fail().

137  {
138  SharedResourcesPtr_t res = outermost_context().getSharedResources();
139  res->reasonForFailed_ = exception.what();
140  LOG4CPLUS_FATAL(res->log_,
141  "Moving to FAILED state! Reason: " << exception.what());
142  EventPtr fail(new Fail());
143  res->commands_.enqEvent(fail);
144 }
boost::shared_ptr< SharedResources > SharedResourcesPtr_t
reject
Definition: HLTenums.h:23
boost::shared_ptr< boost::statechart::event_base > EventPtr
Definition: CommandQueue.h:23
void Halting::do_stateAction ( ) const
virtual

State-dependent actions

Reimplemented from evf::rb_statemachine::BaseState.

Definition at line 31 of file Halting.cc.

References prof2calltree::count, alignCSCRings::e, edm::hlt::Exception, edm::hlt::Fail, evf::rb_statemachine::BaseState::moveToFailedState(), and stor::utils::sleep().

31  {
32  SharedResourcesPtr_t res = outermost_context().getSharedResources();
33  try {
34  LOG4CPLUS_INFO(res->log_, "Start halting ...");
35  if (res->resourceStructure_->isActive()) {
36  res->resourceStructure_->shutDownClients();
37  UInt_t count = 0;
38  while (count < 10) {
39  if (res->resourceStructure_->isReadyToShutDown()) {
40  res->lock();
41 
42  delete res->resourceStructure_;
43  res->resourceStructure_ = 0;
44 
45  res->unlock();
46  LOG4CPLUS_INFO(
47  res->log_,
48  count + 1
49  << ". try to destroy resource table succeeded!");
50  break;
51  } else {
52  count++;
53 
54  LOG4CPLUS_DEBUG(
55  res->log_,
56  count
57  << ". try to destroy resource table failed ...");
58 
59  ::sleep(1);
60  }
61  }
62  } else {
63  res->lock();
64 
65  delete res->resourceStructure_;
66  res->resourceStructure_ = 0;
67 
68  res->unlock();
69  }
70 
71  if (0 == res->resourceStructure_) {
72  LOG4CPLUS_INFO(res->log_, "Finished halting!");
73  EventPtr haltDone(new HaltDone());
74  res->commands_.enqEvent(haltDone);
75  } else {
76  res->reasonForFailed_
77  = "halting FAILED: ResourceTable shutdown timed out.";
78  LOG4CPLUS_FATAL(res->log_,
79  "Moving to FAILED state! Reason: " << res->reasonForFailed_.value_);
80  EventPtr failTimeOut(new Fail());
81  res->commands_.enqEvent(failTimeOut);
82  }
83  } catch (xcept::Exception &e) {
85  }
86 
87  if (res->frb_)
88  delete res->frb_;
89 }
boost::shared_ptr< SharedResources > SharedResourcesPtr_t
reject
Definition: HLTenums.h:23
boost::shared_ptr< boost::statechart::event_base > EventPtr
Definition: CommandQueue.h:23
void sleep(Duration_t)
Definition: Utils.h:163
void moveToFailedState(xcept::Exception &exception) const
Definition: BaseState.cc:35
unsigned int UInt_t
Definition: FUTypes.h:12
string Halting::do_stateName ( ) const
privatevirtual

Implements evf::rb_statemachine::BaseState.

Definition at line 133 of file Halting.cc.

133  {
134  return string("Halting");
135 }
void Halting::do_stateNotify ( )
virtual

State entry notifications

Implements evf::rb_statemachine::BaseState.

Definition at line 21 of file Halting.cc.

References evf::rb_statemachine::BaseState::stateName().

21  {
22  SharedResourcesPtr_t res = outermost_context().getSharedResources();
23  LOG4CPLUS_INFO(res->log_, "--> ResourceBroker: NEW STATE: " << stateName());
24  outermost_context().setExternallyVisibleState(stateName());
25  outermost_context().setInternalStateName(stateName());
26  // RCMS notification no longer required here
27  // this is done in FUResourceBroker in SOAP reply
28  //outermost_context().rcmsStateChangeNotify();
29 }
boost::shared_ptr< SharedResources > SharedResourcesPtr_t
std::string stateName() const
Definition: BaseState.cc:31
void evf::rb_statemachine::Halting::doAsync ( ) const
private
virtual int evf::rb_statemachine::Halting::stateID ( ) const
inlinevirtual

Return the current state ID

Implements evf::rb_statemachine::BaseState.

Definition at line 655 of file RBStateMachine.h.

References evf::rb_statemachine::HALTING.