/* CD Utils - Control-Debug utilites Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef CDUTILS_PROTOCOL_H #define CDUTILS_PROTOCOL_H #include "cd_core_export.h" #include "pistring.h" namespace CDUtils { enum CDPacketType { CD_Ping, CD_Pong, CD_KQuery, CD_KSend, CD_KDirectChange, CD_XQuery, CD_XSend, CD_XRequest, CD_XValues, CD_CQuery, CD_CSend, CD_Command, CD_MQuery, CD_MSend, CD_Message, }; #pragma pack(push, 1) struct CD_CORE_EXPORT PacketHeader { int type; // CDPacketType int session_id; }; struct CD_CORE_EXPORT PacketKDirectChange { PIDeque path; PIString value; }; #pragma pack(pop) #ifdef PIP_BINARY_STREAM BINARY_STREAM_WRITE(PacketKDirectChange) { s << v.path << v.value; return s; } BINARY_STREAM_READ(PacketKDirectChange) { s >> v.path >> v.value; return s; } #else inline PIByteArray & operator<<(PIByteArray & s, const PacketKDirectChange & v) { s << v.path << v.value; return s; } inline PIByteArray & operator>>(PIByteArray & s, PacketKDirectChange & v) { s >> v.path >> v.value; return s; } #endif } // namespace CDUtils #endif // CDUTILS_PROTOCOL_H