• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

newmonitor/base/Buffer.h (r3879/r3878)

Go to the documentation of this file.
00001 #ifndef BASE_BUFFER_H
00002 #define BASE_BUFFER_H
00003 
00004 #include "base/SubEvent.h"
00005 
00006 namespace base {
00007 
00011    struct RawDataRec {
00012       int      refcnt;   // number of references
00013 
00014       unsigned      kind;       // like ROC event, SPADIC or MBS or ..
00015       unsigned      boardid;    // board id
00016       unsigned      format;     // raw data format like optic, Ethernet for ROC and so on
00017 
00018       GlobalTime_t  local_tm;    // buffer head time in local scale,
00019       GlobalTime_t  global_tm;   // buffer head time in global time
00020 
00021       void*         buf;        // raw data
00022       unsigned      datalen;    // length of raw data
00023 
00024       RawDataRec() : refcnt(0), kind(0), boardid(0), format(0), local_tm(0), global_tm(0), buf(0), datalen(0) {}
00025 
00026       void reset()
00027       {
00028          refcnt = 0;
00029          kind = 0;
00030          boardid = 0;
00031          format = 0;
00032          local_tm = 0;
00033          global_tm = 0;
00034          buf = 0;
00035          datalen = 0;
00036       }
00037    };
00038 
00039    class Buffer {
00040       protected:
00041          RawDataRec* fRec;
00042       public:
00043          Buffer() : fRec(0) {}
00044          Buffer(const Buffer& src) : fRec(src.fRec) { if (fRec) fRec->refcnt++; }
00045          ~Buffer() { reset(); }
00046 
00047          Buffer& operator=(const Buffer& src)
00048          {
00049             reset();
00050             fRec = src.fRec;
00051             if (fRec) fRec->refcnt++;
00052             return *this;
00053          }
00054 
00055          bool null() const { return fRec==0; }
00056 
00057          void reset();
00058 
00059          RawDataRec& operator()(void) const { return *fRec; }
00060 
00061          RawDataRec& rec() const { return *fRec; }
00062 
00065          void makecopyof(void* buf, unsigned datalen);
00066 
00070          void makereferenceof(void* buf, unsigned datalen);
00071 
00072    };
00073 
00074 }
00075 
00076 #endif

Generated on Thu Dec 13 2012 04:52:22 for ROCsoft by  doxygen 1.7.1