git-svn-id: svn://db.shs.com.ru/pip@305 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -44,6 +44,7 @@ set(LIBS)
|
|||||||
if (DEBUG)
|
if (DEBUG)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3")
|
||||||
endif ()
|
endif ()
|
||||||
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3")
|
||||||
|
|
||||||
# Sources
|
# Sources
|
||||||
set(PIP_FOLDERS "." "core" "containers" "thread" "system" "io" "console" "math" "code" "geo")
|
set(PIP_FOLDERS "." "core" "containers" "thread" "system" "io" "console" "math" "code" "geo")
|
||||||
|
|||||||
37
main.cpp
37
main.cpp
@@ -1,5 +1,5 @@
|
|||||||
#include "pip.h"
|
#include "pip.h"
|
||||||
|
/*
|
||||||
struct __S__ {
|
struct __S__ {
|
||||||
PIString text;
|
PIString text;
|
||||||
int i;
|
int i;
|
||||||
@@ -10,6 +10,26 @@ inline PIByteArray & operator >>(PIByteArray & s, __S__ & v) {s >> v.text >> v.i
|
|||||||
REGISTER_VARIANT(__S__)
|
REGISTER_VARIANT(__S__)
|
||||||
REGISTER_VARIANT_CAST(__S__, PIString) {return v.text + PIString::fromNumber(v.i);}
|
REGISTER_VARIANT_CAST(__S__, PIString) {return v.text + PIString::fromNumber(v.i);}
|
||||||
REGISTER_VARIANT_CAST(__S__, int) {return v.i;}
|
REGISTER_VARIANT_CAST(__S__, int) {return v.i;}
|
||||||
|
*/
|
||||||
|
const char app_config[] =
|
||||||
|
"include = cd_ip.conf\n\
|
||||||
|
port_rec = 2\n\
|
||||||
|
port_send = 1\n\
|
||||||
|
[connection]\n\
|
||||||
|
device.cd = peer://cd_app:cd_pult #s\n\
|
||||||
|
[]\n\
|
||||||
|
connectionmodel = AAAM2Xja7VXLTttAFD12QpsikKjUSixYlLbKEpIUtVIlVEfqhk2FWuiGRRolUYtoHgrmpYiv6IItf8AveMMH9E/YsG6Ph3sde5hGoQoblLGuPHfunTPjc49nADxDA110+LTYC7FrPCAPeAO+vZu+aX7c/8PGd45WCJC0OGcfT6FDnmfSTPtwhZFt3HjgDs/Qtu5jPbZHtI/x50XfIzMQbdwEolbg9INP4ku++myPaUtCHYRaT2j1ldIh3VP60/Qff8vSfXLu9BP6JX9K/0TVH6jqVe22P1X/fao/oddWu/paDs1vBf9Jv/EZ91clbyHqv7BL6sscDOd4v4WTqs6jzaHGJ8QJerxlpJSpdZ7IWFJvDW7I2JxZqIM62k6A57RZmMQGmlyrxdV+WGBnmR01mXPI267hBKwp4FeBeo9VPtssxyb7rzHg1B7T9nCMU45U8BZlWuVWtIcD/CRGOqtsbW09851tXsHN0UTlLIAdASjSXnLyLn+H7L2+xbGYvC63Ezqg543egkLmn8qnRF6USbM4Qp9godkhzI777Ne5bCIt/5UtGz2o/yGby0nKpjqmbOa1ynkjmyzIrzvIZUeBPjvlUmbh32EFJbGyJZhR8YcvlS+3TpjhqeWSyvUkpbI9plSWtcKLcsK05beOJVEnhaEFfHEH+RwpeMcpn1JKGqWMNOL+G6wZyahlpdVOtufKfbDS+guLke9O\n\
|
||||||
|
";
|
||||||
|
|
||||||
|
const char pult_config[] =
|
||||||
|
"include = cd_ip.conf\n\
|
||||||
|
port_rec = 1\n\
|
||||||
|
port_send = 2\n\
|
||||||
|
[connection]\n\
|
||||||
|
device.cd = peer://cd_pult:cd_app #s\n\
|
||||||
|
[]\n\
|
||||||
|
connectionmodel = AAAM2Xja7VXLTttAFD12QpsikKjUSixYlLbKEpIUtVIlVEfqhk2FWuiGRRolUYtoHgrmpYiv6IItf8AveMMH9E/YsG6Ph3sde5hGoQoblLGuPHfunTPjc49nADxDA110+LTYC7FrPCAPeAO+vZu+aX7c/8PGd45WCJC0OGcfT6FDnmfSTPtwhZFt3HjgDs/Qtu5jPbZHtI/x50XfIzMQbdwEolbg9INP4ku++myPaUtCHYRaT2j1ldIh3VP60/Qff8vSfXLu9BP6JX9K/0TVH6jqVe22P1X/fao/oddWu/paDs1vBf9Jv/EZ91clbyHqv7BL6sscDOd4v4WTqs6jzaHGJ8QJerxlpJSpdZ7IWFJvDW7I2JxZqIM62k6A57RZmMQGmlyrxdV+WGBnmR01mXPI267hBKwp4FeBeo9VPtssxyb7rzHg1B7T9nCMU45U8BZlWuVWtIcD/CRGOqtsbW09851tXsHN0UTlLIAdASjSXnLyLn+H7L2+xbGYvC63Ezqg543egkLmn8qnRF6USbM4Qp9godkhzI777Ne5bCIt/5UtGz2o/yGby0nKpjqmbOa1ynkjmyzIrzvIZUeBPjvlUmbh32EFJbGyJZhR8YcvlS+3TpjhqeWSyvUkpbI9plSWtcKLcsK05beOJVEnhaEFfHEH+RwpeMcpn1JKGqWMNOL+G6wZyahlpdVOtufKfbDS+guLke9O\n\
|
||||||
|
";
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
/*__S__ s, s1;
|
/*__S__ s, s1;
|
||||||
@@ -21,7 +41,7 @@ int main(int argc, char *argv[]) {
|
|||||||
PIVariant v1;
|
PIVariant v1;
|
||||||
ba >> v1;
|
ba >> v1;
|
||||||
piCout << v1;*/
|
piCout << v1;*/
|
||||||
PISet<int> s0;
|
/*PISet<int> s0;
|
||||||
s0 << 1 << 3 << 5;
|
s0 << 1 << 3 << 5;
|
||||||
PIVector<int> v;
|
PIVector<int> v;
|
||||||
v << -1 << 8 << 0 << 2 << 1 << 6 << 4 << 3;
|
v << -1 << 8 << 0 << 2 << 1 << 6 << 4 << 3;
|
||||||
@@ -29,7 +49,18 @@ int main(int argc, char *argv[]) {
|
|||||||
PISet<int> s1(v);
|
PISet<int> s1(v);
|
||||||
piCout << s1;
|
piCout << s1;
|
||||||
s1.subtract(s0);
|
s1.subtract(s0);
|
||||||
piCout << s1;
|
piCout << s1;*/
|
||||||
|
PIConnection c;
|
||||||
|
PIString s(app_config);
|
||||||
|
c.configureFromString(&s);
|
||||||
|
c.start();
|
||||||
|
piMSleep(3000);
|
||||||
|
s = pult_config;
|
||||||
|
c.stop();
|
||||||
|
c.removeAllDevices();
|
||||||
|
c.configureFromString(&s);
|
||||||
|
c.start();
|
||||||
|
piMSleep(3000);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ PIEthernet::PIEthernet(int sock_, PIString ip_port): PIIODevice("", ReadWrite) {
|
|||||||
|
|
||||||
|
|
||||||
PIEthernet::~PIEthernet() {
|
PIEthernet::~PIEthernet() {
|
||||||
//piCoutObj << "~PIEthernet ...";
|
//piCout << "~PIEthernet" << uint(this);
|
||||||
stop();
|
stop();
|
||||||
closeDevice();
|
closeDevice();
|
||||||
piMonitor.ethernets--;
|
piMonitor.ethernets--;
|
||||||
@@ -142,6 +142,7 @@ PIEthernet::~PIEthernet() {
|
|||||||
|
|
||||||
|
|
||||||
void PIEthernet::construct() {
|
void PIEthernet::construct() {
|
||||||
|
//piCout << " PIEthernet" << uint(this);
|
||||||
piMonitor.ethernets++;
|
piMonitor.ethernets++;
|
||||||
connected_ = connecting_ = listen_threaded = server_bounded = false;
|
connected_ = connecting_ = listen_threaded = server_bounded = false;
|
||||||
port_ = port_s = port_r = 0;
|
port_ = port_s = port_r = 0;
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ PIString PIPeer::PeerInfo::fastestAddress() const {
|
|||||||
REGISTER_DEVICE(PIPeer)
|
REGISTER_DEVICE(PIPeer)
|
||||||
|
|
||||||
PIPeer::PIPeer(const PIString & n): PIIODevice(), eth_tcp_srv(PIEthernet::TCP_Server), eth_tcp_cli(PIEthernet::TCP_Client), diag_s(false), diag_d(false) {
|
PIPeer::PIPeer(const PIString & n): PIIODevice(), eth_tcp_srv(PIEthernet::TCP_Server), eth_tcp_cli(PIEthernet::TCP_Client), diag_s(false), diag_d(false) {
|
||||||
|
//piCout << " PIPeer" << uint(this);
|
||||||
destroyed = false;
|
destroyed = false;
|
||||||
setDebug(false);
|
setDebug(false);
|
||||||
PIMutexLocker mbl(mc_mutex);
|
PIMutexLocker mbl(mc_mutex);
|
||||||
@@ -158,6 +159,8 @@ PIPeer::PIPeer(const PIString & n): PIIODevice(), eth_tcp_srv(PIEthernet::TCP_Se
|
|||||||
|
|
||||||
|
|
||||||
PIPeer::~PIPeer() {
|
PIPeer::~PIPeer() {
|
||||||
|
//piCout << "~PIPeer" << uint(this);
|
||||||
|
if (destroyed) return;
|
||||||
destroyed = true;
|
destroyed = true;
|
||||||
PIMutexLocker ml(peers_mutex);
|
PIMutexLocker ml(peers_mutex);
|
||||||
piForeach (PeerInfo & p, peers)
|
piForeach (PeerInfo & p, peers)
|
||||||
@@ -170,10 +173,14 @@ PIPeer::~PIPeer() {
|
|||||||
diag_s.stop();
|
diag_s.stop();
|
||||||
diag_d.stop();
|
diag_d.stop();
|
||||||
destroyEths();
|
destroyEths();
|
||||||
piForeach (PIEthernet * i, eths_mcast)
|
piForeach (PIEthernet * i, eths_mcast) {
|
||||||
|
if (!i) continue;
|
||||||
i->stopThreadedRead();
|
i->stopThreadedRead();
|
||||||
piForeach (PIEthernet * i, eths_bcast)
|
}
|
||||||
|
piForeach (PIEthernet * i, eths_bcast) {
|
||||||
|
if (!i) continue;
|
||||||
i->stopThreadedRead();
|
i->stopThreadedRead();
|
||||||
|
}
|
||||||
eth_lo.stopThreadedRead();
|
eth_lo.stopThreadedRead();
|
||||||
eth_tcp_srv.stopThreadedRead();
|
eth_tcp_srv.stopThreadedRead();
|
||||||
eth_tcp_cli.stopThreadedRead();
|
eth_tcp_cli.stopThreadedRead();
|
||||||
@@ -320,11 +327,13 @@ void PIPeer::initMBcasts(PIStringList al) {
|
|||||||
|
|
||||||
void PIPeer::destroyEths() {
|
void PIPeer::destroyEths() {
|
||||||
piForeach (PIEthernet * i, eths_traffic) {
|
piForeach (PIEthernet * i, eths_traffic) {
|
||||||
|
if (!i) continue;
|
||||||
((PIThread*)i)->stop();
|
((PIThread*)i)->stop();
|
||||||
((PIThread*)i)->waitForFinish(100);
|
((PIThread*)i)->waitForFinish(100);
|
||||||
i->stopThreadedRead();
|
i->stopThreadedRead();
|
||||||
i->close();
|
i->close();
|
||||||
delete i;
|
delete i;
|
||||||
|
i = 0;
|
||||||
}
|
}
|
||||||
eths_traffic.clear();
|
eths_traffic.clear();
|
||||||
}
|
}
|
||||||
@@ -332,26 +341,30 @@ void PIPeer::destroyEths() {
|
|||||||
|
|
||||||
void PIPeer::destroyMBcasts() {
|
void PIPeer::destroyMBcasts() {
|
||||||
piForeach (PIEthernet * i, eths_mcast) {
|
piForeach (PIEthernet * i, eths_mcast) {
|
||||||
|
if (!i) continue;
|
||||||
((PIThread*)i)->stop();
|
((PIThread*)i)->stop();
|
||||||
((PIThread*)i)->waitForFinish(100);
|
((PIThread*)i)->waitForFinish(100);
|
||||||
i->stopThreadedRead();
|
i->stopThreadedRead();
|
||||||
i->leaveMulticastGroup(_PIPEER_MULTICAST_IP);
|
i->leaveMulticastGroup(_PIPEER_MULTICAST_IP);
|
||||||
i->close();
|
i->close();
|
||||||
delete i;
|
delete i;
|
||||||
|
i = 0;
|
||||||
}
|
}
|
||||||
|
eths_mcast.clear();
|
||||||
piForeach (PIEthernet * i, eths_bcast) {
|
piForeach (PIEthernet * i, eths_bcast) {
|
||||||
|
if (!i) continue;
|
||||||
((PIThread*)i)->stop();
|
((PIThread*)i)->stop();
|
||||||
((PIThread*)i)->waitForFinish(100);
|
((PIThread*)i)->waitForFinish(100);
|
||||||
i->stopThreadedRead();
|
i->stopThreadedRead();
|
||||||
i->close();
|
i->close();
|
||||||
delete i;
|
delete i;
|
||||||
|
i = 0;
|
||||||
}
|
}
|
||||||
|
eths_bcast.clear();
|
||||||
((PIThread*)ð_lo)->stop();
|
((PIThread*)ð_lo)->stop();
|
||||||
((PIThread*)ð_lo)->waitForFinish(100);
|
((PIThread*)ð_lo)->waitForFinish(100);
|
||||||
eth_lo.stopThreadedRead();
|
eth_lo.stopThreadedRead();
|
||||||
eth_lo.close();
|
eth_lo.close();
|
||||||
eths_mcast.clear();
|
|
||||||
eths_bcast.clear();
|
|
||||||
eth_tcp_srv.stop();
|
eth_tcp_srv.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user