CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions

stor::Stopping Class Reference

#include <StateMachine.h>

Inheritance diagram for stor::Stopping:
state stor::Operations

List of all members.

Public Types

typedef bsc::in_state_reaction
< HaltDone, Stopping,&Stopping::logHaltDoneRequest > 
HaltDoneIR
typedef boost::mpl::list
< HaltDoneIR
reactions

Public Member Functions

void logHaltDoneRequest (const HaltDone &request)
 Stopping (my_context)
virtual ~Stopping ()

Private Member Functions

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

Detailed Description

Stopping state

Author:
mommsen
Revision:
1.11
Date:
2011/03/07 15:31:32

Definition at line 405 of file StateMachine.h.


Member Typedef Documentation

typedef bsc::in_state_reaction<HaltDone,Stopping,&Stopping::logHaltDoneRequest> stor::Stopping::HaltDoneIR

Definition at line 412 of file StateMachine.h.

typedef boost::mpl::list<HaltDoneIR> stor::Stopping::reactions

Definition at line 413 of file StateMachine.h.


Constructor & Destructor Documentation

Stopping::Stopping ( my_context  c)

Definition at line 17 of file Stopping.cc.

References stor::Operations::safeEntryAction().

                                : my_base(c)
{
  safeEntryAction();
}
Stopping::~Stopping ( ) [virtual]

Definition at line 40 of file Stopping.cc.

References stor::Operations::safeExitAction().


Member Function Documentation

bool Stopping::destructionIsDone ( ) const [private]

Definition at line 79 of file Stopping.cc.

Referenced by do_noFragmentToProcess().

{
  SharedResourcesPtr sharedResources =
    outermost_context().getSharedResources();

  // check if the requests are still being processed
  if ( sharedResources->diskWriterResources_->streamChangeOngoing() ) return false;

  if ( sharedResources->dqmEventProcessorResources_->requestsOngoing() ) return false;

  return true;
}
void Stopping::do_entryActionWork ( ) [private, virtual]

Implements stor::Operations.

Definition at line 22 of file Stopping.cc.

References stor::Operations::stateName().

{

  TransitionRecord tr( stateName(), true );
  outermost_context().updateHistory( tr );

  SharedResourcesPtr sharedResources =
    outermost_context().getSharedResources();

  // request that the streams that are currently configured in the disk
  // writer be destroyed (this has the side effect of closing files)
  sharedResources->diskWriterResources_->requestStreamDestruction();

  // request that the DQM event store is cleared
  // if FinishingDQM has succeeded, the store is already empty
  sharedResources->dqmEventProcessorResources_->requestStoreDestruction();
}
void Stopping::do_exitActionWork ( ) [private, virtual]

Implements stor::Operations.

Definition at line 45 of file Stopping.cc.

References stor::Operations::stateName().

{
  TransitionRecord tr( stateName(), false );
  outermost_context().updateHistory( tr );
}
void Stopping::do_moveToFailedState ( xcept::Exception exception) const [private, virtual]

Implements stor::Operations.

Definition at line 56 of file Stopping.cc.

{
  outermost_context().getSharedResources()->moveToFailedState( exception );
}
void Stopping::do_noFragmentToProcess ( ) const [private, virtual]

Reimplemented from stor::Operations.

Definition at line 67 of file Stopping.cc.

References destructionIsDone().

{
  if ( destructionIsDone() )
  {
    SharedResourcesPtr sharedResources =
      outermost_context().getSharedResources();
    EventPtr_t stMachEvent( new StopDone() );
    sharedResources->commandQueue_->enqWait( stMachEvent );
  }
}
string Stopping::do_stateName ( ) const [private, virtual]

Implements stor::Operations.

Definition at line 51 of file Stopping.cc.

{
  return std::string( "Stopping" );
}
void Stopping::logHaltDoneRequest ( const HaltDone request)

Definition at line 61 of file Stopping.cc.

{
  outermost_context().unconsumed_event( request );
}