CMS 3D CMS Logo

Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes

smproxy::DataRetrieverMonitorCollection Class Reference

#include <DataRetrieverMonitorCollection.h>

Inheritance diagram for smproxy::DataRetrieverMonitorCollection:
stor::MonitorCollection

List of all members.

Classes

struct  DataRetrieverMQ
class  EventTypeMqMap
struct  EventTypeStats
struct  SummaryStats

Public Types

typedef std::map< std::string,
stor::MonitoredQuantity::Stats
ConnectionStats
enum  ConnectionStatus { CONNECTED, CONNECTION_FAILED, DISCONNECTED, UNKNOWN }
typedef std::vector
< EventTypeStats
EventTypeStatList

Public Member Functions

ConnectionID addNewConnection (const stor::RegPtr)
bool addRetrievedSample (const ConnectionID &, const unsigned int &size)
 DataRetrieverMonitorCollection (const stor::utils::Duration_t &updateInterval)
bool getEventTypeStatsForConnection (const ConnectionID &, EventTypeStats &)
void getStatsByConnection (ConnectionStats &) const
void getStatsByEventTypes (EventTypeStatList &) const
void getSummaryStats (SummaryStats &) const
bool setConnectionStatus (const ConnectionID &, const ConnectionStatus &)

Private Types

typedef std::map< std::string,
stor::MonitoredQuantityPtr
ConnectionMqMap
typedef boost::shared_ptr
< DataRetrieverMQ
DataRetrieverMQPtr
typedef std::map< ConnectionID,
DataRetrieverMQPtr
RetrieverMqMap

Private Member Functions

 DataRetrieverMonitorCollection (DataRetrieverMonitorCollection const &)
virtual void do_calculateStatistics ()
virtual void do_reset ()
DataRetrieverMonitorCollectionoperator= (DataRetrieverMonitorCollection const &)

Private Attributes

ConnectionMqMap connectionMqMap_
EventTypeMqMap eventTypeMqMap_
ConnectionID nextConnectionId_
RetrieverMqMap retrieverMqMap_
boost::mutex statsMutex_
stor::MonitoredQuantity totalSize_
const stor::utils::Duration_t updateInterval_

Detailed Description

A collection of MonitoredQuantities related to data retrieval

Author:
mommsen
Revision:
1.1.4.2
Date:
2011/03/07 12:01:12

Definition at line 33 of file DataRetrieverMonitorCollection.h.


Member Typedef Documentation

Definition at line 130 of file DataRetrieverMonitorCollection.h.

Definition at line 50 of file DataRetrieverMonitorCollection.h.

Definition at line 126 of file DataRetrieverMonitorCollection.h.

Definition at line 60 of file DataRetrieverMonitorCollection.h.

Definition at line 127 of file DataRetrieverMonitorCollection.h.


Member Enumeration Documentation

Enumerator:
CONNECTED 
CONNECTION_FAILED 
DISCONNECTED 
UNKNOWN 

Definition at line 37 of file DataRetrieverMonitorCollection.h.


Constructor & Destructor Documentation

smproxy::DataRetrieverMonitorCollection::DataRetrieverMonitorCollection ( const stor::utils::Duration_t updateInterval) [explicit]

Definition at line 17 of file DataRetrieverMonitorCollection.cc.

    :
  MonitorCollection(updateInterval),
  totalSize_(updateInterval, boost::posix_time::seconds(60)),
  updateInterval_(updateInterval),
  eventTypeMqMap_(updateInterval)
  {}
smproxy::DataRetrieverMonitorCollection::DataRetrieverMonitorCollection ( DataRetrieverMonitorCollection const &  ) [private]

Member Function Documentation

ConnectionID smproxy::DataRetrieverMonitorCollection::addNewConnection ( const stor::RegPtr  regPtr)

Add a new server connection. Returns an unique connection ID.

Definition at line 28 of file DataRetrieverMonitorCollection.cc.

References seconds().

  {
    boost::mutex::scoped_lock sl(statsMutex_);
    ++nextConnectionId_;
    
    DataRetrieverMQPtr dataRetrieverMQ( new DataRetrieverMQ(regPtr, updateInterval_) );
    retrieverMqMap_.insert(
      RetrieverMqMap::value_type(nextConnectionId_, dataRetrieverMQ)
    );
    
    eventTypeMqMap_.insert(regPtr);
    
    connectionMqMap_.insert(ConnectionMqMap::value_type(regPtr->sourceURL(),
        stor::MonitoredQuantityPtr(
          new stor::MonitoredQuantity(updateInterval_, boost::posix_time::seconds(60))
        )
      ));
    
    return nextConnectionId_;
  }
bool smproxy::DataRetrieverMonitorCollection::addRetrievedSample ( const ConnectionID connectionId,
const unsigned int &  size 
)

Add a retrieved sample in Bytes from the given connection. Returns false if the ConnectionID is unknown.

Definition at line 86 of file DataRetrieverMonitorCollection.cc.

References findQualityFiles::size, and reco_skim_cfg_mod::sourceURL.

  {
    boost::mutex::scoped_lock sl(statsMutex_);
    
    RetrieverMqMap::const_iterator retrieverPos = retrieverMqMap_.find(connectionId);
    if ( retrieverPos == retrieverMqMap_.end() ) return false;
    
    const double sizeKB = static_cast<double>(size) / 1024;
    retrieverPos->second->size_.addSample(sizeKB);
    
    const stor::RegPtr regPtr = retrieverPos->second->regPtr_;
    
    eventTypeMqMap_.addSample(regPtr, sizeKB);
    
    const std::string sourceURL = regPtr->sourceURL();
    ConnectionMqMap::const_iterator connectionPos = connectionMqMap_.find(sourceURL);
    connectionPos->second->addSample(sizeKB);
    
    totalSize_.addSample(sizeKB);
    
    return true;
  }
void smproxy::DataRetrieverMonitorCollection::do_calculateStatistics ( ) [private, virtual]

Implements stor::MonitorCollection.

Definition at line 168 of file DataRetrieverMonitorCollection.cc.

References smproxy::DataRetrieverMonitorCollection::EventTypeMqMap::calculateStatistics(), stor::MonitoredQuantity::calculateStatistics(), connectionMqMap_, eventTypeMqMap_, retrieverMqMap_, statsMutex_, and totalSize_.

  {
    boost::mutex::scoped_lock sl(statsMutex_);
    
    totalSize_.calculateStatistics();
    
    for (RetrieverMqMap::const_iterator it = retrieverMqMap_.begin(),
           itEnd = retrieverMqMap_.end(); it != itEnd; ++it)
    {
      it->second->size_.calculateStatistics();
    }
    
    for (ConnectionMqMap::const_iterator it = connectionMqMap_.begin(),
           itEnd = connectionMqMap_.end(); it != itEnd; ++it)
    {
      it->second->calculateStatistics();
    }
    
    eventTypeMqMap_.calculateStatistics();
  }
void smproxy::DataRetrieverMonitorCollection::do_reset ( ) [private, virtual]
bool smproxy::DataRetrieverMonitorCollection::getEventTypeStatsForConnection ( const ConnectionID connectionId,
EventTypeStats stats 
)

Put the event type statistics for the given consumer ID into the passed EventTypeStats. Return false if the connection ID is not found.

Definition at line 67 of file DataRetrieverMonitorCollection.cc.

References smproxy::DataRetrieverMonitorCollection::EventTypeStats::connectionStatus, pos, smproxy::DataRetrieverMonitorCollection::EventTypeStats::regPtr, and smproxy::DataRetrieverMonitorCollection::EventTypeStats::sizeStats.

  {
    boost::mutex::scoped_lock sl(statsMutex_);
    RetrieverMqMap::const_iterator pos = retrieverMqMap_.find(connectionId);
    
    if ( pos == retrieverMqMap_.end() ) return false;
    
    stats.regPtr = pos->second->regPtr_;
    stats.connectionStatus = pos->second->connectionStatus_;
    pos->second->size_.getStats(stats.sizeStats);
    
    return true;
  }
void smproxy::DataRetrieverMonitorCollection::getStatsByConnection ( ConnectionStats cs) const

Write the data retrieval statistics for each connection into the given struct.

Definition at line 134 of file DataRetrieverMonitorCollection.cc.

References connectionMqMap_, and statsMutex_.

  {
    boost::mutex::scoped_lock sl(statsMutex_);
    cs.clear();
    
    for (ConnectionMqMap::const_iterator it = connectionMqMap_.begin(),
           itEnd = connectionMqMap_.end(); it != itEnd; ++it)
    {
      stor::MonitoredQuantity::Stats stats;
      it->second->getStats(stats);
      cs.insert(ConnectionStats::value_type(it->first, stats));
    }
  }
void smproxy::DataRetrieverMonitorCollection::getStatsByEventTypes ( EventTypeStatList etsl) const

Write the data retrieval statistics for each event type request into the given struct.

Definition at line 149 of file DataRetrieverMonitorCollection.cc.

References smproxy::DataRetrieverMonitorCollection::EventTypeStats::connectionStatus, smproxy::DataRetrieverMonitorCollection::EventTypeStats::regPtr, retrieverMqMap_, smproxy::DataRetrieverMonitorCollection::EventTypeStats::sizeStats, python::multivaluedict::sort(), and statsMutex_.

  {
    boost::mutex::scoped_lock sl(statsMutex_);
    etsl.clear();
    
    for (RetrieverMqMap::const_iterator it = retrieverMqMap_.begin(),
           itEnd = retrieverMqMap_.end(); it != itEnd; ++it)
    {
      const DataRetrieverMQPtr mq = it->second;
      EventTypeStats stats;
      stats.regPtr = mq->regPtr_;
      stats.connectionStatus = mq->connectionStatus_;
      mq->size_.getStats(stats.sizeStats);
      etsl.push_back(stats);
    }
    std::sort(etsl.begin(), etsl.end());
  }
void smproxy::DataRetrieverMonitorCollection::getSummaryStats ( SummaryStats stats) const

Write the data retrieval summary statistics into the given struct.

Definition at line 113 of file DataRetrieverMonitorCollection.cc.

References smproxy::DataRetrieverMonitorCollection::SummaryStats::activeSMs, CONNECTED, eventTypeMqMap_, smproxy::DataRetrieverMonitorCollection::SummaryStats::eventTypeStats, stor::MonitoredQuantity::getStats(), smproxy::DataRetrieverMonitorCollection::EventTypeMqMap::getStats(), smproxy::DataRetrieverMonitorCollection::SummaryStats::registeredSMs, retrieverMqMap_, smproxy::DataRetrieverMonitorCollection::SummaryStats::sizeStats, statsMutex_, and totalSize_.

  {
    boost::mutex::scoped_lock sl(statsMutex_);
    
    stats.registeredSMs = 0;
    stats.activeSMs = 0;
    
    for (RetrieverMqMap::const_iterator it = retrieverMqMap_.begin(),
           itEnd = retrieverMqMap_.end(); it != itEnd; ++it)
    {
      ++stats.registeredSMs;
      if ( it->second->connectionStatus_ == CONNECTED )
        ++stats.activeSMs;
    }
    
    eventTypeMqMap_.getStats(stats.eventTypeStats);
    
    totalSize_.getStats(stats.sizeStats);
  }
DataRetrieverMonitorCollection& smproxy::DataRetrieverMonitorCollection::operator= ( DataRetrieverMonitorCollection const &  ) [private]
bool smproxy::DataRetrieverMonitorCollection::setConnectionStatus ( const ConnectionID connectionId,
const ConnectionStatus status 
)

Set status of given connection. Returns false if the ConnectionID is unknown.

Definition at line 53 of file DataRetrieverMonitorCollection.cc.

References pos, and ntuplemaker::status.

  {
    boost::mutex::scoped_lock sl(statsMutex_);
    RetrieverMqMap::const_iterator pos = retrieverMqMap_.find(connectionId);
    if ( pos == retrieverMqMap_.end() ) return false;
    pos->second->connectionStatus_ = status;
    return true;
  }

Member Data Documentation

Definition at line 134 of file DataRetrieverMonitorCollection.h.