cloud inspecting ...

This commit is contained in:
2024-03-15 19:49:37 +03:00
parent 2b738f6f43
commit 3fa5d9d9df
5 changed files with 29 additions and 15 deletions

View File

@@ -312,8 +312,9 @@ bool PIEthernet::closeDevice() {
if (sock_s == sock) sock_s = -1;
closeSocket(sock);
closeSocket(sock_s);
while (!clients_.isEmpty())
delete clients_.back();
clients_mutex.lock();
piDeleteAllAndClear(clients_);
clients_mutex.unlock();
if (ned) {
// piCoutObj << "Disconnect on close";
disconnected(false);
@@ -529,6 +530,21 @@ bool PIEthernet::listen(const PINetworkAddress & addr, bool threaded) {
return listen(threaded);
}
PIEthernet * PIEthernet::client(int index) {
PIMutexLocker locker(clients_mutex);
return clients_[index];
}
int PIEthernet::clientsCount() const {
PIMutexLocker locker(clients_mutex);
return clients_.size_s();
}
PIVector<PIEthernet *> PIEthernet::clients() const {
PIMutexLocker locker(clients_mutex);
return clients_;
}
bool PIEthernet::send(const void * data, int size, bool threaded) {
if (threaded) {
@@ -823,9 +839,8 @@ void PIEthernet::applyParameters() {
void PIEthernet::clientDeleted(PIObject * o) {
clients_mutex.lock();
PIMutexLocker locker(clients_mutex);
clients_.removeOne((PIEthernet *)o);
clients_mutex.unlock();
}

View File

@@ -251,9 +251,9 @@ public:
//! Start listen for incoming TCP connections on address "addr". Use only for TCP_Server
bool listen(const PINetworkAddress & addr, bool threaded = false);
PIEthernet * client(int index) { return clients_[index]; }
int clientsCount() const { return clients_.size_s(); }
PIVector<PIEthernet *> clients() const { return clients_; }
PIEthernet * client(int index);
int clientsCount() const;
PIVector<PIEthernet *> clients() const;
//! Send data "data" with size "size" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client
@@ -484,7 +484,7 @@ protected:
mutable PINetworkAddress addr_r, addr_s, addr_lr;
Type eth_type;
PIThread server_thread_;
PIMutex clients_mutex;
mutable PIMutex clients_mutex;
PIVector<PIEthernet *> clients_;
PIQueue<PIString> mcast_queue;
PIStringList mcast_groups;