#include "pip.h" #include "piintrospection_server.h" #include "piintrospection_containers_p.h" //#include class CL: public PIObject { PIOBJECT(CL) public: EVENT_HANDLER1(void, nc, PIEthernet * , client) { piCout << "client" << client; } }; PIKbdListener kbd(0, 0, false); #include #define PIIS_TYPENAME(t) typeid(t).name() template class Name { public: static const char * name() {return PIIS_TYPENAME(T);} }; PISystemMonitor sys_mon; class TestRec: public PIObject { PIOBJECT(TestRec) public: EVENT_HANDLER(void, reinitSpec) {piCout << "reinitSpec";int a = 10; (void*)&a;} EVENT_HANDLER(void, coeffsChanged) {piCout << "coeffsChanged";} EVENT_HANDLER(void, guiAboutSend) {piCout << "guiAboutSend";} EVENT_HANDLER(void, guiAfterSend) {piCout << "guiAfterSend";} EVENT_HANDLER(void, guiReceived) {piCout << "guiReceived";} EVENT_HANDLER(void, playerReceived) {piCout << "playerReceived";int a = 10; (void*)&a;} EVENT_HANDLER(void, playerValuesReceived) {piCout << "playerValuesReceived";} EVENT_HANDLER(void, calculate) {piCout << "calculate";} EVENT_HANDLER(void, autostart) {piCout << "autostart";} EVENT_HANDLER(void, syncOff) {piCout << "syncOff";int a = 10; (void*)&a;} EVENT_HANDLER(void, del) {piCout << "DEL";} }; class TestSnd: public PIObject { PIOBJECT_SUBCLASS(TestSnd, PIObject) public: EVENT(reinitSpec) EVENT(coeffsChanged) EVENT(guiAboutSend) EVENT(guiAfterSend) EVENT(guiReceived) EVENT(playerReceived) EVENT(playerValuesReceived) EVENT(calculate) EVENT(autostart) EVENT(syncOff) }; #define CONN(sn) CONNECTU(snd, sn, rec, sn) int main(int argc, char * argv[]) { //sys_mon.startOnSelf(); PITimeMeasurer tm; TestRec * rec = 0; TestSnd * snd = 0; for (int i = 0; i < 1; ++i) { if (rec) delete rec; if (snd) delete snd; rec = new TestRec(); snd = new TestSnd(); } CONNECTU(snd, deleted, rec, del) CONN(reinitSpec) CONN(coeffsChanged) CONN(guiAboutSend) CONN(guiAfterSend) CONN(guiReceived) CONN(playerReceived) CONN(playerValuesReceived) CONN(calculate) CONN(autostart) CONN(syncOff); // 0.6 us on call for (int j = 0; j < 10; ++j) { tm.reset(); for (int i = 0; i < 10000; ++i) { snd->reinitSpec(); snd->playerReceived(); snd->syncOff(); } double el = tm.elapsed_m(); piCout << el; } //snd->dump(); delete snd; delete rec; PIString s; s = "gafaffaf"; piCout << s; piCout << s; s = "dd"; piCout << s; return 0; PIINTROSPECTION_START; //uint id = standardCRC_32().calculate("6PIChar"); //PIIntrospectionContainers * ci = PIINTROSPECTION_CONTAINERS->p; FOREVER { piMSleep(100); //piCout << ci->data[id].count << ci->data[id].bytes_allocated << ci->data[id].bytes_used; } return 0; PICLI cli(argc, argv); cli.setDebug(false); cli.addArgument("send"); //PISystemInfo::machineID(); kbd.enableExitCapture(); kbd.start(); if (cli.hasArgument("send")) { /*piCout << "send mode"; PIEthernet eth; eth.setSendAddress(cli.rawArguments().back() + ":15123"); eth.open(); while (!kbd.exiting) { eth.send(PIByteArray("test string", 12)); piMSleep(500); }*/ PIEthernet eth(PIEthernet::TCP_Server); eth.listen(cli.rawArguments().back() + ":15123", true); //eth.open(); CL cl; CONNECTU(ð, newConnection, &cl, nc); WAIT_FOR_EXIT; piCout << "exiting ..."; } else { piCout << "recv mode"; PIEthernet eth(PIEthernet::TCP_Client); //eth.setReadAddress(cli.rawArguments().back() + ":15123"); eth.startThreadedRead(); int s = eth.socket(); piCout << s; piCout << "connect ..."; eth.connect(cli.rawArguments().back() + /*":13361"*/":15123"); piCout << "connect done" << eth.isConnected(); //fcntl(fd, F_SETFL, O_NONBLOCK); WAIT_FOR_EXIT; piCout << "exiting ..."; } /*PIThread t; t.start(10); //WAIT_FOR_EXIT; piSleep(20.); t.stop(true);*/ piCout << "exit main ..."; return 0; }