#ifndef __PXXPayloadFactory__H__ #define __PXXPayloadFactory__H__ ///////////////////////////////////////////////////////////////////// /// This object is a singleton object which create new payloads. // /// It also holds the constants associated with the Payload types // /// and their human readable names. // /// Corresponds PayloadRegisry + MasterPayloadFactory of JAVA // /// triggerUtil. // /// @author Kotoyo Hoshina 24/Aug/05 // ///////////////////////////////////////////////////////////////////// #include "payloads-unpacker/base/PXXObject.h" #include "payloads-unpacker/payloads/PXXVPayload.h" class PXXPayloadFactory; #ifdef __USEROOT__ typedef PXXPayloadFactory* PXXPayloadFactoryPtr; #else typedef shared_ptr PXXPayloadFactoryPtr; #endif class PXXPayloadFactory : public PXXObject { public: SET_LOGGER("PXXPayloadFactory"); /** * Defined PayloadTypes. This type should be embedded in the * PayloadEnvelope. */ static const Int32b_t PAYLOAD_ID_UNKNOWN ; static const Int32b_t PAYLOAD_ID_SIMPLE_HIT ; static const Int32b_t PAYLOAD_ID_MULTI_HIT ; static const Int32b_t PAYLOAD_ID_ENGFORMAT_HIT ; static const Int32b_t PAYLOAD_ID_TCAL ; static const Int32b_t PAYLOAD_ID_MON ; static const Int32b_t PAYLOAD_ID_ENGFORMAT_TRIGGER ; static const Int32b_t PAYLOAD_ID_ENGFORMAT_HIT_TRIGGER ; static const Int32b_t PAYLOAD_ID_READOUT_REQUEST ; static const Int32b_t PAYLOAD_ID_TRIGGER_REQUEST ; static const Int32b_t PAYLOAD_ID_ENGFORMAT_HIT_DATA ; static const Int32b_t PAYLOAD_ID_READOUT_DATA ; static const Int32b_t PAYLOAD_ID_EVENT ; static const Int32b_t PAYLOAD_ID_EVENT_V2 ; static const Int32b_t PAYLOAD_ID_LASTVALID ; //------------------------------------------------------------------------------ /** * Destractor */ virtual ~PXXPayloadFactory(); //------------------------------------------------------------------------------ /** * Get Singleton instance of the payload factory */ static PXXPayloadFactoryPtr GetInstancePtr(); //------------------------------------------------------------------------------ /** * Create a payload with indicated payload-type * which embedded in the PXXPayloadEnvelope */ virtual PXXVPayloadPtr CreateAPayload(const PXXPayloadEnvelope &envl); //------------------------------------------------------------------------------ protected: /** * Protected constructor so this is a singleton. */ PXXPayloadFactory(); //------------------------------------------------------------------------------ private: static PXXPayloadFactoryPtr fInstancePtr_; // poInt32b_ter to singleton ClassDef(PXXPayloadFactory, 0) // PayloadFactory }; #endif // __PXXPayloadFactory__H__