// still to do: // why is myMsgPointer public? // is friend class needed? // should subscription config be public? // add stream operators to cMsgMessage? e.g: msg << setName(aName) << aValue; /*----------------------------------------------------------------------------* * Copyright (c) 2005 Southeastern Universities Research Association, * * Thomas Jefferson National Accelerator Facility * * * * This software was developed under a United States Government license * * described in the NOTICE file included as part of this distribution. * * * * E.Wolin, 25-Feb-2005, Jefferson Lab * * * * Authors: Elliott Wolin * * wolin@jlab.org Jefferson Lab, MS-6B * * Phone: (757) 269-7365 12000 Jefferson Ave. * * Fax: (757) 269-5519 Newport News, VA 23606 * * *----------------------------------------------------------------------------*/ #ifndef _cMsg_hxx #define _cMsg_hxx #include #include #include #include #include /** * All cMsg symbols reside in the cmsg namespace. */ namespace cmsg { using namespace std; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- /** * Exception includes description and return code. */ class cMsgException : public exception { public: cMsgException(void); cMsgException(const string &descr); cMsgException(const string &descr, int code); cMsgException(const cMsgException &e); virtual ~cMsgException(void) throw(); virtual string toString(void) const throw(); virtual const char *what(void) const throw(); public: string descr; /** *payloadGet() const throw(cMsgException); virtual int payloadGetCount() const; virtual bool payloadContainsName (const string &name) const; virtual int payloadGetType (const string &name) const throw(cMsgException); virtual void setHistoryLengthMax (int len) const throw(cMsgException); // // Methods to get a payload item's value // virtual void getBinary(const string &name, const char **val, int &len, int &endian) const throw(cMsgException); virtual void getBinaryArray(const string &name, const char ***vals, int **lens, int **endians, int &count) const throw(cMsgException); virtual cMsgMessage *getMessage(const string &name) const throw(cMsgException); virtual vector *getMessageVector(const string &name) const throw(cMsgException); virtual vector *getMessagePVector(const string &name) const throw(cMsgException); virtual cMsgMessage *getMessageArray (const string &name) const throw(cMsgException); virtual cMsgMessage* *getMessagePArray (const string &name) const throw(cMsgException); virtual string getString(const string &name) const throw(cMsgException); virtual vector *getStringVector(const string &name) const throw(cMsgException); virtual string *getStringArray(const string &name) const throw(cMsgException); virtual float getFloat(const string &name) const throw(cMsgException); virtual vector *getFloatVector(const string &name) const throw(cMsgException); virtual float *getFloatArray(const string &name) const throw(cMsgException); virtual double getDouble(const string &name) const throw(cMsgException); virtual vector *getDoubleVector(const string &name) const throw(cMsgException); virtual double *getDoubleArray(const string &name) const throw(cMsgException); virtual int8_t getInt8 (const string &name) const throw(cMsgException); virtual int16_t getInt16 (const string &name) const throw(cMsgException); virtual int32_t getInt32 (const string &name) const throw(cMsgException); virtual int64_t getInt64 (const string &name) const throw(cMsgException); virtual vector *getInt8Vector (const string &name) const throw(cMsgException); virtual vector *getInt16Vector(const string &name) const throw(cMsgException); virtual vector *getInt32Vector(const string &name) const throw(cMsgException); virtual vector *getInt64Vector(const string &name) const throw(cMsgException); virtual int8_t *getInt8Array (const string &name) const throw(cMsgException); virtual int16_t *getInt16Array (const string &name) const throw(cMsgException); virtual int32_t *getInt32Array (const string &name) const throw(cMsgException); virtual int64_t *getInt64Array (const string &name) const throw(cMsgException); virtual uint8_t getUint8 (const string &name) const throw(cMsgException); virtual uint16_t getUint16(const string &name) const throw(cMsgException); virtual uint32_t getUint32(const string &name) const throw(cMsgException); virtual uint64_t getUint64(const string &name) const throw(cMsgException); virtual vector *getUint8Vector (const string &name) const throw(cMsgException); virtual vector *getUint16Vector(const string &name) const throw(cMsgException); virtual vector *getUint32Vector(const string &name) const throw(cMsgException); virtual vector *getUint64Vector(const string &name) const throw(cMsgException); virtual uint8_t *getUint8Array (const string &name) const throw(cMsgException); virtual uint16_t *getUint16Array (const string &name) const throw(cMsgException); virtual uint32_t *getUint32Array (const string &name) const throw(cMsgException); virtual uint64_t *getUint64Array (const string &name) const throw(cMsgException); // // Methods to add items to a payload // virtual void add(const string &name, const char *src, int size, int endian); virtual void add(const string &name, const char **srcs, int number, const int sizes[], const int endians[]); virtual void add(const string &name, const string &s); virtual void add(const string &name, const string *s); virtual void add(const string &name, const char **strs, int len); virtual void add(const string &name, const string *strs, int len); virtual void add(const string &name, const vector &strs); virtual void add(const string &name, const vector *strs); virtual void add(const string &name, const cMsgMessage &msg); virtual void add(const string &name, const cMsgMessage *msg); virtual void add(const string &name, const cMsgMessage *msg, int len); virtual void add(const string &name, const cMsgMessage* *msg, int len); virtual void add(const string &name, const vector &msgVec); virtual void add(const string &name, const vector *msgVec); virtual void add(const string &name, const vector &msgPVec); virtual void add(const string &name, const vector *msgPVec); virtual void add(const string &name, float val); virtual void add(const string &name, double val); virtual void add(const string &name, const float *vals, int len); virtual void add(const string &name, const double *vals, int len); virtual void add(const string &name, const vector &vals); virtual void add(const string &name, const vector *vals); virtual void add(const string &name, const vector &vals); virtual void add(const string &name, const vector *vals); virtual void add(const string &name, int8_t val); virtual void add(const string &name, int16_t val); virtual void add(const string &name, int32_t val); virtual void add(const string &name, int64_t val); virtual void add(const string &name, uint8_t val); virtual void add(const string &name, uint16_t val); virtual void add(const string &name, uint32_t val); virtual void add(const string &name, uint64_t val); virtual void add(const string &name, const int8_t *vals, int len); virtual void add(const string &name, const int16_t *vals, int len); virtual void add(const string &name, const int32_t *vals, int len); virtual void add(const string &name, const int64_t *vals, int len); virtual void add(const string &name, const uint8_t *vals, int len); virtual void add(const string &name, const uint16_t *vals, int len); virtual void add(const string &name, const uint32_t *vals, int len); virtual void add(const string &name, const uint64_t *vals, int len); virtual void add(const string &name, const vector &vals); virtual void add(const string &name, const vector *vals); virtual void add(const string &name, const vector &vals); virtual void add(const string &name, const vector *vals); virtual void add(const string &name, const vector &vals); virtual void add(const string &name, const vector *vals); virtual void add(const string &name, const vector &vals); virtual void add(const string &name, const vector *vals); virtual void add(const string &name, const vector &vals); virtual void add(const string &name, const vector *vals); virtual void add(const string &name, const vector &vals); virtual void add(const string &name, const vector *vals); virtual void add(const string &name, const vector &vals); virtual void add(const string &name, const vector *vals); virtual void add(const string &name, const vector &vals); virtual void add(const string &name, const vector *vals); public: void *myMsgPointer; /** } // namespace cMsg #endif /* _cMsg_hxx */