/* * Packet.h * * Created on: 2016年11月10日 * Author: Mr_zhu * Content: */ #ifndef SERVICEMODEL_PACKET_H_ #define SERVICEMODEL_PACKET_H_ #include #include "../common/Type.h" #include "Base.h" #include "Item.h" class Device; class Packet { public: Packet() : m_parent(NULL) { } virtual ~Packet() { } const CLSID& getClsid() const { return m_clsid; } void setClsid(const CLSID& clsid) { this->m_clsid = clsid; } const Device* getParent() const { return m_parent; } void setParent(Device* parent) { this->m_parent = parent; } std::vector& getVitem() { return m_vitem; } void setVitem(const std::vector& vitem) { this->m_vitem = vitem; } Base& getBase() { return m_base; } void setBase(const Base& base) { this->m_base = base; } HRESULT addItem(Item* item) { bool isexist = false; for (Item*& i : m_vitem) { if (i->isEqual(*item)) { isexist = true; break; } } if (!isexist) { m_vitem.push_back(item); return S_OK; } return S_FALSE; } ULONG getItemCount() { return m_vitem.size(); } public: bool isEqual(Packet& packet) { bool bresult = true; if ((packet.getClsid() == m_clsid) && (packet.getParent() == m_parent)) { return true; } else { bresult = false; } std::vector& v = packet.getVitem(); if (this->getItemCount() == packet.getItemCount()) { for (unsigned int i = 0; i < m_vitem.size(); i++) { if (!(m_vitem.at(i)->isEqual(*(v.at(i))))) { bresult = false; break; } } } return bresult; } void outInfo() { } std::map& getMregstartIndex() { return m_mregstart_index; } void setMregstartIndex(std::map& mregstartIndex) { m_mregstart_index = mregstartIndex; } private: CLSID m_clsid; Device* m_parent; std::vector m_vitem; std::map m_mregstart_index; Base m_base; }; #endif /* SERVICEMODEL_PACKET_H_ */