CMS 3D CMS Logo

stor::EventServer Class Reference

#include <EventFilter/StorageManager/interface/EventServer.h>

List of all members.

Public Types

enum  STATS_SAMPLE_TYPE { INPUT_STATS = 10, OUTPUT_STATS = 11, UNIQUE_ACCEPT_STATS = 12 }
enum  STATS_TIME_FRAME { SHORT_TERM_STATS = 0, LONG_TERM_STATS = 1 }
enum  STATS_TIMING_TYPE { CPUTIME = 20, REALTIME = 21 }

Public Member Functions

void addConsumer (boost::shared_ptr< ConsumerPipe > consumer)
 Adds the specified consumer to the event server.
void clearQueue ()
 EventServer (double maxEventRate, double maxDataRate, std::string hltOutputSelection, bool runFairShareAlgo=false)
 EventServer constructor.
boost::shared_ptr< ConsumerPipegetConsumer (uint32 consumerId)
 Returns a shared pointer to the consumer pipe with the specified ID or an empty pointer if the ID was not found.
std::map< uint32,
boost::shared_ptr
< ConsumerPipe > > 
getConsumerTable ()
double getDataRate (STATS_TIME_FRAME timeFrame=SHORT_TERM_STATS, STATS_SAMPLE_TYPE sampleType=INPUT_STATS, uint32 outputModuleId=0, double currentTime=ForeverCounter::getCurrentTime())
 Returns the data rate for the specified statistics types (short term vs.
double getDuration (STATS_TIME_FRAME timeFrame=SHORT_TERM_STATS, STATS_SAMPLE_TYPE sampleType=INPUT_STATS, uint32 outputModuleId=0, double currentTime=ForeverCounter::getCurrentTime())
 Returns the duration (in seconds) for the specified statistics types (short term vs.
boost::shared_ptr< std::vector
< char > > 
getEvent (uint32 consumerId)
 Returns the next event for the specified consumer.
long long getEventCount (STATS_TIME_FRAME timeFrame=SHORT_TERM_STATS, STATS_SAMPLE_TYPE sampleType=INPUT_STATS, uint32 outputModuleId=0, double currentTime=ForeverCounter::getCurrentTime())
 Returns the number of events for the specified statistics types (short term vs.
double getEventRate (STATS_TIME_FRAME timeFrame=SHORT_TERM_STATS, STATS_SAMPLE_TYPE sampleType=INPUT_STATS, uint32 outputModuleId=0, double currentTime=ForeverCounter::getCurrentTime())
 Returns the rate of events for the specified statistics types (short term vs.
std::string getHLTOutputSelection () const
double getInternalTime (STATS_TIME_FRAME timeFrame=SHORT_TERM_STATS, STATS_TIMING_TYPE timingType=CPUTIME, double currentTime=ForeverCounter::getCurrentTime())
 Returns the amount of time spent processing events inside the event server for the specified time frame (short or long term) and timing type (CPU time or real time).
double getMaxDataRate () const
double getMaxEventRate () const
int getSelectionTableStringSize ()
std::map< std::string, StringsgetStreamSelectionTable ()
double getTimeFraction (STATS_TIME_FRAME timeFrame=SHORT_TERM_STATS, STATS_TIMING_TYPE timingType=CPUTIME, double currentTime=ForeverCounter::getCurrentTime())
 Returns the fraction of time spent processing events inside the event server for the specified time frame (short or long term) and timing type (CPU time or real time).
double getTotalTime (STATS_TIME_FRAME timeFrame=SHORT_TERM_STATS, STATS_TIMING_TYPE timingType=CPUTIME, double currentTime=ForeverCounter::getCurrentTime())
 Returns the total time used by the current process (both inside and outside the event server) for the specified time frame (short or long term) and timing type (CPU time or real time).
void processEvent (const EventMsgView &eventView)
 Processes the specified event.
void setStreamSelectionTable (std::map< std::string, Strings > const &selTable)
Strings updateTriggerSelectionForStreams (Strings const &selectionList)
 ~EventServer ()
 EventServer destructor.

Private Attributes

boost::mt19937 baseGenerator_
std::map< uint32,
boost::shared_ptr
< ConsumerPipe > > 
consumerTable_
int disconnectedConsumerTestCounter_
boost::shared_ptr
< boost::uniform_01
< boost::mt19937 > > 
generator_
uint32 hltOutputModuleId_
std::string hltOutputSelection_
edm::CPUTimer insideTimer_
boost::shared_ptr< ForeverCounterlongTermInsideCPUTimeCounter_
boost::shared_ptr< ForeverCounterlongTermInsideRealTimeCounter_
boost::shared_ptr< ForeverCounterlongTermOutsideCPUTimeCounter_
boost::shared_ptr< ForeverCounterlongTermOutsideRealTimeCounter_
std::map< uint32,
boost::shared_ptr
< ForeverCounter > > 
ltAcceptCounters_
std::map< uint32,
boost::shared_ptr
< ForeverCounter > > 
ltInputCounters_
std::map< uint32,
boost::shared_ptr
< ForeverCounter > > 
ltOutputCounters_
double maxDataRate_
double maxEventRate_
edm::CPUTimer outsideTimer_
boost::shared_ptr< RateLimiterrateLimiter_
bool runFairShareAlgo_
int selTableStringSize_
boost::shared_ptr
< RollingIntervalCounter
shortTermInsideCPUTimeCounter_
boost::shared_ptr
< RollingIntervalCounter
shortTermInsideRealTimeCounter_
boost::shared_ptr
< RollingIntervalCounter
shortTermOutsideCPUTimeCounter_
boost::shared_ptr
< RollingIntervalCounter
shortTermOutsideRealTimeCounter_
std::map< uint32,
boost::shared_ptr
< RollingIntervalCounter > > 
stAcceptCounters_
std::map< uint32,
boost::shared_ptr
< RollingIntervalCounter > > 
stInputCounters_
std::map< uint32,
boost::shared_ptr
< RollingIntervalCounter > > 
stOutputCounters_
std::map< std::string, StringsstreamSelectionTable_


Detailed Description

Definition at line 36 of file EventServer.h.


Member Enumeration Documentation

enum stor::EventServer::STATS_SAMPLE_TYPE

Enumerator:
INPUT_STATS 
OUTPUT_STATS 
UNIQUE_ACCEPT_STATS 

Definition at line 40 of file EventServer.h.

00040                            { INPUT_STATS = 10, OUTPUT_STATS = 11,
00041                              UNIQUE_ACCEPT_STATS = 12 };

enum stor::EventServer::STATS_TIME_FRAME

Enumerator:
SHORT_TERM_STATS 
LONG_TERM_STATS 

Definition at line 39 of file EventServer.h.

00039 { SHORT_TERM_STATS = 0, LONG_TERM_STATS = 1 };

enum stor::EventServer::STATS_TIMING_TYPE

Enumerator:
CPUTIME 
REALTIME 

Definition at line 42 of file EventServer.h.

00042 { CPUTIME = 20, REALTIME = 21 };


Constructor & Destructor Documentation

EventServer::EventServer ( double  maxEventRate,
double  maxDataRate,
std::string  hltOutputSelection,
bool  runFairShareAlgo = false 
)

EventServer constructor.

Throttling events are supported: specifying a maximimum allowed rate of accepted events

Definition at line 23 of file EventServer.cc.

References baseGenerator_, disconnectedConsumerTestCounter_, generator_, hltOutputModuleId_, hltOutputSelection_, insideTimer_, L, longTermInsideCPUTimeCounter_, longTermInsideRealTimeCounter_, longTermOutsideCPUTimeCounter_, longTermOutsideRealTimeCounter_, ltAcceptCounters_, ltInputCounters_, ltOutputCounters_, maxDataRate_, maxEventRate_, outsideTimer_, edm::CPUTimer::reset(), runFairShareAlgo_, selTableStringSize_, shortTermInsideCPUTimeCounter_, shortTermInsideRealTimeCounter_, shortTermOutsideCPUTimeCounter_, shortTermOutsideRealTimeCounter_, stAcceptCounters_, stInputCounters_, and stOutputCounters_.

00026 {
00027   // initialize counters
00028   disconnectedConsumerTestCounter_ = 0;
00029 
00030   selTableStringSize_ = 0;
00031 
00032   ltInputCounters_.clear();
00033   stInputCounters_.clear();
00034   ltAcceptCounters_.clear();
00035   stAcceptCounters_.clear();
00036   ltOutputCounters_.clear();
00037   stOutputCounters_.clear();
00038 
00039   //rateLimiter_.reset(new RateLimiter(maxEventRate, maxDataRate));
00040   this->maxEventRate_ = maxEventRate;
00041   this->maxDataRate_ = maxDataRate;
00042 
00043   // 11-Jun-2008, KAB - the fair-share algo needs better requirements AND
00044   // needs consumer subscriptions to be forwarded from the ProxyServer
00045   // to the SMs.  So, prevent its use, for now.
00046   // (To be honest, I'm not sure that we can even support dynamic switching
00047   // on and off of the FS algo.)
00048   assert(! runFairShareAlgo);
00049   this->runFairShareAlgo_ = runFairShareAlgo;
00050 
00051   this->hltOutputSelection_ = hltOutputSelection;
00052   uLong crc = crc32(0L, Z_NULL, 0);
00053   Bytef* crcbuf = (Bytef*) hltOutputSelection.data();
00054   crc = crc32(crc, crcbuf, hltOutputSelection.length());
00055   this->hltOutputModuleId_ = static_cast<uint32>(crc);
00056 
00057   outsideTimer_.reset();
00058   insideTimer_.reset();
00059 
00060   // initialize the counters that we use for statistics
00061   longTermInsideCPUTimeCounter_.reset(new ForeverCounter());
00062   shortTermInsideCPUTimeCounter_.reset(new RollingIntervalCounter(180,5,20));
00063   longTermInsideRealTimeCounter_.reset(new ForeverCounter());
00064   shortTermInsideRealTimeCounter_.reset(new RollingIntervalCounter(180,5,20));
00065   longTermOutsideCPUTimeCounter_.reset(new ForeverCounter());
00066   shortTermOutsideCPUTimeCounter_.reset(new RollingIntervalCounter(180,5,20));
00067   longTermOutsideRealTimeCounter_.reset(new ForeverCounter());
00068   shortTermOutsideRealTimeCounter_.reset(new RollingIntervalCounter(180,5,20));
00069 
00070   generator_.reset(new boost::uniform_01<boost::mt19937>(baseGenerator_));
00071 }

EventServer::~EventServer (  ) 

EventServer destructor.

Definition at line 76 of file EventServer.cc.

References lat::endl(), and FDEBUG.

00077 {
00078   FDEBUG(5) << "Executing destructor for event server " << std::endl;
00079 }


Member Function Documentation

void EventServer::addConsumer ( boost::shared_ptr< ConsumerPipe consumer  ) 

Adds the specified consumer to the event server.

Definition at line 84 of file EventServer.cc.

References consumerTable_.

00085 {
00086   uint32 consumerId = consumer->getConsumerId();
00087   consumerTable_[consumerId] = consumer;
00088 
00089   // add the consumer (by ID) to the rateLimiter instance that we use
00090   // to provide a fair share of the limited bandwidth to each consumer.
00091   //rateLimiter_->addConsumer(consumerId);
00092 }

void EventServer::clearQueue (  ) 

Definition at line 420 of file EventServer.cc.

References consumerTable_.

00421 {
00422   std::map< uint32, boost::shared_ptr<ConsumerPipe> >::const_iterator consIter;
00423   for (consIter = consumerTable_.begin();
00424        consIter != consumerTable_.end();
00425        consIter++)
00426   {
00427     boost::shared_ptr<ConsumerPipe> consPipe = consIter->second;
00428     consPipe->clearQueue();
00429   }
00430 }

boost::shared_ptr< ConsumerPipe > EventServer::getConsumer ( uint32  consumerId  ) 

Returns a shared pointer to the consumer pipe with the specified ID or an empty pointer if the ID was not found.

Definition at line 103 of file EventServer.cc.

References consumerTable_.

Referenced by processEvent().

00104 {
00105   // initial empty pointer
00106   boost::shared_ptr<ConsumerPipe> consPtr;
00107 
00108   // lookup the consumer
00109   std::map< uint32, boost::shared_ptr<ConsumerPipe> >::const_iterator consIter;
00110   consIter = consumerTable_.find(consumerId);
00111   if (consIter != consumerTable_.end())
00112   {
00113     consPtr = consIter->second;
00114   }
00115 
00116   // return the pointer
00117   return consPtr;
00118 }

std::map< uint32, boost::shared_ptr< ConsumerPipe > > EventServer::getConsumerTable (  ) 

Definition at line 94 of file EventServer.cc.

References consumerTable_.

00095 {
00096   return(consumerTable_);
00097 }

double EventServer::getDataRate ( STATS_TIME_FRAME  timeFrame = SHORT_TERM_STATS,
STATS_SAMPLE_TYPE  sampleType = INPUT_STATS,
uint32  outputModuleId = 0,
double  currentTime = ForeverCounter::getCurrentTime() 
)

Returns the data rate for the specified statistics types (short term vs.

long term; input vs. output).

Definition at line 641 of file EventServer.cc.

References INPUT_STATS, ltAcceptCounters_, ltInputCounters_, ltOutputCounters_, SHORT_TERM_STATS, stAcceptCounters_, stInputCounters_, stOutputCounters_, and UNIQUE_ACCEPT_STATS.

00645 {
00646   boost::shared_ptr<ForeverCounter> ltCounter;
00647   boost::shared_ptr<RollingIntervalCounter> stCounter;
00648   std::map<uint32, boost::shared_ptr<ForeverCounter> >::iterator ltIter;
00649   std::map<uint32, boost::shared_ptr<RollingIntervalCounter> >::iterator stIter;
00650 
00651   if (timeFrame == SHORT_TERM_STATS) {
00652     if (sampleType == INPUT_STATS) {
00653       stIter = stInputCounters_.find(outputModuleId);
00654       if (stIter != stInputCounters_.end()) {
00655         stCounter = stIter->second;
00656         return stCounter->getValueRate(currentTime);
00657       }
00658       else {
00659         return 0;
00660       }
00661     }
00662     else if (sampleType == UNIQUE_ACCEPT_STATS) {
00663       stIter = stAcceptCounters_.find(outputModuleId);
00664       if (stIter != stAcceptCounters_.end()) {
00665         stCounter = stIter->second;
00666         return stCounter->getValueRate(currentTime);
00667       }
00668       else {
00669         return 0;
00670       }
00671     }
00672     else {
00673       stIter = stOutputCounters_.find(outputModuleId);
00674       if (stIter != stOutputCounters_.end()) {
00675         stCounter = stIter->second;
00676         return stCounter->getValueRate(currentTime);
00677       }
00678       else {
00679         return 0;
00680       }
00681     }
00682   }
00683   else {
00684     if (sampleType == INPUT_STATS) {
00685       ltIter = ltInputCounters_.find(outputModuleId);
00686       if (ltIter != ltInputCounters_.end()) {
00687         ltCounter = ltIter->second;
00688         return ltCounter->getValueRate(currentTime);
00689       }
00690       else {
00691         return 0;
00692       }
00693     }
00694     else if (sampleType == UNIQUE_ACCEPT_STATS) {
00695       ltIter = ltAcceptCounters_.find(outputModuleId);
00696       if (ltIter != ltAcceptCounters_.end()) {
00697         ltCounter = ltIter->second;
00698         return ltCounter->getValueRate(currentTime);
00699       }
00700       else {
00701         return 0;
00702       }
00703     }
00704     else {
00705       ltIter = ltOutputCounters_.find(outputModuleId);
00706       if (ltIter != ltOutputCounters_.end()) {
00707         ltCounter = ltIter->second;
00708         return ltCounter->getValueRate(currentTime);
00709       }
00710       else {
00711         return 0;
00712       }
00713     }
00714   }
00715 }

double EventServer::getDuration ( STATS_TIME_FRAME  timeFrame = SHORT_TERM_STATS,
STATS_SAMPLE_TYPE  sampleType = INPUT_STATS,
uint32  outputModuleId = 0,
double  currentTime = ForeverCounter::getCurrentTime() 
)

Returns the duration (in seconds) for the specified statistics types (short term vs.

long term; input vs. output). "Duration" here means the length of time in which the specified statistics have been collected.

Definition at line 723 of file EventServer.cc.

References INPUT_STATS, ltAcceptCounters_, ltInputCounters_, ltOutputCounters_, SHORT_TERM_STATS, stAcceptCounters_, stInputCounters_, stOutputCounters_, and UNIQUE_ACCEPT_STATS.

00727 {
00728   boost::shared_ptr<ForeverCounter> ltCounter;
00729   boost::shared_ptr<RollingIntervalCounter> stCounter;
00730   std::map<uint32, boost::shared_ptr<ForeverCounter> >::iterator ltIter;
00731   std::map<uint32, boost::shared_ptr<RollingIntervalCounter> >::iterator stIter;
00732 
00733   if (timeFrame == SHORT_TERM_STATS) {
00734     if (sampleType == INPUT_STATS) {
00735       stIter = stInputCounters_.find(outputModuleId);
00736       if (stIter != stInputCounters_.end()) {
00737         stCounter = stIter->second;
00738         return stCounter->getDuration(currentTime);
00739       }
00740       else {
00741         return 0;
00742       }
00743     }
00744     else if (sampleType == UNIQUE_ACCEPT_STATS) {
00745       stIter = stAcceptCounters_.find(outputModuleId);
00746       if (stIter != stAcceptCounters_.end()) {
00747         stCounter = stIter->second;
00748         return stCounter->getDuration(currentTime);
00749       }
00750       else {
00751         return 0;
00752       }
00753     }
00754     else {
00755       stIter = stOutputCounters_.find(outputModuleId);
00756       if (stIter != stOutputCounters_.end()) {
00757         stCounter = stIter->second;
00758         return stCounter->getDuration(currentTime);
00759       }
00760       else {
00761         return 0;
00762       }
00763     }
00764   }
00765   else {
00766     if (sampleType == INPUT_STATS) {
00767       ltIter = ltInputCounters_.find(outputModuleId);
00768       if (ltIter != ltInputCounters_.end()) {
00769         ltCounter = ltIter->second;
00770         return ltCounter->getDuration(currentTime);
00771       }
00772       else {
00773         return 0;
00774       }
00775     }
00776     else if (sampleType == UNIQUE_ACCEPT_STATS) {
00777       ltIter = ltAcceptCounters_.find(outputModuleId);
00778       if (ltIter != ltAcceptCounters_.end()) {
00779         ltCounter = ltIter->second;
00780         return ltCounter->getDuration(currentTime);
00781       }
00782       else {
00783         return 0;
00784       }
00785     }
00786     else {
00787       ltIter = ltOutputCounters_.find(outputModuleId);
00788       if (ltIter != ltOutputCounters_.end()) {
00789         ltCounter = ltIter->second;
00790         return ltCounter->getDuration(currentTime);
00791       }
00792       else {
00793         return 0;
00794       }
00795     }
00796   }
00797 }

boost::shared_ptr< std::vector< char > > EventServer::getEvent ( uint32  consumerId  ) 

Returns the next event for the specified consumer.

Definition at line 402 of file EventServer.cc.

References consumerTable_.

00403 {
00404   // initial empty buffer
00405   boost::shared_ptr< vector<char> > bufPtr;
00406 
00407   // lookup the consumer
00408   std::map< uint32, boost::shared_ptr<ConsumerPipe> >::const_iterator consIter;
00409   consIter = consumerTable_.find(consumerId);
00410   if (consIter != consumerTable_.end())
00411   {
00412     boost::shared_ptr<ConsumerPipe> consPipe = consIter->second;
00413     bufPtr = consPipe->getEvent();
00414   }
00415 
00416   // return the event buffer
00417   return bufPtr;
00418 }

long long EventServer::getEventCount ( STATS_TIME_FRAME  timeFrame = SHORT_TERM_STATS,
STATS_SAMPLE_TYPE  sampleType = INPUT_STATS,
uint32  outputModuleId = 0,
double  currentTime = ForeverCounter::getCurrentTime() 
)

Returns the number of events for the specified statistics types (short term vs.

long term; input vs. output).

Definition at line 481 of file EventServer.cc.

References INPUT_STATS, ltAcceptCounters_, ltInputCounters_, ltOutputCounters_, SHORT_TERM_STATS, stAcceptCounters_, stInputCounters_, stOutputCounters_, and UNIQUE_ACCEPT_STATS.

00485 {
00486   boost::shared_ptr<ForeverCounter> ltCounter;
00487   boost::shared_ptr<RollingIntervalCounter> stCounter;
00488   std::map<uint32, boost::shared_ptr<ForeverCounter> >::iterator ltIter;
00489   std::map<uint32, boost::shared_ptr<RollingIntervalCounter> >::iterator stIter;
00490 
00491   if (timeFrame == SHORT_TERM_STATS) {
00492     if (sampleType == INPUT_STATS) {
00493       stIter = stInputCounters_.find(outputModuleId);
00494       if (stIter != stInputCounters_.end()) {
00495         stCounter = stIter->second;
00496         return stCounter->getSampleCount(currentTime);
00497       }
00498       else {
00499         return 0;
00500       }
00501     }
00502     else if (sampleType == UNIQUE_ACCEPT_STATS) {
00503       stIter = stAcceptCounters_.find(outputModuleId);
00504       if (stIter != stAcceptCounters_.end()) {
00505         stCounter = stIter->second;
00506         return stCounter->getSampleCount(currentTime);
00507       }
00508       else {
00509         return 0;
00510       }
00511     }
00512     else {
00513       stIter = stOutputCounters_.find(outputModuleId);
00514       if (stIter != stOutputCounters_.end()) {
00515         stCounter = stIter->second;
00516         return stCounter->getSampleCount(currentTime);
00517       }
00518       else {
00519         return 0;
00520       }
00521     }
00522   }
00523   else {
00524     if (sampleType == INPUT_STATS) {
00525       ltIter = ltInputCounters_.find(outputModuleId);
00526       if (ltIter != ltInputCounters_.end()) {
00527         ltCounter = ltIter->second;
00528         return ltCounter->getSampleCount();
00529       }
00530       else {
00531         return 0;
00532       }
00533     }
00534     else if (sampleType == UNIQUE_ACCEPT_STATS) {
00535       ltIter = ltAcceptCounters_.find(outputModuleId);
00536       if (ltIter != ltAcceptCounters_.end()) {
00537         ltCounter = ltIter->second;
00538         return ltCounter->getSampleCount();
00539       }
00540       else {
00541         return 0;
00542       }
00543     }
00544     else {
00545       ltIter = ltOutputCounters_.find(outputModuleId);
00546       if (ltIter != ltOutputCounters_.end()) {
00547         ltCounter = ltIter->second;
00548         return ltCounter->getSampleCount();
00549       }
00550       else {
00551         return 0;
00552       }
00553     }
00554   }
00555 }

double EventServer::getEventRate ( STATS_TIME_FRAME  timeFrame = SHORT_TERM_STATS,
STATS_SAMPLE_TYPE  sampleType = INPUT_STATS,
uint32  outputModuleId = 0,
double  currentTime = ForeverCounter::getCurrentTime() 
)

Returns the rate of events for the specified statistics types (short term vs.

long term; input vs. output).

Definition at line 561 of file EventServer.cc.

References INPUT_STATS, ltAcceptCounters_, ltInputCounters_, ltOutputCounters_, SHORT_TERM_STATS, stAcceptCounters_, stInputCounters_, stOutputCounters_, and UNIQUE_ACCEPT_STATS.

00565 {
00566   boost::shared_ptr<ForeverCounter> ltCounter;
00567   boost::shared_ptr<RollingIntervalCounter> stCounter;
00568   std::map<uint32, boost::shared_ptr<ForeverCounter> >::iterator ltIter;
00569   std::map<uint32, boost::shared_ptr<RollingIntervalCounter> >::iterator stIter;
00570 
00571   if (timeFrame == SHORT_TERM_STATS) {
00572     if (sampleType == INPUT_STATS) {
00573       stIter = stInputCounters_.find(outputModuleId);
00574       if (stIter != stInputCounters_.end()) {
00575         stCounter = stIter->second;
00576         return stCounter->getSampleRate(currentTime);
00577       }
00578       else {
00579         return 0;
00580       }
00581     }
00582     else if (sampleType == UNIQUE_ACCEPT_STATS) {
00583       stIter = stAcceptCounters_.find(outputModuleId);
00584       if (stIter != stAcceptCounters_.end()) {
00585         stCounter = stIter->second;
00586         return stCounter->getSampleRate(currentTime);
00587       }
00588       else {
00589         return 0;
00590       }
00591     }
00592     else {
00593       stIter = stOutputCounters_.find(outputModuleId);
00594       if (stIter != stOutputCounters_.end()) {
00595         stCounter = stIter->second;
00596         return stCounter->getSampleRate(currentTime);
00597       }
00598       else {
00599         return 0;
00600       }
00601     }
00602   }
00603   else {
00604     if (sampleType == INPUT_STATS) {
00605       ltIter = ltInputCounters_.find(outputModuleId);
00606       if (ltIter != ltInputCounters_.end()) {
00607         ltCounter = ltIter->second;
00608         return ltCounter->getSampleRate(currentTime);
00609       }
00610       else {
00611         return 0;
00612       }
00613     }
00614     else if (sampleType == UNIQUE_ACCEPT_STATS) {
00615       ltIter = ltAcceptCounters_.find(outputModuleId);
00616       if (ltIter != ltAcceptCounters_.end()) {
00617         ltCounter = ltIter->second;
00618         return ltCounter->getSampleRate(currentTime);
00619       }
00620       else {
00621         return 0;
00622       }
00623     }
00624     else {
00625       ltIter = ltOutputCounters_.find(outputModuleId);
00626       if (ltIter != ltOutputCounters_.end()) {
00627         ltCounter = ltIter->second;
00628         return ltCounter->getSampleRate(currentTime);
00629       }
00630       else {
00631         return 0;
00632       }
00633     }
00634   }
00635 }

std::string stor::EventServer::getHLTOutputSelection (  )  const [inline]

Definition at line 69 of file EventServer.h.

References hltOutputSelection_.

00069 { return hltOutputSelection_; }

double EventServer::getInternalTime ( STATS_TIME_FRAME  timeFrame = SHORT_TERM_STATS,
STATS_TIMING_TYPE  timingType = CPUTIME,
double  currentTime = ForeverCounter::getCurrentTime() 
)

Returns the amount of time spent processing events inside the event server for the specified time frame (short or long term) and timing type (CPU time or real time).

Definition at line 804 of file EventServer.cc.

References CPUTIME, longTermInsideCPUTimeCounter_, longTermInsideRealTimeCounter_, SHORT_TERM_STATS, shortTermInsideCPUTimeCounter_, and shortTermInsideRealTimeCounter_.

00807 {
00808   if (timeFrame == SHORT_TERM_STATS) {
00809     if (timingType == CPUTIME) {
00810       return shortTermInsideCPUTimeCounter_->getValueSum(currentTime);
00811     }
00812     else {
00813       return shortTermInsideRealTimeCounter_->getValueSum(currentTime);
00814     }
00815   }
00816   else {
00817     if (timingType == CPUTIME) {
00818       return longTermInsideCPUTimeCounter_->getValueSum();
00819     }
00820     else {
00821       return longTermInsideRealTimeCounter_->getValueSum();
00822     }
00823   }
00824 }

double stor::EventServer::getMaxDataRate (  )  const [inline]

Definition at line 68 of file EventServer.h.

References maxDataRate_.

00068 { return maxDataRate_; }

double stor::EventServer::getMaxEventRate (  )  const [inline]

Definition at line 67 of file EventServer.h.

References maxEventRate_.

00067 { return maxEventRate_; }

int stor::EventServer::getSelectionTableStringSize (  )  [inline]

Definition at line 61 of file EventServer.h.

References selTableStringSize_.

00062     {
00063       return selTableStringSize_;
00064     }

std::map<std::string, Strings> stor::EventServer::getStreamSelectionTable (  )  [inline]

Definition at line 57 of file EventServer.h.

References streamSelectionTable_.

00058     {
00059       return streamSelectionTable_;
00060     }

double EventServer::getTimeFraction ( STATS_TIME_FRAME  timeFrame = SHORT_TERM_STATS,
STATS_TIMING_TYPE  timingType = CPUTIME,
double  currentTime = ForeverCounter::getCurrentTime() 
)

Returns the fraction of time spent processing events inside the event server for the specified time frame (short or long term) and timing type (CPU time or real time).

Definition at line 874 of file EventServer.cc.

References CPUTIME, longTermInsideCPUTimeCounter_, longTermInsideRealTimeCounter_, longTermOutsideCPUTimeCounter_, longTermOutsideRealTimeCounter_, SHORT_TERM_STATS, shortTermInsideCPUTimeCounter_, shortTermInsideRealTimeCounter_, shortTermOutsideCPUTimeCounter_, and shortTermOutsideRealTimeCounter_.

00877 {
00878   if (timeFrame == SHORT_TERM_STATS) {
00879     if (timingType == CPUTIME) {
00880       double insideTime =
00881         shortTermInsideCPUTimeCounter_->getValueSum(currentTime);
00882       double outsideTime =
00883         shortTermOutsideCPUTimeCounter_->getValueSum(currentTime);
00884       if (outsideTime > 0.0) {
00885         return (insideTime / (insideTime + outsideTime));
00886       }
00887       else {
00888         return 0.0;
00889       }
00890     }
00891     else {
00892       double insideTime =
00893         shortTermInsideRealTimeCounter_->getValueSum(currentTime);
00894       double outsideTime =
00895         shortTermOutsideRealTimeCounter_->getValueSum(currentTime);
00896       if (outsideTime > 0.0) {
00897         return (insideTime / (insideTime + outsideTime));
00898       }
00899       else {
00900         return 0.0;
00901       }
00902     }
00903   }
00904   else {
00905     if (timingType == CPUTIME) {
00906       double insideTime =
00907         longTermInsideCPUTimeCounter_->getValueSum();
00908       double outsideTime =
00909         longTermOutsideCPUTimeCounter_->getValueSum();
00910       if (outsideTime > 0.0) {
00911         return (insideTime / (insideTime + outsideTime));
00912       }
00913       else {
00914         return 0.0;
00915       }
00916     }
00917     else {
00918       double insideTime =
00919         longTermInsideRealTimeCounter_->getValueSum();
00920       double outsideTime =
00921         longTermOutsideRealTimeCounter_->getValueSum();
00922       if (outsideTime > 0.0) {
00923         return (insideTime / (insideTime + outsideTime));
00924       }
00925       else {
00926         return 0.0;
00927       }
00928     }
00929   }
00930 }

double EventServer::getTotalTime ( STATS_TIME_FRAME  timeFrame = SHORT_TERM_STATS,
STATS_TIMING_TYPE  timingType = CPUTIME,
double  currentTime = ForeverCounter::getCurrentTime() 
)

Returns the total time used by the current process (both inside and outside the event server) for the specified time frame (short or long term) and timing type (CPU time or real time).

Definition at line 831 of file EventServer.cc.

References CPUTIME, longTermInsideCPUTimeCounter_, longTermInsideRealTimeCounter_, longTermOutsideCPUTimeCounter_, longTermOutsideRealTimeCounter_, SHORT_TERM_STATS, shortTermInsideCPUTimeCounter_, shortTermInsideRealTimeCounter_, shortTermOutsideCPUTimeCounter_, and shortTermOutsideRealTimeCounter_.

00834 {
00835   if (timeFrame == SHORT_TERM_STATS) {
00836     if (timingType == CPUTIME) {
00837       double insideTime =
00838         shortTermInsideCPUTimeCounter_->getValueSum(currentTime);
00839       double outsideTime =
00840         shortTermOutsideCPUTimeCounter_->getValueSum(currentTime);
00841       return (insideTime + outsideTime);
00842     }
00843     else {
00844       double insideTime =
00845         shortTermInsideRealTimeCounter_->getValueSum(currentTime);
00846       double outsideTime =
00847         shortTermOutsideRealTimeCounter_->getValueSum(currentTime);
00848       return (insideTime + outsideTime);
00849     }
00850   }
00851   else {
00852     if (timingType == CPUTIME) {
00853       double insideTime =
00854         longTermInsideCPUTimeCounter_->getValueSum();
00855       double outsideTime =
00856         longTermOutsideCPUTimeCounter_->getValueSum();
00857       return (insideTime + outsideTime);
00858     }
00859     else {
00860       double insideTime =
00861         longTermInsideRealTimeCounter_->getValueSum();
00862       double outsideTime =
00863         longTermOutsideRealTimeCounter_->getValueSum();
00864       return (insideTime + outsideTime);
00865     }
00866   }
00867 }

void EventServer::processEvent ( const EventMsgView eventView  ) 

Processes the specified event.

This includes checking whether the event is allowed to be delivered to consumers based on the maximum event rate specified in the constructor, checking if any consumers are ready to receive events, checking if any consumers are interested in this specific event, making a local copy of the event, and saving the event to be delivered to consumers.

Definition at line 128 of file EventServer.cc.

References consumerTable_, edmNew::copy(), edm::CPUTimer::cpuTime(), disconnectedConsumerTestCounter_, lat::endl(), EventMsgView::event(), FDEBUG, getConsumer(), stor::BaseCounter::getCurrentTime(), hltOutputModuleId_, insideTimer_, longTermInsideCPUTimeCounter_, longTermInsideRealTimeCounter_, longTermOutsideCPUTimeCounter_, longTermOutsideRealTimeCounter_, ltAcceptCounters_, ltInputCounters_, ltOutputCounters_, max, maxDataRate_, maxEventRate_, NULL, EventMsgView::outModId(), outsideTimer_, edm::CPUTimer::realTime(), edm::CPUTimer::reset(), runFairShareAlgo_, shortTermInsideCPUTimeCounter_, shortTermInsideRealTimeCounter_, shortTermOutsideCPUTimeCounter_, shortTermOutsideRealTimeCounter_, EventMsgView::size(), source, stAcceptCounters_, edm::CPUTimer::start(), EventMsgView::startAddress(), stInputCounters_, edm::CPUTimer::stop(), stOutputCounters_, and target.

00129 {
00130   // do nothing if the event is empty
00131   if (eventView.size() == 0) {return;}
00132 
00133   boost::shared_ptr<ForeverCounter> ltCounter;
00134   boost::shared_ptr<RollingIntervalCounter> stCounter;
00135   std::map<uint32, boost::shared_ptr<ForeverCounter> >::iterator ltIter;
00136   std::map<uint32, boost::shared_ptr<RollingIntervalCounter> >::iterator stIter;
00137 
00138   // stop the timer that we use to measure CPU and real time outside the ES
00139   outsideTimer_.stop();
00140 
00141   // stop the timer that we use to measure CPU and real time inside the ES
00142   insideTimer_.start();
00143 
00144   // add the event to our statistics for events that are input to the ES
00145   double sizeInMB = static_cast<double>(eventView.size()) / 1048576.0;
00146   double now = BaseCounter::getCurrentTime();
00147   uint32 outputModuleId = eventView.outModId();
00148   // fetch (or create) the correct long term counter for the output module
00149   ltIter = ltInputCounters_.find(outputModuleId);
00150   if (ltIter == ltInputCounters_.end()) {
00151     ltCounter.reset(new ForeverCounter());
00152     ltInputCounters_[outputModuleId] = ltCounter;
00153   }
00154   else {
00155     ltCounter = ltIter->second;
00156   }
00157   // fetch (or create) the correct short term counter for the output module
00158   stIter = stInputCounters_.find(outputModuleId);
00159   if (stIter == stInputCounters_.end()) {
00160     stCounter.reset(new RollingIntervalCounter(180,5,20));
00161     stInputCounters_[outputModuleId] = stCounter;
00162   }
00163   else {
00164     stCounter = stIter->second;
00165   }
00166   ltCounter->addSample(sizeInMB);
00167   stCounter->addSample(sizeInMB, now);
00168 
00169   // the event must be from the correct HLT output module
00170   if (outputModuleId != hltOutputModuleId_) {
00171     // track timer statistics and start/stop timers as appropriate
00172     insideTimer_.stop();
00173     longTermInsideCPUTimeCounter_->addSample(insideTimer_.cpuTime());
00174     shortTermInsideCPUTimeCounter_->addSample(insideTimer_.cpuTime(), now);
00175     longTermInsideRealTimeCounter_->addSample(insideTimer_.realTime());
00176     shortTermInsideRealTimeCounter_->addSample(insideTimer_.realTime(), now);
00177     longTermOutsideCPUTimeCounter_->addSample(outsideTimer_.cpuTime());
00178     shortTermOutsideCPUTimeCounter_->addSample(outsideTimer_.cpuTime(), now);
00179     longTermOutsideRealTimeCounter_->addSample(outsideTimer_.realTime());
00180     shortTermOutsideRealTimeCounter_->addSample(outsideTimer_.realTime(), now);
00181     outsideTimer_.reset();
00182     insideTimer_.reset();
00183     outsideTimer_.start();
00184     return;
00185   }
00186 
00187   // if we're not running the fair-share algorithm, 
00188   // prescale events based on the input event and data rates
00189   if (! runFairShareAlgo_) {
00190     double eventRate = stCounter->getSampleRate(now);
00191     double dataRate = stCounter->getValueRate(now);
00192     double eventRatePrescale = eventRate / maxEventRate_;
00193     double dataRatePrescale = dataRate / maxDataRate_;
00194     double effectivePrescale = std::max(eventRatePrescale, dataRatePrescale);
00195     if (effectivePrescale > 1.0) {
00196       double instantRatio = 1.0 / effectivePrescale;
00197       double randValue = (*generator_)();
00198       if (randValue > instantRatio) {
00199         // track timer statistics and start/stop timers as appropriate
00200         insideTimer_.stop();
00201         longTermInsideCPUTimeCounter_->addSample(insideTimer_.cpuTime());
00202         shortTermInsideCPUTimeCounter_->addSample(insideTimer_.cpuTime(), now);
00203         longTermInsideRealTimeCounter_->addSample(insideTimer_.realTime());
00204         shortTermInsideRealTimeCounter_->addSample(insideTimer_.realTime(), now);
00205         longTermOutsideCPUTimeCounter_->addSample(outsideTimer_.cpuTime());
00206         shortTermOutsideCPUTimeCounter_->addSample(outsideTimer_.cpuTime(), now);
00207         longTermOutsideRealTimeCounter_->addSample(outsideTimer_.realTime());
00208         shortTermOutsideRealTimeCounter_->addSample(outsideTimer_.realTime(), now);
00209         outsideTimer_.reset();
00210         insideTimer_.reset();
00211         outsideTimer_.start();
00212         return;
00213       }
00214     }
00215   }
00216 
00217   // loop over the consumers in our list, and for each one check whether
00218   // it is ready for an event and if it wants this specific event.  If so,
00219   // create a local copy of the event (if not already done) and pass it
00220   // to the consumer pipe.
00221 
00222   // determine which consumers are interested in the event
00223   std::vector<uint32> candidateList;
00224   boost::shared_ptr< vector<char> > bufPtr;
00225   std::map< uint32, boost::shared_ptr<ConsumerPipe> >::const_iterator consIter;
00226   for (consIter = consumerTable_.begin();
00227        consIter != consumerTable_.end();
00228        consIter++)
00229   {
00230     // test if the consumer is ready and wants the event
00231     boost::shared_ptr<ConsumerPipe> consPipe = consIter->second;
00232     FDEBUG(5) << "Checking if consumer " << consPipe->getConsumerId() <<
00233       " wants event " << eventView.event() << std::endl;
00234     if (consPipe->wantsEvent(eventView) &&
00235         consPipe->isReadyForEvent(now))
00236     {
00237       candidateList.push_back(consPipe->getConsumerId());
00238       consPipe->wasConsidered(now);
00239     }
00240   }
00241 
00242   // do nothing if there are no candidates
00243   if (candidateList.size() == 0) {
00244     // track timer statistics and start/stop timers as appropriate
00245     insideTimer_.stop();
00246     longTermInsideCPUTimeCounter_->addSample(insideTimer_.cpuTime());
00247     shortTermInsideCPUTimeCounter_->addSample(insideTimer_.cpuTime(), now);
00248     longTermInsideRealTimeCounter_->addSample(insideTimer_.realTime());
00249     shortTermInsideRealTimeCounter_->addSample(insideTimer_.realTime(), now);
00250     longTermOutsideCPUTimeCounter_->addSample(outsideTimer_.cpuTime());
00251     shortTermOutsideCPUTimeCounter_->addSample(outsideTimer_.cpuTime(), now);
00252     longTermOutsideRealTimeCounter_->addSample(outsideTimer_.realTime());
00253     shortTermOutsideRealTimeCounter_->addSample(outsideTimer_.realTime(), now);
00254     outsideTimer_.reset();
00255     insideTimer_.reset();
00256     outsideTimer_.start();
00257     return;
00258   }
00259 
00260   // determine which of the candidate consumers are allowed
00261   // to receive another event at this time
00262   std::vector<uint32> allowedList;
00263   //if (runFairShareAlgo_) {
00264   //  allowedList = rateLimiter_->getAllowedConsumersFromList(sizeInMB,
00265   //                                                          candidateList);
00266   //}
00267   //else {
00268     allowedList = candidateList;
00269   //}
00270 
00271   // send the event to the allowed consumers
00272   for (uint32 idx = 0; idx < allowedList.size(); ++idx)
00273   {
00274     uint32 consumerId = allowedList[idx];
00275 
00276     // check if we need to make a local copy of the event
00277     if (bufPtr.get() == NULL)
00278     {
00279       FDEBUG(5) << "Creating a buffer for event " <<
00280         eventView.event() << std::endl;
00281 
00282       // create a local buffer of the appropriate size
00283       boost::shared_ptr< vector<char> >
00284         tmpBufPtr(new vector<char>(eventView.size()));
00285 
00286       // copy the data to the local buffer
00287       unsigned char *target = (unsigned char *) &(*tmpBufPtr)[0];
00288       unsigned char *source = eventView.startAddress();
00289       int dataSize = eventView.size();
00290       std::copy(source, source+dataSize, target);
00291 
00292       // switch buffers
00293       bufPtr.swap(tmpBufPtr);
00294 
00295       // add the event to our statistics for "unique accept" events
00296       ltIter = ltAcceptCounters_.find(outputModuleId);
00297       if (ltIter == ltAcceptCounters_.end()) {
00298         ltCounter.reset(new ForeverCounter());
00299         ltAcceptCounters_[outputModuleId] = ltCounter;
00300       }
00301       else {
00302         ltCounter = ltIter->second;
00303       }
00304       stIter = stAcceptCounters_.find(outputModuleId);
00305       if (stIter == stAcceptCounters_.end()) {
00306         stCounter.reset(new RollingIntervalCounter(180,5,20));
00307         stAcceptCounters_[outputModuleId] = stCounter;
00308       }
00309       else {
00310         stCounter = stIter->second;
00311       }
00312       ltCounter->addSample(sizeInMB);
00313       stCounter->addSample(sizeInMB, now);
00314     }
00315 
00316     // add the event to the consumer pipe
00317     boost::shared_ptr<ConsumerPipe> consPipe = getConsumer(consumerId);
00318     consPipe->putEvent(bufPtr);
00319 
00320     // add the event to our statistics for "output" events
00321     // Adding the stats once per consumer is (currently) believed
00322     // to give a more accurate picture of what is being sent out.
00323     // (Even though we only have one copy of the event internally,
00324     // it uses up bandwidth N times for N consumers.)
00325     ltIter = ltOutputCounters_.find(outputModuleId);
00326     if (ltIter == ltOutputCounters_.end()) {
00327       ltCounter.reset(new ForeverCounter());
00328       ltOutputCounters_[outputModuleId] = ltCounter;
00329     }
00330     else {
00331       ltCounter = ltIter->second;
00332     }
00333     stIter = stOutputCounters_.find(outputModuleId);
00334     if (stIter == stOutputCounters_.end()) {
00335       stCounter.reset(new RollingIntervalCounter(180,5,20));
00336       stOutputCounters_[outputModuleId] = stCounter;
00337     }
00338     else {
00339       stCounter = stIter->second;
00340     }
00341     ltCounter->addSample(sizeInMB);
00342     stCounter->addSample(sizeInMB, now);
00343   }
00344 
00345   // periodically check for disconnected consumers
00346   disconnectedConsumerTestCounter_++;
00347   if (disconnectedConsumerTestCounter_ >= 500)
00348   {
00349     // reset counter
00350     disconnectedConsumerTestCounter_ = 0;
00351 
00352     // determine which consumers have disconnected
00353     std::vector<uint32> disconnectList;
00354     std::map< uint32, boost::shared_ptr<ConsumerPipe> >::const_iterator consIter;
00355     for (consIter = consumerTable_.begin();
00356          consIter != consumerTable_.end();
00357          consIter++)
00358     {
00359       boost::shared_ptr<ConsumerPipe> consPipe = consIter->second;
00360       FDEBUG(5) << "Checking if consumer " << consPipe->getConsumerId() <<
00361         " has disconnected " << std::endl;
00362       if (consPipe->isDisconnected())
00363       {
00364         disconnectList.push_back(consIter->first);
00365       }
00366     }
00367 
00368     // remove disconnected consumers from the consumer table
00369     std::vector<uint32>::const_iterator listIter;
00370     for (listIter = disconnectList.begin();
00371          listIter != disconnectList.end();
00372          listIter++)
00373     {
00374       uint32 consumerId = *listIter;
00375       consumerTable_.erase(consumerId);
00376 
00377       // remove the consumer from the rateLimiter instance so that it is
00378       // no longer considered for a fair share of the allowed bandwidth
00379       //rateLimiter_->removeConsumer(consumerId);
00380     }
00381   }
00382 
00383   // track timer statistics and start/stop timers as appropriate
00384   now = BaseCounter::getCurrentTime();
00385   insideTimer_.stop();
00386   longTermInsideCPUTimeCounter_->addSample(insideTimer_.cpuTime());
00387   shortTermInsideCPUTimeCounter_->addSample(insideTimer_.cpuTime(), now);
00388   longTermInsideRealTimeCounter_->addSample(insideTimer_.realTime());
00389   shortTermInsideRealTimeCounter_->addSample(insideTimer_.realTime(), now);
00390   longTermOutsideCPUTimeCounter_->addSample(outsideTimer_.cpuTime());
00391   shortTermOutsideCPUTimeCounter_->addSample(outsideTimer_.cpuTime(), now);
00392   longTermOutsideRealTimeCounter_->addSample(outsideTimer_.realTime());
00393   shortTermOutsideRealTimeCounter_->addSample(outsideTimer_.realTime(), now);
00394   outsideTimer_.reset();
00395   insideTimer_.reset();
00396   outsideTimer_.start();
00397 }

void EventServer::setStreamSelectionTable ( std::map< std::string, Strings > const &  selTable  ) 

Definition at line 432 of file EventServer.cc.

References selTableStringSize_, python::StorageManager_cfg::streamLabel, and streamSelectionTable_.

00433 {
00434   streamSelectionTable_ = selTable;
00435   selTableStringSize_ = 0;
00436   std::map<std::string, Strings>::const_iterator mapIter;
00437   for (mapIter = selTable.begin(); mapIter != selTable.end(); mapIter++)
00438   {
00439     std::string streamLabel = mapIter->first;
00440     selTableStringSize_ += streamLabel.size();
00441     Strings selectionList = mapIter->second;
00442     for (unsigned int idx = 0; idx < selectionList.size(); idx++)
00443     {
00444       std::string selection = selectionList[idx];
00445       selTableStringSize_ += selection.size();
00446     }
00447   }
00448 }

Strings EventServer::updateTriggerSelectionForStreams ( Strings const &  selectionList  ) 

Definition at line 450 of file EventServer.cc.

References python::StorageManager_cfg::streamLabel, and streamSelectionTable_.

00451 {
00452   Strings modifiedList;
00453   for (unsigned int idx = 0; idx < selectionList.size(); idx++) {
00454     std::string selection = selectionList[idx];
00455     std::string lcSelection = boost::algorithm::to_lower_copy(selection);
00456     if (lcSelection.find("stream", 0) == 0) {
00457       std::string streamLabel = selection.substr(6);
00458       std::map<std::string, Strings>::const_iterator mapIter =
00459         streamSelectionTable_.find(streamLabel);
00460       if (mapIter != streamSelectionTable_.end()) {
00461         Strings streamSelectionList = mapIter->second;
00462         for (unsigned int jdx = 0; jdx < streamSelectionList.size(); jdx++) {
00463           modifiedList.push_back(streamSelectionList.at(jdx));
00464         }
00465       }
00466       else {
00467         modifiedList.push_back(selection);
00468       }
00469     }
00470     else {
00471       modifiedList.push_back(selection);
00472     }
00473   }
00474   return modifiedList;
00475 }


Member Data Documentation

boost::mt19937 stor::EventServer::baseGenerator_ [private]

Definition at line 137 of file EventServer.h.

Referenced by EventServer().

std::map< uint32, boost::shared_ptr<ConsumerPipe> > stor::EventServer::consumerTable_ [private]

Definition at line 113 of file EventServer.h.

Referenced by addConsumer(), clearQueue(), getConsumer(), getConsumerTable(), getEvent(), and processEvent().

int stor::EventServer::disconnectedConsumerTestCounter_ [private]

Definition at line 110 of file EventServer.h.

Referenced by EventServer(), and processEvent().

boost::shared_ptr< boost::uniform_01<boost::mt19937> > stor::EventServer::generator_ [private]

Definition at line 138 of file EventServer.h.

Referenced by EventServer().

uint32 stor::EventServer::hltOutputModuleId_ [private]

Definition at line 103 of file EventServer.h.

Referenced by EventServer(), and processEvent().

std::string stor::EventServer::hltOutputSelection_ [private]

Definition at line 102 of file EventServer.h.

Referenced by EventServer(), and getHLTOutputSelection().

edm::CPUTimer stor::EventServer::insideTimer_ [private]

Definition at line 127 of file EventServer.h.

Referenced by EventServer(), and processEvent().

boost::shared_ptr<ForeverCounter> stor::EventServer::longTermInsideCPUTimeCounter_ [private]

Definition at line 128 of file EventServer.h.

Referenced by EventServer(), getInternalTime(), getTimeFraction(), getTotalTime(), and processEvent().

boost::shared_ptr<ForeverCounter> stor::EventServer::longTermInsideRealTimeCounter_ [private]

Definition at line 130 of file EventServer.h.

Referenced by EventServer(), getInternalTime(), getTimeFraction(), getTotalTime(), and processEvent().

boost::shared_ptr<ForeverCounter> stor::EventServer::longTermOutsideCPUTimeCounter_ [private]

Definition at line 132 of file EventServer.h.

Referenced by EventServer(), getTimeFraction(), getTotalTime(), and processEvent().

boost::shared_ptr<ForeverCounter> stor::EventServer::longTermOutsideRealTimeCounter_ [private]

Definition at line 134 of file EventServer.h.

Referenced by EventServer(), getTimeFraction(), getTotalTime(), and processEvent().

std::map<uint32, boost::shared_ptr<ForeverCounter> > stor::EventServer::ltAcceptCounters_ [private]

Definition at line 122 of file EventServer.h.

Referenced by EventServer(), getDataRate(), getDuration(), getEventCount(), getEventRate(), and processEvent().

std::map<uint32, boost::shared_ptr<ForeverCounter> > stor::EventServer::ltInputCounters_ [private]

Definition at line 120 of file EventServer.h.

Referenced by EventServer(), getDataRate(), getDuration(), getEventCount(), getEventRate(), and processEvent().

std::map<uint32, boost::shared_ptr<ForeverCounter> > stor::EventServer::ltOutputCounters_ [private]

Definition at line 124 of file EventServer.h.

Referenced by EventServer(), getDataRate(), getDuration(), getEventCount(), getEventRate(), and processEvent().

double stor::EventServer::maxDataRate_ [private]

Definition at line 101 of file EventServer.h.

Referenced by EventServer(), getMaxDataRate(), and processEvent().

double stor::EventServer::maxEventRate_ [private]

Definition at line 100 of file EventServer.h.

Referenced by EventServer(), getMaxEventRate(), and processEvent().

edm::CPUTimer stor::EventServer::outsideTimer_ [private]

Definition at line 126 of file EventServer.h.

Referenced by EventServer(), and processEvent().

boost::shared_ptr<RateLimiter> stor::EventServer::rateLimiter_ [private]

Definition at line 107 of file EventServer.h.

bool stor::EventServer::runFairShareAlgo_ [private]

Definition at line 104 of file EventServer.h.

Referenced by EventServer(), and processEvent().

int stor::EventServer::selTableStringSize_ [private]

Definition at line 117 of file EventServer.h.

Referenced by EventServer(), getSelectionTableStringSize(), and setStreamSelectionTable().

boost::shared_ptr<RollingIntervalCounter> stor::EventServer::shortTermInsideCPUTimeCounter_ [private]

Definition at line 129 of file EventServer.h.

Referenced by EventServer(), getInternalTime(), getTimeFraction(), getTotalTime(), and processEvent().

boost::shared_ptr<RollingIntervalCounter> stor::EventServer::shortTermInsideRealTimeCounter_ [private]

Definition at line 131 of file EventServer.h.

Referenced by EventServer(), getInternalTime(), getTimeFraction(), getTotalTime(), and processEvent().

boost::shared_ptr<RollingIntervalCounter> stor::EventServer::shortTermOutsideCPUTimeCounter_ [private]

Definition at line 133 of file EventServer.h.

Referenced by EventServer(), getTimeFraction(), getTotalTime(), and processEvent().

boost::shared_ptr<RollingIntervalCounter> stor::EventServer::shortTermOutsideRealTimeCounter_ [private]

Definition at line 135 of file EventServer.h.

Referenced by EventServer(), getTimeFraction(), getTotalTime(), and processEvent().

std::map<uint32, boost::shared_ptr<RollingIntervalCounter> > stor::EventServer::stAcceptCounters_ [private]

Definition at line 123 of file EventServer.h.

Referenced by EventServer(), getDataRate(), getDuration(), getEventCount(), getEventRate(), and processEvent().

std::map<uint32, boost::shared_ptr<RollingIntervalCounter> > stor::EventServer::stInputCounters_ [private]

Definition at line 121 of file EventServer.h.

Referenced by EventServer(), getDataRate(), getDuration(), getEventCount(), getEventRate(), and processEvent().

std::map<uint32, boost::shared_ptr<RollingIntervalCounter> > stor::EventServer::stOutputCounters_ [private]

Definition at line 125 of file EventServer.h.

Referenced by EventServer(), getDataRate(), getDuration(), getEventCount(), getEventRate(), and processEvent().

std::map<std::string, Strings> stor::EventServer::streamSelectionTable_ [private]

Definition at line 116 of file EventServer.h.

Referenced by getStreamSelectionTable(), setStreamSelectionTable(), and updateTriggerSelectionForStreams().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:52:51 2009 for CMSSW by  doxygen 1.5.4