//-------------------------------------------------------------------------- // File and Version Information: // $Id: APPLevel3CslOutputModule.hh,v 1.9 2001/09/28 17:27:55 ksmcf Exp $ // // Description: // Class APPLevel3SenderOutputModule. This is an online output module // for the AC++ framework. It connects directly to the Consumer-Server/Logger // sends events to the CSL. // // Environment: // Software developed for CDF II online/offline interface. // // Author List: // Kevin McFarland Original Author // //------------------------------------------------------------------------ #ifndef APPCSLOUTPUTMODULE_HH #define APPCSLOUTPUTMODULE_HH //----------------------- // Experiment Headers -- //----------------------- #include "BaBar/Experiment.hh" //---------------------- // Base Class Headers -- //---------------------- #include "Level3Mods/APPLevel3SenderOutputModule.hh" //---------------------- // Collaborating Class Headers -- //---------------------- class AbsEvent; class AppStream; class AppDeferredOutCommand; template class APPList; class TBuffer; #include "Framework/AbsParmGeneral.hh" #ifndef TRY_FIXED_SIZE_TYPES_HH #include "Trybos/TRY_Fixed_Size_Types.hh" #endif #ifndef TRY_DATAREP_CONVERTER_HH #include "Trybos/private/TRY_Datarep_Converter.hh" #endif #include "Level3Control/SevbL3Interface.hh" //---------------------------------- // Collaborating Consumer-Server/Logger headers -- //---------------------------------- extern "C" { #include "ConsumerInterface/l3_csl_socket_cplusplus_safe.h" } // --------------------- // -- Class Interface -- // --------------------- class APPLevel3CslOutputModule : public APPLevel3SenderOutputModule { friend class APPLevel3InputModule; //-------------------- // Instance Members -- //-------------------- public: // Constructors APPLevel3CslOutputModule(const char* const theName = "Level3CslOutput", const char* const theDescription = "Csl Direct Output Module", const int4 exeTag = -1) ; // Destructor virtual ~APPLevel3CslOutputModule( ); // Operations (online connection to csl) AppResult initIOSystem( ); AppResult terminateIOSystem( ); // Operations (online connection) AppResult sendFlatEvent( bool sendIt, size_t flatEventLength, errorStatus status ); AppResult disconnectOnAbort(); // Data structure methods, information accessors int headerWords() const; void fillHeaderWords(int4* pHeader, const AppStopType& theDispatchStopType, size_t length, long processId); long externalMaximumBufferSize() const; // software event builder bool sevbInterface() const; // Selectors const char* rcsId( ) const; protected: // online member data; used by derived OnlineOutput class int _partitionId; private: SevbL3Interface* _theInterface; // talk-to parameters, mostly governing online operation // csl online configuration AbsParmGeneral _theCslHostname; AbsParmGeneral _thePartitionId; AbsParmGeneral _theIpcBaseKey; AbsParmGeneral _globalPortDaemonActive; // software event builder variables AbsParmGeneral _sevbInterface; // debugging AbsParmGeneral _isSilent; // online member data l3_csl_socket_t _csSocket; #ifdef USE_CDFEDM2 TBuffer* _p_buffer; #endif }; #endif