git-svn-id: svn://db.shs.com.ru/libs@352 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user