add PIPackedTCP

This commit is contained in:
2024-08-02 14:43:42 +03:00
parent c8876807ed
commit 7d02f710ea
8 changed files with 387 additions and 19 deletions

View File

@@ -2,7 +2,6 @@
#include "picodeparser.h"
#include "piiostream.h"
#include "pijson.h"
#include "piliterals_time.h"
#include "pimathbase.h"
#include "pip.h"
#include "pivaluetree_conversions.h"
@@ -17,7 +16,83 @@ enum MyEvent {
meIntString,
};
PITimeMeasurer tm;
std::atomic_int cnt = {0};
void tfunc(int delim) {
// piCout << "tick with delimiter" << delim;
++cnt;
};
void tfunc4(int delim) {
piCout << "tick4 with delimiter" << delim;
};
int main(int argc, char * argv[]) {
PIPackedTCP * tcp_s =
PIIODevice::createFromFullPath("ptcp://s::8000")->cast<PIPackedTCP>(); // new PIPackedTCP(PIPackedTCP::Server, {"0.0.0.0:8000"});
PIPackedTCP * tcp_c = PIIODevice::createFromFullPath("ptcp://c:127.0.0.1:8000")
->cast<PIPackedTCP>(); // new PIPackedTCP(PIPackedTCP::Client, {"127.0.0.1:8000"});
piCout << tcp_s << tcp_c;
// CONNECTL(&tcp_s, opened, []() { piCout << "Srv opened"; });
// CONNECTL(&tcp_c, opened, []() { piCout << "Cli opened"; });
// CONNECTL(&tcp_s, closed, []() { piCout << "Srv closed"; });
// CONNECTL(&tcp_c, closed, []() { piCout << "Cli closed"; });
CONNECTL(tcp_s, connected, []() { piCout << "Srv conn"; });
CONNECTL(tcp_c, connected, []() { piCout << "Cli conn"; });
CONNECTL(tcp_s, disconnected, []() { piCout << "Srv disconn"; });
CONNECTL(tcp_c, disconnected, []() { piCout << "Cli disconn"; });
CONNECTL(tcp_s, threadedReadEvent, [](const uchar * readed, ssize_t size) {
PIByteArray d(readed, size);
piCout << "Srv readed" << d;
});
CONNECTL(tcp_c, threadedReadEvent, [](const uchar * readed, ssize_t size) {
PIByteArray d(readed, size);
piCout << "Cli readed" << d;
});
// tcp_s->open();
// tcp_c->open();
tcp_s->startThreadedRead();
tcp_c->startThreadedRead();
piForTimes(5) {
piCout << "\n1";
piMSleep(200);
piCout << "2";
// tcp_c->close();
piCout << "2+";
// tcp_s->close();
piCout << "3";
// tcp_c->open();
piCout << "3+";
// tcp_s->open();
piCout << "4";
piMSleep(500);
// piCout << "5";
tcp_c->write("1234567890"_a.toByteArray());
// piCout << "6";
tcp_s->write("1234567890"_a.toByteArray());
// piCout << "7";
piMSleep(200);
}
// piCout << &tcp_s;
// piCout << tcp_s->path();
// piCout << tcp_s->constructFullPath();
delete tcp_s;
delete tcp_c;
return 0;
/*PITimer timer(tfunc);
// timer.addDelimiter(2);
timer.addDelimiter(40, tfunc4);
tm.reset();
timer.start(0.5_Hz);
piMSleep(2200);
piCout << tm.elapsed_m() << cnt;
timer.stop();
timer.waitForFinish();
return 0;*/
bool posted;
PIStateMachine * root = new PIStateMachine("Machine");
root->addOnFinish([] { piCout << "finish"; });
@@ -49,9 +124,10 @@ int main(int argc, char * argv[]) {
s2->setInitialState(s21);
s21->setInitialState(s213);
s213->addTransition(s13, meVoid)->addAction([] { piCout << "action transition s21 -> s22"; });
s3->addTransition(s212, meVoid)->addAction([] { piCout << "action transition s1 -> s213"; });
// s2->addTransition(s3, meInt)->addGuard([](int i) { return i == 1; });
// s213->addTransition(s13, meVoid)->addAction([] { piCout << "action transition s21 -> s22"; });
// s3->addTransition(s212, meVoid)->addAction([] { piCout << "action transition s1 -> s213"; });
s2->addTransition(s3, meVoid);
s2->addTimeoutTransition(s3, .5_s);
// s3->addTransition(s1, meIntString)->addGuard([](int i, PIString str) { return i == 2 && str == "hello"; });
root->start();
@@ -59,10 +135,11 @@ int main(int argc, char * argv[]) {
piCout << "active atomics" << root->activeAtomics();
root->print();
piCout << "\npost event";
posted = root->postEvent(meVoid);
piCout << "posted" << posted << "\n";
piCout << "active atomics" << root->activeAtomics();
// piCout << "\npost event";
// posted = root->postEvent(meVoid);
// piCout << "posted" << posted << "\n";
// piCout << "active atomics" << root->activeAtomics();
piSleep(1.);
root->print();
// piCout << "\npost event";