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_DISCOVERY_REPORT_SERVICES__H 00041 #define __JAUS_CORE_DISCOVERY_REPORT_SERVICES__H 00042 00043 #include "jaus/core/corecodes.h" 00044 #include "jaus/core/message.h" 00045 #include "jaus/core/service.h" 00046 00047 namespace JAUS 00048 { 00060 class JAUS_CORE_DLL ReportServices : public Message 00061 { 00062 public: 00069 class JAUS_CORE_DLL Record 00070 { 00071 public: 00072 typedef std::vector<Record> List; 00073 Record(const Byte c = 0, const Byte i = 0) 00074 { 00075 mComponent = c; 00076 mInstance = i; 00077 } 00078 Record(const Record& record) 00079 { 00080 *this = record; 00081 } 00082 ~Record(){} 00083 Record& operator=(const Record& record) 00084 { 00085 mComponent = record.mComponent; 00086 mInstance = record.mInstance; 00087 mServices = record.mServices; 00088 return *this; 00089 } 00090 Byte mComponent; 00091 Byte mInstance; 00092 Service::ID::Set mServices; 00093 }; 00094 typedef std::map<Byte, Record::List > Services; 00095 ReportServices(const Address& dest = Address(), const Address& src = Address()); 00096 ReportServices(const ReportServices& message); 00097 ~ReportServices(); 00098 Services* GetServices() { return &mServices; } 00099 const Services* GetServices() const { return &mServices; } 00100 virtual bool IsCommand() const { return false; } 00101 virtual int WriteMessageBody(Packet& packet) const; 00102 virtual int ReadMessageBody(const Packet& packet); 00103 virtual Message* Clone() const { return new ReportServices(*this); } 00104 virtual UInt GetPresenceVector() const { return 0; } 00105 virtual UInt GetPresenceVectorSize() const { return 0; } 00106 virtual UInt GetPresenceVectorMask() const { return 0; } 00107 virtual UShort GetMessageCodeOfResponse() const { return 0; } 00108 virtual std::string GetMessageName() const { return "Report Services"; } 00109 virtual void ClearMessageBody(); 00110 virtual bool IsLargeDataSet(const unsigned int maxPayloadSize) const; 00111 ReportServices& operator=(const ReportServices& message); 00112 protected: 00113 Services mServices; 00114 }; 00115 } 00116 00117 #endif 00118 /* End of File */