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