00001 #ifndef __PXXVPayload__H__ 00002 #define __PXXVPayload__H__ 00003 00014 00015 #include "payloads-unpacker/payloads/PXXVUnpackable.h" 00016 #include "payloads-unpacker/payloads/PXXIPayload.h" 00017 #include "payloads-unpacker/payloads/PXXUTCTime8B.h" 00018 #include "payloads-unpacker/payloads/PXXPayloadEnvelope.h" 00019 #include <limits> 00020 00021 class PXXVPayload : public PXXVUnpackable, public PXXIPayload 00022 { 00023 public: 00024 00028 virtual ~PXXVPayload(); 00029 //------------------------------------------------------------------------------ 00030 00034 virtual Int32b_t GetPayloadLength() const; 00035 //------------------------------------------------------------------------------ 00036 00041 virtual Int32b_t GetPayloadType() const; 00042 //------------------------------------------------------------------------------ 00043 00049 virtual Int32b_t GetPayloadInterfaceType() const; 00050 //------------------------------------------------------------------------------ 00051 00055 virtual const PXXIUTCTime& GetPayloadTimeUTC(); 00056 //------------------------------------------------------------------------------ 00057 00062 virtual Int32b_t Unpack(); 00063 //------------------------------------------------------------------------------ 00064 00069 virtual const PXXPayloadEnvelope &GetEnvelope() const { return fTEnvelope_; } 00070 //------------------------------------------------------------------------------ 00071 00072 protected: 00073 00077 PXXVPayload(const PXXPayloadEnvelope &envelope); 00078 //------------------------------------------------------------------------------ 00079 00084 PXXVPayload(); 00085 //------------------------------------------------------------------------------ 00086 00091 virtual void SetEnvelope(const PXXPayloadEnvelope &env) { fTEnvelope_ = env; } 00092 //------------------------------------------------------------------------------ 00093 00098 virtual PXXPayloadEnvelope &GetEnvelope() { return fTEnvelope_; } 00099 //------------------------------------------------------------------------------ 00100 00101 protected: 00102 00106 virtual void SetPayloadTimeUTC(const PXXUTCTime8B &t) { fTPayloadTimeUTC_ = t; } 00107 //------------------------------------------------------------------------------ 00108 00109 private: 00110 00111 PXXPayloadEnvelope fTEnvelope_; // payload envelope of the payload 00112 PXXUTCTime8B fTPayloadTimeUTC_; // pointer to IUTCTime 00113 00114 ClassDef(PXXVPayload, 0) // interface of payloads 00115 00116 }; 00117 00118 #ifdef __USEROOT__ // compile with ROOT 00119 typedef PXXVPayload* PXXVPayloadPtr; 00120 #else // compile with IceTray 00121 typedef shared_ptr<PXXVPayload> PXXVPayloadPtr; 00122 #endif 00123 00124 #endif // PXXIPAYLOAD_H