git-svn-id: svn://db.shs.com.ru/libs@352 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2018-01-30 09:37:58 +00:00
parent eada1571ad
commit 92529d243e
54 changed files with 211 additions and 2377 deletions

View File

@@ -173,14 +173,19 @@ void CDUtils::CDCore::dataReceived(const PIString & from, const PIByteArray & da
else {
CDPacketType pt = (CDPacketType)sig;
switch(pt) {
case CD_Ping:
//piCoutObj << "ping";
break;
default: break;
case CD_Ping: {
//piCoutObj << "ping";
} break;
case CD_KDirectChange: {
PIByteArray ba = data;
PacketKDirectChange p;
ba >> p;
k_[p.path].setValue(p.value);
} break;
default: break;
}
}
}
}
}
@@ -232,6 +237,18 @@ void CDCore::K_Request() {
}
void CDUtils::CDCore::K_DirectChange(PIDeque<int> path, PIString value) {
PacketKDirectChange p;
p.header.session_id = 0;
p.header.type = CD_KDirectChange;
p.path = path;
p.value = value;
PIByteArray ba;
ba << p;
connection.writeByName("cd", ba);
}
void CDCore::sendThread() {
bool ok = datatr.send(send_data);
CDPacketType pt = (CDPacketType)wheader.type;

View File

@@ -37,6 +37,7 @@ public:
EVENT(K_ChangedGlobal)
EVENT_HANDLER(void, K_Send);
EVENT_HANDLER(void, K_Request);
EVENT_HANDLER2(void, K_DirectChange, PIDeque<int>, path, PIString, value);
void k_write(PIIODevice * d);
void k_read(PIIODevice * d);

View File

@@ -5,7 +5,7 @@
namespace CDUtils {
enum CDPacketType {CD_Ping, CD_Pong, CD_KQuery, CD_KSend, CD_Command, CD_XData, CD_XQuery};
enum CDPacketType {CD_Ping, CD_Pong, CD_KQuery, CD_KSend, CD_KDirectChange, CD_XData, CD_XQuery, CD_Command};
# pragma pack(push,1)
@@ -14,12 +14,21 @@ enum CDPacketType {CD_Ping, CD_Pong, CD_KQuery, CD_KSend, CD_Command, CD_XData,
int session_id;
};
struct PacketKDirectChange {
PacketHeader header;
PIDeque<int> path;
PIString value;
};
# pragma pack(pop)
inline PIByteArray & operator <<(PIByteArray & s, const PacketHeader & v) {s << v.type << v.session_id; return s;}
inline PIByteArray & operator >>(PIByteArray & s, PacketHeader & v) {s >> v.type >> v.session_id; return s;}
inline PIByteArray & operator <<(PIByteArray & s, const PacketKDirectChange & v) {s << v.header << v.path << v.value; return s;}
inline PIByteArray & operator >>(PIByteArray & s, PacketKDirectChange & v) {s >> v.header >> v.path >> v.value; return s;}
}
#endif // CDUTILS_PROTOCOL_H