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

This commit is contained in:
2019-02-19 09:10:03 +00:00
parent b89221a061
commit a02507dd34
3 changed files with 37 additions and 130 deletions

View File

@@ -36,22 +36,27 @@ const uchar header_transfer = 0x81;
__Core_Initializer__::__Core_Initializer__() {
count_++;
//piCout << "try create Core" << count_;
piCout << "try create Core" << count_;
if (count_ > 1) return;
//piCout << "create Core";
piCout << "create Core";
__instance__ = new CDCore();
}
__Core_Initializer__::~__Core_Initializer__() {
count_--;
//piCout << "try delete Core" << count_;
piCout << "try delete Core" << count_;
if (count_ < 0) {
count_ = 0;
return;
}
if (count_ > 0) return;
//piCout << "delete Core";
if (__instance__ != 0) {
piCout << "delete Core ...";
if (__instance__) {
delete __instance__;
__instance__ = 0;
}
piCout << "delete Core ok";
}
@@ -59,9 +64,7 @@ __Core_Initializer__::~__Core_Initializer__() {
CDCore::CDCore() {
setName("CDCore");
sendt.setName("CDCore_send_thread");
datatr.setName("CDCore_datatransfer");
x_timer.setName("CDCore_X_timer");
x_timer.setName("__S__.CDCore.x_timer");
datatr.setPacketSize(960);
CONNECTU(&connection, dataReceivedEvent, this, dataReceived);
CONNECTU(PICout::Notifier::object(), finished, this, piCoutFinished);
@@ -78,9 +81,9 @@ CDCore::CDCore() {
initRoot(&c_);
initRoot(&m_);
CONNECTU(&sendt, started, this, sendThread)
CONNECTU(&datatr, sendRequest, this, dtSendRequest)
CONNECTU(&datatr, receiveFinished, this, dtReceiveFinished)
CONNECTU(&sendt, started, this, sendThread)
CONNECTU(&x_timer, tickEvent, this, xTimerTick)
/*k_[1] = KType(1, "123", "120+3", "comment");
@@ -96,16 +99,17 @@ CDCore::CDCore() {
CDCore::~CDCore() {
piCout << "~CDCore";
piCout << "~CDCore ...";
x_timer.stop(false);
piCout << "~CDCore 1";
datatr.stop();
piCout << "~datatr.stop()";
x_timer.stop();
piCout << "~x_timer.stop()";
sendt.stop(true);
piCout << "~sendt.stop()";
// sendt.waitForFinish(10);
piCout << "~CDCore 2";
sendt.stop();
piCout << "~CDCore 3";
sendt.waitForFinish(10);
piCout << "~CDCore 4";
connection.stop();
piCout << "~connection.stop()";
piCout << "~CDCore ok";
}
@@ -305,6 +309,17 @@ CDCore * CDCore::instance() {
}
bool CDCore::destroy() {
if (!__Core_Initializer__::__instance__) return false;
piCout << "delete Core ...";
delete __Core_Initializer__::__instance__;
piCout << "delete Core ok";
__Core_Initializer__::__instance__ = 0;
__Core_Initializer__::count_ = 0;
return true;
}
void CDUtils::CDCore::K_DirectChange(PIDeque<int> path, PIString value) {
piCoutObj << "K_DirectChange";
PacketKDirectChange p;