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)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3")
|
||||
endif ()
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3")
|
||||
|
||||
# Sources
|
||||
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"
|
||||
|
||||
/*
|
||||
struct __S__ {
|
||||
PIString text;
|
||||
int i;
|
||||
@@ -10,6 +10,26 @@ inline PIByteArray & operator >>(PIByteArray & s, __S__ & v) {s >> v.text >> v.i
|
||||
REGISTER_VARIANT(__S__)
|
||||
REGISTER_VARIANT_CAST(__S__, PIString) {return v.text + PIString::fromNumber(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[]) {
|
||||
/*__S__ s, s1;
|
||||
@@ -21,7 +41,7 @@ int main(int argc, char *argv[]) {
|
||||
PIVariant v1;
|
||||
ba >> v1;
|
||||
piCout << v1;*/
|
||||
PISet<int> s0;
|
||||
/*PISet<int> s0;
|
||||
s0 << 1 << 3 << 5;
|
||||
PIVector<int> v;
|
||||
v << -1 << 8 << 0 << 2 << 1 << 6 << 4 << 3;
|
||||
@@ -29,7 +49,18 @@ int main(int argc, char *argv[]) {
|
||||
PISet<int> s1(v);
|
||||
piCout << s1;
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ PIEthernet::PIEthernet(int sock_, PIString ip_port): PIIODevice("", ReadWrite) {
|
||||
|
||||
|
||||
PIEthernet::~PIEthernet() {
|
||||
//piCoutObj << "~PIEthernet ...";
|
||||
//piCout << "~PIEthernet" << uint(this);
|
||||
stop();
|
||||
closeDevice();
|
||||
piMonitor.ethernets--;
|
||||
@@ -142,6 +142,7 @@ PIEthernet::~PIEthernet() {
|
||||
|
||||
|
||||
void PIEthernet::construct() {
|
||||
//piCout << " PIEthernet" << uint(this);
|
||||
piMonitor.ethernets++;
|
||||
connected_ = connecting_ = listen_threaded = server_bounded = false;
|
||||
port_ = port_s = port_r = 0;
|
||||
|
||||
@@ -135,6 +135,7 @@ PIString PIPeer::PeerInfo::fastestAddress() const {
|
||||
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) {
|
||||
//piCout << " PIPeer" << uint(this);
|
||||
destroyed = false;
|
||||
setDebug(false);
|
||||
PIMutexLocker mbl(mc_mutex);
|
||||
@@ -158,6 +159,8 @@ PIPeer::PIPeer(const PIString & n): PIIODevice(), eth_tcp_srv(PIEthernet::TCP_Se
|
||||
|
||||
|
||||
PIPeer::~PIPeer() {
|
||||
//piCout << "~PIPeer" << uint(this);
|
||||
if (destroyed) return;
|
||||
destroyed = true;
|
||||
PIMutexLocker ml(peers_mutex);
|
||||
piForeach (PeerInfo & p, peers)
|
||||
@@ -170,10 +173,14 @@ PIPeer::~PIPeer() {
|
||||
diag_s.stop();
|
||||
diag_d.stop();
|
||||
destroyEths();
|
||||
piForeach (PIEthernet * i, eths_mcast)
|
||||
piForeach (PIEthernet * i, eths_mcast) {
|
||||
if (!i) continue;
|
||||
i->stopThreadedRead();
|
||||
piForeach (PIEthernet * i, eths_bcast)
|
||||
}
|
||||
piForeach (PIEthernet * i, eths_bcast) {
|
||||
if (!i) continue;
|
||||
i->stopThreadedRead();
|
||||
}
|
||||
eth_lo.stopThreadedRead();
|
||||
eth_tcp_srv.stopThreadedRead();
|
||||
eth_tcp_cli.stopThreadedRead();
|
||||
@@ -320,11 +327,13 @@ void PIPeer::initMBcasts(PIStringList al) {
|
||||
|
||||
void PIPeer::destroyEths() {
|
||||
piForeach (PIEthernet * i, eths_traffic) {
|
||||
if (!i) continue;
|
||||
((PIThread*)i)->stop();
|
||||
((PIThread*)i)->waitForFinish(100);
|
||||
i->stopThreadedRead();
|
||||
i->close();
|
||||
delete i;
|
||||
i = 0;
|
||||
}
|
||||
eths_traffic.clear();
|
||||
}
|
||||
@@ -332,26 +341,30 @@ void PIPeer::destroyEths() {
|
||||
|
||||
void PIPeer::destroyMBcasts() {
|
||||
piForeach (PIEthernet * i, eths_mcast) {
|
||||
if (!i) continue;
|
||||
((PIThread*)i)->stop();
|
||||
((PIThread*)i)->waitForFinish(100);
|
||||
i->stopThreadedRead();
|
||||
i->leaveMulticastGroup(_PIPEER_MULTICAST_IP);
|
||||
i->close();
|
||||
delete i;
|
||||
i = 0;
|
||||
}
|
||||
eths_mcast.clear();
|
||||
piForeach (PIEthernet * i, eths_bcast) {
|
||||
if (!i) continue;
|
||||
((PIThread*)i)->stop();
|
||||
((PIThread*)i)->waitForFinish(100);
|
||||
i->stopThreadedRead();
|
||||
i->close();
|
||||
delete i;
|
||||
i = 0;
|
||||
}
|
||||
eths_bcast.clear();
|
||||
((PIThread*)ð_lo)->stop();
|
||||
((PIThread*)ð_lo)->waitForFinish(100);
|
||||
eth_lo.stopThreadedRead();
|
||||
eth_lo.close();
|
||||
eths_mcast.clear();
|
||||
eths_bcast.clear();
|
||||
eth_tcp_srv.stop();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user