00001 #ifndef __PXXCompositePayloadEnvelope__H__ 00002 #define __PXXCompositePayloadEnvelope__H__ 00003 00021 00022 #include "payloads-unpacker/payloads/PXXVUnpackable.h" 00023 00024 class PXXCompositePayloadEnvelope : public PXXVUnpackable 00025 { 00026 public: 00027 00028 SET_LOGGER("PXXCompositePayloadEnvelope"); 00029 00033 PXXCompositePayloadEnvelope(); 00034 //------------------------------------------------------------------------------ 00035 00039 virtual ~PXXCompositePayloadEnvelope() {} 00040 //------------------------------------------------------------------------------ 00041 00047 virtual Int32b_t GetCompositePayloadLength() const; 00048 //------------------------------------------------------------------------------ 00049 00057 virtual Short16b_t GetCompositePayloadType() const; 00058 //------------------------------------------------------------------------------ 00059 00065 virtual Short16b_t GetNumberOfPayloads() const; 00066 //------------------------------------------------------------------------------ 00067 00072 virtual Int32b_t GetEnvelopeSize() const { return kIEnvelopeSize_; } 00073 //------------------------------------------------------------------------------ 00074 00078 virtual void WriteProperties(); 00079 //------------------------------------------------------------------------------ 00080 00081 private: 00082 00091 virtual Int32b_t ReadData(); 00092 //------------------------------------------------------------------------------ 00093 00094 private: 00095 00096 static const Int32b_t kIEnvelopeSize_ = 8; // Fixed 8, see class description 00097 00098 Int32b_t fICompositePayloadLength_ ; // length (with envelope) 00099 Short16b_t fSCompositePayloadType_ ; // Type of composite payload 00100 Short16b_t fSNumberOfPayloads_; // number of enclosed payloads 00101 00102 ClassDef(PXXCompositePayloadEnvelope, 0) // interface of payloads 00103 00104 }; 00105 00106 #ifdef __USEROOT__ // compile with ROOT 00107 typedef PXXCompositePayloadEnvelope* PXXCompositePayloadEnvelopePtr; 00108 #else // compile with IceTray 00109 typedef shared_ptr<PXXCompositePayloadEnvelope> PXXCompositePayloadEnvelopePtr; 00110 #endif 00111 00112 #endif // PXXIPAYLOAD_H