#ifndef MSG_NOTIFY_MSG_HPP_ #define MSG_NOTIFY_MSG_HPP_ #include "GBMessage.h" #include #include "../sip_header.h" class GBXmlParser : public CGBMessage { public: GBXmlParser() { } public: bool Encode( std::string &message ); std::vector DecodeCatlog(const char* body); DeviceInfo DecodeDeviceInfo(const char* body); ServerInfo DecodeServerConfig(const char* body); vector ParseKeepalive(const char* body); static std::string GetStrName(EEventType eType) { switch (eType) { case EVENT_ON: return "ON"; case EVENT_OFF: return "OFF"; case EVENT_VLOST: return "VLOST"; case EVENT_DEFECT: return "DEFECT"; case EVENT_ADD: return "ADD"; case EVENT_DEL: return "DEL"; case EVENT_UPDATE: return "UPDATE"; default: //EVENT_UNKNOW return "UNKNOW"; } return "UNKNOW"; } EEventType GetEnumName(const std::string &sType) { if (sType == "ON") return EVENT_ON; if (sType == "OFF") return EVENT_OFF; if (sType == "VLOSE") return EVENT_VLOST; if (sType == "DEFECT") return EVENT_DEFECT; if (sType == "ADD") return EVENT_ADD; if (sType == "DEL") return EVENT_DEL; if (sType == "UPDATE") return EVENT_UPDATE; return EVENT_UNKNOW; } public: inline const std::string& GetSN() const { return m_sn; } inline const std::string& GetDeviceID() const { return m_deviceid; } inline void SetDeviceID( const std::string &deviceid ) { m_deviceid = deviceid; } inline void SetSN( const std::string &sn ) { m_sn = sn; } inline const std::string& GetStatus() const { return m_status; } inline void SetStatus( const std::string &status ) { m_status = status; } inline int GetSum() const { return m_sum; } inline void SetSum( int sum ) { m_sum = sum; } inline const std::vector< DeviceInfo >& GetDevices() const { return m_devices; } inline void AddEvent(const std::string &id, EEventType eventType) { DeviceInfo catalog; catalog.id = id; catalog.event = eventType; m_devices.push_back( catalog ); } inline void AddOnEvent( const std::string &id ) { DeviceInfo catalog; catalog.id = id; catalog.event = EVENT_ON; m_devices.push_back( catalog ); } inline void AddOffEvent( const std::string &id ) { DeviceInfo catalog; catalog.id = id; catalog.event = EVENT_OFF; m_devices.push_back( catalog ); } inline void AddVLostEvent( const std::string &id ) { DeviceInfo catalog; catalog.id = id; catalog.event = EVENT_VLOST; m_devices.push_back( catalog ); } inline void AddDefectEvent( const std::string &id ) { DeviceInfo catalog; catalog.id = id; catalog.event = EVENT_DEFECT; m_devices.push_back( catalog ); } inline void AddDelEvent( const std::string &id ) { DeviceInfo catalog; catalog.id = id; catalog.event = EVENT_DEL; m_devices.push_back( catalog ); } inline void AddAddEvent( const DeviceInfo &catalog ) { if( catalog.event == EVENT_ADD ) { m_devices.push_back( catalog ); } } inline void AddUpdateEvent( const DeviceInfo &catalog ) { if( catalog.event == EVENT_UPDATE ) { m_devices.push_back( catalog ); } } private: std::vector< DeviceInfo > Decode(const std::vector< tinyxml2::XMLNode* >& nodes); string getItemValue(tinyxml2::XMLNode *pItem); private: std::string m_sn; std::string m_deviceid; std::string m_status; int m_sum; std::vector< DeviceInfo > m_devices; }; #endif // MSG_NOTIFY_MSG_HPP_