PICloud disconnect

This commit is contained in:
2021-04-07 18:11:25 +03:00
parent bf63b0e9f3
commit b2f8132518
4 changed files with 12 additions and 0 deletions

View File

@@ -41,6 +41,11 @@ int main(int argc, char * argv[]) {
piCout << "[Server] data from" << cl << ":" << str; piCout << "[Server] data from" << cl << ":" << str;
if (str == "ping") cl->write(PIString("pong").toByteArray()); if (str == "ping") cl->write(PIString("pong").toByteArray());
})); }));
CONNECTL(cl, closed, ([&clients, cl](){
cl->stop();
clients.removeAll(cl);
cl->deleteLater();
}));
cl->startThreadedRead(); cl->startThreadedRead();
})); }));
if (cli.hasArgument("name")) s.setServerName(cli.argumentValue("name")); if (cli.hasArgument("name")) s.setServerName(cli.argumentValue("name"));

View File

@@ -39,6 +39,7 @@ void CloudServer::addClient(DispatcherClient * c) {
void CloudServer::removeClient(DispatcherClient * c) { void CloudServer::removeClient(DispatcherClient * c) {
clients.removeOne(c); clients.removeOne(c);
index_clients.removeOne(c->clientId()); index_clients.removeOne(c->clientId());
server->sendDisconnected(c->clientId());
} }

View File

@@ -36,6 +36,11 @@ void DispatcherClient::sendConnected(uint client_id) {
} }
void DispatcherClient::sendDisconnected(uint client_id) {
tcp.sendDisconnected(client_id);
}
void DispatcherClient::sendData(const PIByteArray & data) { void DispatcherClient::sendData(const PIByteArray & data) {
if (tcp.role() == PICloud::TCP::Client) tcp.sendData(data); if (tcp.role() == PICloud::TCP::Client) tcp.sendData(data);
else piCoutObj << "error sendData, invalid role"; else piCoutObj << "error sendData, invalid role";

View File

@@ -14,6 +14,7 @@ public:
void start(); void start();
void close(); void close();
void sendConnected(uint client_id); void sendConnected(uint client_id);
void sendDisconnected(uint client_id);
void sendData(const PIByteArray & data); void sendData(const PIByteArray & data);
void sendDataToClient(const PIByteArray & data, uint client_id); void sendDataToClient(const PIByteArray & data, uint client_id);
void authorise(bool ok); void authorise(bool ok);