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

This commit is contained in:
2018-05-28 11:32:38 +00:00
parent f2581cd605
commit 46d6928ebe
12 changed files with 85 additions and 115 deletions

View File

@@ -106,6 +106,8 @@ void CDCore::cd_write(CDSection * cd, PIIODevice * d) {
void CDCore::cd_read(CDSection * cd, PIIODevice * d) {
PIConfig conf(d, PIIODevice::ReadOnly);
cd->read(&(conf.rootEntry()));
if (cd->cd_type_ == CDType::cdX)
x_selected = cd->collectX();
initRoot(cd);
K_ChangedGlobal();
/*PIVector<PIIODevice * > ds = connection.allDevices();
@@ -147,6 +149,7 @@ void CDCore::cd_calculate(CDSection * cd) {
void CDCore::cd_send(CDSection * cd, CDPacketType pt, bool direct) {
if (!cd) return;
PIByteArray ba, sba;
PIIOByteArray iob(&ba, PIIODevice::ReadWrite);
cd_write(cd, &iob);
@@ -160,6 +163,33 @@ void CDCore::cd_send(CDSection * cd, CDPacketType pt, bool direct) {
}
void CDCore::send(CDType::cdT cdt) {
CDPacketType pt = CD_Ping;
switch (cdt) {
case CDType::cdK: pt = CD_KSend; break;
case CDType::cdX: pt = CD_XSend; break;
case CDType::cdC: pt = CD_CSend; break;
default: break;
}
piCoutObj << "send" << typeLetter(cdt);
cd_send(root(cdt), pt);
}
void CDCore::request(CDType::cdT cdt) {
CDPacketType pt = CD_Ping;
switch (cdt) {
case CDType::cdK: pt = CD_KQuery; break;
case CDType::cdX: pt = CD_XQuery; break;
case CDType::cdC: pt = CD_CQuery; break;
default: break;
}
piCoutObj << "request" << typeLetter(cdt);
PIByteArray sba = makeHeader(pt, 0);
sendThreaded(sba);
}
void CDCore::initApp() {
init(appConfig(), false);
}
@@ -243,19 +273,6 @@ CDCore * CDCore::instance() {
}
void CDCore::K_Send() {
piCoutObj << "K_Send";
cd_send(&k_, CD_KSend);
}
void CDCore::K_Request() {
piCoutObj << "K_Request";
PIByteArray sba = makeHeader(CD_KQuery, 0);
sendThreaded(sba);
}
void CDUtils::CDCore::K_DirectChange(PIDeque<int> path, PIString value) {
piCoutObj << "K_DirectChange";
PacketKDirectChange p;
@@ -267,32 +284,6 @@ void CDUtils::CDCore::K_DirectChange(PIDeque<int> path, PIString value) {
}
void CDCore::X_Send() {
piCoutObj << "X_Send";
cd_send(&x_, CD_XSend);
}
void CDCore::X_Request() {
piCoutObj << "X_Request";
PIByteArray sba = makeHeader(CD_XQuery, 0);
sendThreaded(sba);
}
void CDCore::C_Send() {
piCoutObj << "C_Send";
cd_send(&c_, CD_CSend);
}
void CDCore::C_Request() {
piCoutObj << "C_Request";
PIByteArray sba = makeHeader(CD_CQuery, 0);
sendThreaded(sba);
}
void CDCore::sendThread() {
if (send_data.size_s() < 4) return;
PacketHeader h;
@@ -392,7 +383,7 @@ void CDCore::procReceivedPacket(PIByteArray & ba) {
//piCoutObj << "ping";
break;
case CD_KQuery:
K_Send();
send(CDType::cdK);
break;
case CD_KSend: {
piCoutObj << "K received";
@@ -410,7 +401,7 @@ void CDCore::procReceivedPacket(PIByteArray & ba) {
k_[p.path].setValue(p.value);
} break;
case CD_XQuery:
X_Send();
send(CDType::cdX);
break;
case CD_XSend: {
piCoutObj << "X received";
@@ -420,6 +411,7 @@ void CDCore::procReceivedPacket(PIByteArray & ba) {
PIString s = PIString::fromUTF8((const char *)x.data());
PIIOString ios(&s);
cd_read(&x_, &ios);
x_selected = x_.collectX();
X_Received();
} break;
case CD_XRequest: {
@@ -447,7 +439,7 @@ void CDCore::procReceivedPacket(PIByteArray & ba) {
X_ReceivedX(x_vals);
} break;
case CD_CQuery:
C_Send();
send(CDType::cdC);
break;
case CD_CSend: {
piCoutObj << "C received";