CMS 3D CMS Logo

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 () override=default
 
- Public Member Functions inherited from DQMNet
void debug (bool doit)
 
void delay (int delay)
 
 DQMNet (const std::string &appname="")
 
 DQMNet (const DQMNet &)=delete
 
void listenToCollector (const std::string &host, int port)
 
void lock ()
 Acquire a lock on the DQM net layer. More...
 
DQMNetoperator= (const DQMNet &)=delete
 
void run ()
 
void sendLocalChanges ()
 
void shutdown ()
 Stop the network layer and wait it to finish. More...
 
void staleObjectWaitLimit (lat::TimeSpan time)
 
void start ()
 
void startLocalServer (int port)
 
void startLocalServer (const char *path)
 
void unlock ()
 Release the lock on the DQM net layer. More...
 
void updateToCollector (const std::string &host, int port)
 
virtual ~DQMNet ()
 

Private Attributes

ImplPeer * local_
 

Additional Inherited Members

- Public Types inherited from DQMImplNet< DQMNet::Object >
using DirMap = std::set< std::string >
 
typedef __gnu_cxx::hash_set< DQMNet::Object, HashOp, HashEqualObjectMap
 
typedef std::map< lat::Socket *, ImplPeer > PeerMap
 
- Public Types inherited from DQMNet
using DataBlob = std::vector< unsigned char >
 
using QReports = std::vector< QValue >
 
using TagList = std::vector< uint32_t >
 
using WaitList = std::list< WaitObject >
 
- 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_MARKTODELETE = 0x01000000
 
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 >
PeercreatePeer (lat::Socket *s) override
 
ObjectfindObject (Peer *p, const std::string &name, Peer **owner=nullptr) override
 
PeergetPeer (lat::Socket *s) override
 
ObjectmakeObject (Peer *p, const std::string &name) override
 
void markObjectsDead (Peer *p) override
 
void purgeDeadObjects (Peer *p) override
 
void removePeer (Peer *p, lat::Socket *s) override
 
void sendObjectListToPeer (Bucket *msg, bool all, bool clear) override
 Send all objects to a peer and optionally mark sent objects old. More...
 
void sendObjectListToPeers (bool all) override
 
void updatePeerMasks () override
 
- Protected Member Functions inherited from DQMNet
std::ostream & logme ()
 
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 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 612 of file DQMNet.h.

Constructor & Destructor Documentation

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

Definition at line 1442 of file DQMNet.cc.

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

1443  : DQMImplNet<DQMNet::Object>(appname)
1444 {
1445  local_ = static_cast<ImplPeer *>(createPeer((Socket *) -1));
1446 }
Peer * createPeer(lat::Socket *s) override
Definition: DQMNet.h:492
ImplPeer * local_
Definition: DQMNet.h:622

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 1482 of file DQMNet.cc.

References MillePedeFileConverter_cfg::e, mps_fire::i, local_, callgraph::path, and AlCaHLTBitMon_QueryRunRegistry::string.

1483 {
1484  size_t removed = 0;
1485  std::string path;
1486  ObjectMap::iterator i, e;
1487  for (i = local_->objs.begin(), e = local_->objs.end(); i != e; )
1488  {
1489  path.clear();
1490  path.reserve(i->dirname->size() + i->objname.size() + 2);
1491  path += *i->dirname;
1492  if (! path.empty())
1493  path += '/';
1494  path += i->objname;
1495 
1496  if (! known.count(path))
1497  ++removed, local_->objs.erase(i++);
1498  else
1499  ++i;
1500  }
1501 
1502  return removed > 0;
1503 }
ImplPeer * local_
Definition: DQMNet.h:622
void DQMBasicNet::reserveLocalSpace ( uint32_t  size)

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

Definition at line 1450 of file DQMNet.cc.

References local_.

1451 {
1452  local_->objs.resize(size);
1453 }
size
Write out results.
ImplPeer * local_
Definition: DQMNet.h:622
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 1458 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.

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

Member Data Documentation

ImplPeer* DQMBasicNet::local_
private

Definition at line 622 of file DQMNet.h.

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