CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/EventFilter/StorageManager/src/Ready.cc

Go to the documentation of this file.
00001 // $Id: Ready.cc,v 1.17 2011/03/07 15:31:32 mommsen Exp $
00003 
00004 #include "EventFilter/StorageManager/interface/Configuration.h"
00005 #include "EventFilter/StorageManager/interface/ErrorStreamConfigurationInfo.h"
00006 #include "EventFilter/StorageManager/interface/EventStreamConfigurationInfo.h"
00007 #include "EventFilter/StorageManager/interface/Exception.h"
00008 #include "EventFilter/StorageManager/interface/DiscardManager.h"
00009 #include "EventFilter/StorageManager/interface/SharedResources.h"
00010 #include "EventFilter/StorageManager/interface/StateMachine.h"
00011 #include "EventFilter/StorageManager/interface/StatisticsReporter.h"
00012 #include "EventFilter/StorageManager/interface/TransitionRecord.h"
00013 
00014 #include "xcept/tools.h"
00015 
00016 #include <iostream>
00017 
00018 using namespace std;
00019 using namespace stor;
00020 
00021 Ready::Ready( my_context c ): my_base(c)
00022 {
00023   safeEntryAction();
00024 }
00025 
00026 void Ready::do_entryActionWork()
00027 {
00028   TransitionRecord tr( stateName(), true );
00029   outermost_context().updateHistory( tr );
00030 
00031   SharedResourcesPtr sharedResources =
00032     outermost_context().getSharedResources();
00033 
00034   // update all configuration parameters
00035   std::string errorMsg = "Failed to update configuration parameters in Ready state";
00036   try
00037   {
00038     sharedResources->configuration_->updateAllParams();
00039   }
00040   catch(xcept::Exception &e)
00041   {
00042     XCEPT_DECLARE_NESTED(stor::exception::Configuration,
00043       sentinelException, errorMsg, e);
00044     sharedResources->moveToFailedState( sentinelException );
00045     return;
00046   }
00047   catch( std::exception &e )
00048   {
00049     errorMsg.append(": ");
00050     errorMsg.append( e.what() );
00051 
00052     XCEPT_DECLARE(stor::exception::Configuration,
00053       sentinelException, errorMsg);
00054     sharedResources->moveToFailedState( sentinelException );
00055     return;
00056   }
00057   catch(...)
00058   {
00059     errorMsg.append(": unknown exception");
00060 
00061     XCEPT_DECLARE(stor::exception::Configuration,
00062       sentinelException, errorMsg);
00063     sharedResources->moveToFailedState( sentinelException );
00064     return;
00065   }
00066 
00067   // configure the various queue sizes
00068   QueueConfigurationParams queueParams =
00069     sharedResources->configuration_->getQueueConfigurationParams();
00070   sharedResources->commandQueue_->
00071     setCapacity(queueParams.commandQueueSize_);
00072   sharedResources->fragmentQueue_->
00073     setCapacity(queueParams.fragmentQueueSize_);
00074   sharedResources->fragmentQueue_->
00075     setMemory(queueParams.fragmentQueueMemoryLimitMB_ * 1024*1024);
00076   sharedResources->registrationQueue_->
00077     setCapacity(queueParams.registrationQueueSize_);
00078   sharedResources->streamQueue_->
00079     setCapacity(queueParams.streamQueueSize_);
00080   sharedResources->streamQueue_->
00081     setMemory(queueParams.streamQueueMemoryLimitMB_ * 1024*1024);
00082   sharedResources->dqmEventQueue_->
00083     setCapacity(queueParams.dqmEventQueueSize_);
00084   sharedResources->dqmEventQueue_->
00085     setMemory(queueParams.dqmEventQueueMemoryLimitMB_ * 1024*1024);
00086 
00087   // convert the SM configuration string into ConfigInfo objects
00088   // and store them for later use
00089   DiskWritingParams dwParams =
00090     sharedResources->configuration_->getDiskWritingParams();
00091   EvtStrConfigListPtr evtCfgList(new EvtStrConfigList);
00092   ErrStrConfigListPtr errCfgList(new ErrStrConfigList);
00093 
00094   parseStreamConfiguration(dwParams.streamConfiguration_, evtCfgList,
00095                            errCfgList);
00096   sharedResources->configuration_->setCurrentEventStreamConfig(evtCfgList);
00097   sharedResources->configuration_->setCurrentErrorStreamConfig(errCfgList);
00098 
00099   // configure the disk monitoring
00100   ResourceMonitorCollection& rmc =
00101     sharedResources->statisticsReporter_->getResourceMonitorCollection();
00102   AlarmParams ap =
00103     sharedResources->configuration_->getAlarmParams();
00104   ResourceMonitorParams rmp =
00105     sharedResources->configuration_->getResourceMonitorParams();
00106   rmc.configureAlarms(ap);
00107   rmc.configureResources(rmp);
00108   rmc.configureDisks(dwParams);
00109   
00110   // configure the run monitoring
00111   RunMonitorCollection& run_mc =
00112     sharedResources->statisticsReporter_->getRunMonitorCollection();
00113   run_mc.configureAlarms(ap);
00114 
00115   // configure the discard manager
00116   sharedResources->discardManager_->configure();
00117 }
00118 
00119 Ready::~Ready()
00120 {
00121   safeExitAction();
00122 }
00123 
00124 void Ready::do_exitActionWork()
00125 {
00126   TransitionRecord tr( stateName(), false );
00127   outermost_context().updateHistory( tr );
00128 }
00129 
00130 string Ready::do_stateName() const
00131 {
00132   return std::string( "Ready" );
00133 }
00134 
00135 void Ready::do_moveToFailedState( xcept::Exception& exception ) const
00136 {
00137   outermost_context().getSharedResources()->moveToFailedState( exception );
00138 }
00139 
00140