00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 #ifndef __JAUS_CORE_EVENTS_UPDATE_EVENT__H 00041 #define __JAUS_CORE_EVENTS_UPDATE_EVENT__H 00042 00043 #include "jaus/core/corecodes.h" 00044 #include "jaus/core/message.h" 00045 #include "jaus/core/events/events.h" 00046 00047 namespace JAUS 00048 { 00056 class JAUS_CORE_DLL UpdateEvent : public Message 00057 { 00058 public: 00065 class JAUS_CORE_DLL Limits : public JAUS::Limits 00066 { 00067 public: 00068 static const double MaxUpdateRate; 00069 static const double MinUpdateRate; 00070 }; 00071 UpdateEvent(const Address& dest = Address(), const Address& src = Address()); 00072 UpdateEvent(const UpdateEvent& message); 00073 ~UpdateEvent(); 00074 inline void SetType(const Events::Type type) { mType = type; } 00075 inline void SetEventID(const Byte id) { mEventID = id; } 00076 inline void SetRequestID(const Byte id) { mRequestID = id; } 00077 bool SetRequestedPeriodicRate(const double rate); 00078 bool SetQueryMessage(const Message* queryMessage); 00079 bool SetQueryMessage(const UShort messageCode, const Packet& queryPayload); 00080 inline Events::Type GetType() const { return mType; } 00081 inline Byte GetEventID() const { return mEventID; } 00082 inline Byte GetRequestID() const { return mRequestID; } 00083 inline double GetRequestedPeriodicRate() const { return mRequestedPeriodicRate; } 00084 inline UShort GetQueryMessageCode() const { return mQueryMessageCode; } 00085 inline const Packet* GetQueryMessage() const { return &mQueryMessage; } 00086 virtual bool IsCommand() const { return false; } 00087 virtual bool IsResponseToMessage(const Message* requestingMessage) const; 00088 virtual int WriteMessageBody(Packet& packet) const; 00089 virtual int ReadMessageBody(const Packet& packet); 00090 virtual Message* Clone() const { return new UpdateEvent(*this); } 00091 virtual UInt GetPresenceVector() const { return 0; } 00092 virtual UInt GetPresenceVectorSize() const { return 0; } 00093 virtual UInt GetPresenceVectorMask() const { return 0; } 00094 virtual UShort GetMessageCodeOfResponse() const { return CONFIRM_EVENT_REQUEST; } 00095 virtual std::string GetMessageName() const { return "Update Event"; } 00096 virtual void ClearMessageBody(); 00097 virtual bool IsLargeDataSet(const unsigned int maxPayloadSize) const { return false; } 00098 UpdateEvent& operator=(const UpdateEvent& message); 00099 protected: 00100 Events::Type mType; 00101 Byte mRequestID; 00102 Byte mEventID; 00103 double mRequestedPeriodicRate; 00104 UShort mQueryMessageCode; 00105 Packet mQueryMessage; 00106 }; 00107 } 00108 00109 #endif 00110 /* End of File */