new PIClientServer::ClientBase::stopAndWait() method for blocking stop read.

PIClientServer::ClientBase::close() now non-blocking
This commit is contained in:
2024-09-21 19:56:39 +03:00
parent 4acab04895
commit 3641e636d2
6 changed files with 24 additions and 7 deletions

View File

@@ -27,6 +27,7 @@ PIClientServer::ClientBase::ClientBase() {}
PIClientServer::ClientBase::~ClientBase() {
close();
stopAndWait();
if (own_tcp) piDeleteSafety(tcp);
}
@@ -34,7 +35,13 @@ PIClientServer::ClientBase::~ClientBase() {
void PIClientServer::ClientBase::close() {
if (!tcp) return;
can_write = false;
tcp->interrupt();
tcp->stop();
stream.clear();
}
void PIClientServer::ClientBase::stopAndWait() {
if (!tcp) return;
tcp->stopAndWait(10_s);
if (tcp->isThreadedRead()) tcp->terminateThreadedRead();
tcp->close();