diff --git a/libs/cloud/picloudtcp.cpp b/libs/cloud/picloudtcp.cpp index def39395..3a55860b 100644 --- a/libs/cloud/picloudtcp.cpp +++ b/libs/cloud/picloudtcp.cpp @@ -62,7 +62,9 @@ void PICloud::TCP::sendStart() { PIByteArray ba; ba << header; ba.append(suuid); + mutex_send.lock(); streampacker->send(ba); + mutex_send.unlock(); } @@ -70,7 +72,9 @@ void PICloud::TCP::sendConnected(uint client_id) { header.type = PICloud::TCP::Connect; PIByteArray ba; ba << header << client_id; + mutex_send.lock(); streampacker->send(ba); + mutex_send.unlock(); } @@ -78,7 +82,9 @@ void PICloud::TCP::sendDisconnected(uint client_id) { header.type = PICloud::TCP::Disconnect; PIByteArray ba; ba << header << client_id; + mutex_send.lock(); streampacker->send(ba); + mutex_send.unlock(); } @@ -88,7 +94,9 @@ int PICloud::TCP::sendData(const PIByteArray & data) { ba << header; ba.append(data); // piCout << "[PICloud::TCP] sendData" << ba.toHex(); + mutex_send.lock(); streampacker->send(ba); + mutex_send.unlock(); return data.size_s(); } @@ -98,7 +106,9 @@ int PICloud::TCP::sendData(const PIByteArray & data, uint client_id) { PIByteArray ba; ba << header << client_id; ba.append(data); + mutex_send.lock(); streampacker->send(ba); + mutex_send.unlock(); return data.size_s(); } @@ -108,7 +118,9 @@ void PICloud::TCP::sendPing() { PIByteArray ba; ba << header; ba.append(suuid); + mutex_send.lock(); streampacker->send(ba); + mutex_send.unlock(); } diff --git a/libs/main/cloud/picloudtcp.h b/libs/main/cloud/picloudtcp.h index c941b51c..aada123f 100644 --- a/libs/main/cloud/picloudtcp.h +++ b/libs/main/cloud/picloudtcp.h @@ -25,6 +25,7 @@ #include "pip_cloud_export.h" #include "pistring.h" +#include "pimutex.h" class PIEthernet; @@ -86,6 +87,8 @@ private: PIByteArray suuid; PIString server_name; PIStreamPacker * streampacker; + PIMutex mutex_send; + }; }