CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
DQMBasicNet Class Reference

#include <DQMNet.h>

Inheritance diagram for DQMBasicNet:
DQMImplNet< DQMNet::Object > DQMNet

Public Member Functions

 DQMBasicNet (const std::string &appname="")
 
bool removeLocalExcept (const std::set< std::string > &known)
 
void reserveLocalSpace (uint32_t size)
 Give a hint of how much capacity to allocate for local objects. More...
 
void updateLocalObject (Object &o)
 
- Public Member Functions inherited from DQMImplNet< DQMNet::Object >
 DQMImplNet (const std::string &appname="")
 
 ~DQMImplNet (void)
 
- Public Member Functions inherited from DQMNet
void debug (bool doit)
 
void delay (int delay)
 
 DQMNet (const std::string &appname="")
 
void listenToCollector (const std::string &host, int port)
 
void lock (void)
 Acquire a lock on the DQM net layer. More...
 
void run (void)
 
void sendLocalChanges (void)
 
void shutdown (void)
 Stop the network layer and wait it to finish. More...
 
void staleObjectWaitLimit (lat::TimeSpan time)
 
void start (void)
 
void startLocalServer (int port)
 
void startLocalServer (const char *path)
 
void unlock (void)
 Release the lock on the DQM net layer. More...
 
void updateToCollector (const std::string &host, int port)
 
virtual ~DQMNet (void)
 

Private Attributes

ImplPeer * local_
 

Additional Inherited Members

- Public Types inherited from DQMImplNet< DQMNet::Object >
typedef std::set< std::string > DirMap
 
typedef __gnu_cxx::hash_set
< DQMNet::Object, HashOp,
HashEqual
ObjectMap
 
typedef std::map< lat::Socket
*, ImplPeer > 
PeerMap
 
- Public Types inherited from DQMNet
typedef std::vector< unsigned
char > 
DataBlob
 
typedef std::vector< QValueQReports
 
typedef std::vector< uint32_t > TagList
 
typedef std::list< WaitObjectWaitList
 
- Static Public Member Functions inherited from DQMNet
static size_t dqmhash (const void *key, size_t keylen)
 
static void packQualityData (std::string &into, const QReports &qr)
 
static bool setOrder (const CoreObject &a, const CoreObject &b)
 
static void unpackQualityData (QReports &qr, uint32_t &flags, const char *from)
 
- Static Public Attributes inherited from DQMNet
static const uint32_t DQM_MSG_GET_OBJECT = 3
 
static const uint32_t DQM_MSG_HELLO = 0
 
static const uint32_t DQM_MSG_LIST_OBJECTS = 2
 
static const uint32_t DQM_MSG_UPDATE_ME = 1
 
static const uint32_t DQM_PROP_ACCUMULATE = 0x00004000
 
static const uint32_t DQM_PROP_DEAD = 0x00080000
 
static const uint32_t DQM_PROP_EFFICIENCY_PLOT = 0x00200000
 
static const uint32_t DQM_PROP_HAS_REFERENCE = 0x00001000
 
static const uint32_t DQM_PROP_LUMI = 0x00040000
 
static const uint32_t DQM_PROP_NEW = 0x00010000
 
static const uint32_t DQM_PROP_RECEIVED = 0x00020000
 
static const uint32_t DQM_PROP_REPORT_ALARM
 
static const uint32_t DQM_PROP_REPORT_CLEAR = 0x00000000
 
static const uint32_t DQM_PROP_REPORT_ERROR = 0x00000100
 
static const uint32_t DQM_PROP_REPORT_MASK = 0x00000f00
 
static const uint32_t DQM_PROP_REPORT_OTHER = 0x00000400
 
static const uint32_t DQM_PROP_REPORT_WARN = 0x00000200
 
static const uint32_t DQM_PROP_RESET = 0x00008000
 
static const uint32_t DQM_PROP_STALE = 0x00100000
 
static const uint32_t DQM_PROP_TAGGED = 0x00002000
 
static const uint32_t DQM_PROP_TYPE_DATABLOB = 0x00000050
 
static const uint32_t DQM_PROP_TYPE_INT = 0x00000001
 
static const uint32_t DQM_PROP_TYPE_INVALID = 0x00000000
 
static const uint32_t DQM_PROP_TYPE_MASK = 0x000000ff
 
static const uint32_t DQM_PROP_TYPE_REAL = 0x00000002
 
static const uint32_t DQM_PROP_TYPE_SCALAR = 0x0000000f
 
static const uint32_t DQM_PROP_TYPE_STRING = 0x00000003
 
static const uint32_t DQM_PROP_TYPE_TH1D = 0x00000012
 
static const uint32_t DQM_PROP_TYPE_TH1F = 0x00000010
 
static const uint32_t DQM_PROP_TYPE_TH1S = 0x00000011
 
static const uint32_t DQM_PROP_TYPE_TH2D = 0x00000022
 
static const uint32_t DQM_PROP_TYPE_TH2F = 0x00000020
 
static const uint32_t DQM_PROP_TYPE_TH2S = 0x00000021
 
static const uint32_t DQM_PROP_TYPE_TH3D = 0x00000032
 
static const uint32_t DQM_PROP_TYPE_TH3F = 0x00000030
 
static const uint32_t DQM_PROP_TYPE_TH3S = 0x00000031
 
static const uint32_t DQM_PROP_TYPE_TPROF = 0x00000040
 
static const uint32_t DQM_PROP_TYPE_TPROF2D = 0x00000041
 
static const uint32_t DQM_REPLY_LIST_BEGIN = 101
 
static const uint32_t DQM_REPLY_LIST_END = 102
 
static const uint32_t DQM_REPLY_NONE = 103
 
static const uint32_t DQM_REPLY_OBJECT = 104
 
static const uint32_t MAX_PEER_WAITREQS = 128
 
- Protected Member Functions inherited from DQMImplNet< DQMNet::Object >
virtual PeercreatePeer (lat::Socket *s)
 
virtual ObjectfindObject (Peer *p, const std::string &name, Peer **owner=0)
 
virtual PeergetPeer (lat::Socket *s)
 
virtual ObjectmakeObject (Peer *p, const std::string &name)
 
virtual void markObjectsDead (Peer *p)
 
virtual void purgeDeadObjects (Peer *p)
 
virtual void removePeer (Peer *p, lat::Socket *s)
 
virtual void sendObjectListToPeer (Bucket *msg, bool all, bool clear)
 Send all objects to a peer and optionally mark sent objects old. More...
 
virtual void sendObjectListToPeers (bool all)
 
virtual void updatePeerMasks (void)
 
- Protected Member Functions inherited from DQMNet
std::ostream & logme (void)
 
virtual bool onMessage (Bucket *msg, Peer *p, unsigned char *data, size_t len)
 
virtual void releaseFromWait (Bucket *msg, WaitObject &w, Object *o)
 
virtual void sendObjectToPeer (Bucket *msg, Object &o, bool data)
 
virtual bool shouldStop (void)
 
void updateMask (Peer *p)
 
void waitForData (Peer *p, const std::string &name, const std::string &info, Peer *owner)
 
- Static Protected Member Functions inherited from DQMNet
static void copydata (Bucket *b, const void *data, size_t len)
 
static void discard (Bucket *&b)
 
- Protected Attributes inherited from DQMImplNet< DQMNet::Object >
PeerMap peers_
 
- Protected Attributes inherited from DQMNet
bool debug_
 
pthread_mutex_t lock_
 

Detailed Description

Definition at line 609 of file DQMNet.h.

Constructor & Destructor Documentation

DQMBasicNet::DQMBasicNet ( const std::string &  appname = "")

Definition at line 1439 of file DQMNet.cc.

References DQMImplNet< DQMNet::Object >::createPeer(), and local_.

1440  : DQMImplNet<DQMNet::Object>(appname)
1441 {
1442  local_ = static_cast<ImplPeer *>(createPeer((Socket *) -1));
1443 }
virtual Peer * createPeer(lat::Socket *s)
Definition: DQMNet.h:489
ImplPeer * local_
Definition: DQMNet.h:619

Member Function Documentation

bool DQMBasicNet::removeLocalExcept ( const std::set< std::string > &  known)

Delete all local objects not in known. Returns true if something was removed. The caller must call sendLocalChanges() later to push out the changes.

Definition at line 1479 of file DQMNet.cc.

References alignCSCRings::e, i, local_, cmsHarvester::path, and AlCaHLTBitMon_QueryRunRegistry::string.

1480 {
1481  size_t removed = 0;
1482  std::string path;
1483  ObjectMap::iterator i, e;
1484  for (i = local_->objs.begin(), e = local_->objs.end(); i != e; )
1485  {
1486  path.clear();
1487  path.reserve(i->dirname->size() + i->objname.size() + 2);
1488  path += *i->dirname;
1489  if (! path.empty())
1490  path += '/';
1491  path += i->objname;
1492 
1493  if (! known.count(path))
1494  ++removed, local_->objs.erase(i++);
1495  else
1496  ++i;
1497  }
1498 
1499  return removed > 0;
1500 }
int i
Definition: DBlmapReader.cc:9
tuple path
else: Piece not in the list, fine.
ImplPeer * local_
Definition: DQMNet.h:619
void DQMBasicNet::reserveLocalSpace ( uint32_t  size)

Give a hint of how much capacity to allocate for local objects.

Definition at line 1447 of file DQMNet.cc.

References local_.

1448 {
1449  local_->objs.resize(size);
1450 }
tuple size
Write out results.
ImplPeer * local_
Definition: DQMNet.h:619
void DQMBasicNet::updateLocalObject ( Object o)

Update the network cache for an object. The caller must call sendLocalChanges() later to push out the changes.

Definition at line 1455 of file DQMNet.cc.

References DQMNet::CoreObject::dirname, DQMNet::CoreObject::flags, info(), local_, DQMNet::Object::qdata, DQMNet::CoreObject::qreports, DQMNet::Object::rawdata, DQMNet::Object::scalar, std::swap(), DQMNet::CoreObject::tag, and DQMNet::CoreObject::version.

1456 {
1457  o.dirname = &*local_->dirs.insert(*o.dirname).first;
1458  std::pair<ObjectMap::iterator, bool> info(local_->objs.insert(o));
1459  if (! info.second)
1460  {
1461  // Somewhat hackish. Sets are supposedly immutable, but we
1462  // need to change the non-key parts of the object. Erasing
1463  // and re-inserting would produce too much memory churn.
1464  Object &old = const_cast<Object &>(*info.first);
1465  std::swap(old.flags, o.flags);
1466  std::swap(old.tag, o.tag);
1467  std::swap(old.version, o.version);
1468  std::swap(old.qreports, o.qreports);
1469  std::swap(old.rawdata, o.rawdata);
1470  std::swap(old.scalar, o.scalar);
1471  std::swap(old.qdata, o.qdata);
1472  }
1473 }
static const TGPicture * info(bool iBackgroundIsBlack)
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
ImplPeer * local_
Definition: DQMNet.h:619

Member Data Documentation

ImplPeer* DQMBasicNet::local_
private

Definition at line 619 of file DQMNet.h.

Referenced by DQMBasicNet(), removeLocalExcept(), reserveLocalSpace(), and updateLocalObject().