49 public BaseCommunication
52 const int TCP_NEWORKQUEUE_OVERFLOWLIMIT = 20;
53 const int TCP_RAWDATA_QUEUE_OVERFLOWLIMIT = 20;
54 const int MAX_SIZE_TO_READ = 40000;
55 const int COMMAND_ACK_TIMEOUT = 8000;
103 string SendCommand(
string commandToSend);
111 string SendCommand(
string commandToSend,
int specificTimeout);
120 RawData WaitForRawData(
int waitTimeout,
unsigned long* semStatus);
123 in_addr stringToInAddr(
const string& ipStr);
124 int isInSameSubnet(
const string& ipAddr,
const string& subnetAddr,
const string& subnetMask);
125 ConnectionState IsSensorInSameNet(
const string& sensorIp);
126 PIP_ADAPTER_INFO FindAdapterForSecoket(SOCKET s);
128 PIP_ADAPTER_INFO _tcpAdapterInfo;
130 atomic<chrono::time_point<std::chrono::steady_clock>> _lastTcpDataTime;
131 atomic<chrono::time_point<std::chrono::steady_clock>> _lastUdpDataTime;
168 void DisconnectTcp();
173 void DisconnectUdp();
181 void StartTcpWorker();
190 void TcpWorkerBusiness(
string name);
191 std::atomic<bool> _stopTcpThread;
192 string _commandAckAnswer;
193 HANDLE _mutexcommandAckAnswer;
194 HANDLE _semCommandAckAvailable;
195 HANDLE _mutexSendAvailable;
200 void setCommandAckAnswer(
string pCommandAckAnswer);
206 string getCommandAckAnswer();
215 void StartUdpWorker();
223 void UdpWorkerBusiness(
string name);
224 std::atomic<bool> _stopUdpThread;
234 int ProcessRawData(
string dataPacket, vector<string>* dataVector);
236 queue<RawData> _rawDataQueue;
237 HANDLE _mutexRawDataQueue;
238 HANDLE _semRawDataAvailable;
245 std::atomic<bool> _wasWired;
247 bool _dataRequested =
false;