00001 /*****************************************************************************/ 00002 /* */ 00003 /* XrdMonHeader.hh */ 00004 /* */ 00005 /* (c) 2005 by the Board of Trustees of the Leland Stanford, Jr., University */ 00006 /* All Rights Reserved */ 00007 /* Produced by Jacek Becla for Stanford University under contract */ 00008 /* DE-AC02-76SF00515 with the Department of Energy */ 00009 /*****************************************************************************/ 00010 00011 // $Id: XrdMonHeader.hh 24468 2008-06-22 16:47:03Z ganis $ 00012 00013 #ifndef XRDMONHEADER_HH 00014 #define XRDMONHEADER_HH 00015 00016 #include "XrdMon/XrdMonCommon.hh" 00017 #include "XrdMon/XrdMonTypes.hh" 00018 #include "XrdXrootd/XrdXrootdMonData.hh" 00019 #include "XrdSys/XrdSysHeaders.hh" 00020 00021 #include <sys/time.h> 00022 #include <vector> 00023 using std::ostream; 00024 using std::vector; 00025 00026 class XrdMonHeader { 00027 public: 00028 packet_t packetType() const { return _header.code; } 00029 sequen_t seqNo() const { return _header.pseq; } 00030 packetlen_t packetLen() const { return _header.plen; } 00031 kXR_int32 stod() const { return _header.stod; } 00032 bool stodChanged(senderid_t senderId) const; 00033 00034 void decode(const char* packet); 00035 00036 private: 00037 XrdXrootdMonHeader _header; 00038 00039 static vector<kXR_int32> _prevStod; // prevStod for each senderId 00040 00041 friend ostream& operator<<(ostream& o, 00042 const XrdMonHeader& header); 00043 }; 00044 00045 #endif /* XRDMONHEADER_HH */ 00046