AsyncFw 1.2
Async Framework is c++ runtime with timers, poll notifiers, sockets, coroutines, etc.
 
Loading...
Searching...
No Matches
DataArrayTcpClient.h
1/*
2Copyright (c) 2026 Alexandr Kuzmuk
3
4This file is part of the AsyncFw project. Licensed under the MIT License.
5See {Link: LICENSE file https://mit-license.org} in the project root for full license information.
6*/
7
8#pragma once
9
10#include "DataArrayAbstractTcp.h"
11
12namespace AsyncFw {
14class DataArrayTcpClient : public DataArrayAbstractTcp {
15protected:
16 class Thread : public DataArrayAbstractTcp::Thread {
17 friend class DataArrayTcpClient;
18
19 public:
20 inline DataArrayTcpClient *client() { return static_cast<DataArrayTcpClient *>(pool); }
21
22 private:
23 using DataArrayAbstractTcp::Thread::Thread;
24 ~Thread() override;
25 DataArraySocket *createSocket();
26 };
27 virtual void socketStateChanged(const DataArraySocket *);
28
29public:
30 enum Result { ErrorExchangeNotActive = -103, ErrorExchangeTransmit = -104, ErrorExchangeConnectionClose = -105, ErrorExchangeTimeout = -106, ErrorExchangeThread = -107 };
31 DataArrayTcpClient(const std::string & = "TcpClient");
32 void connectToHost(DataArraySocket *socket, const std::string &, uint16_t, int = 0);
33 void connectToHost(const DataArraySocket *, int = 0);
34 Thread *createThread();
35 DataArraySocket *createSocket(Thread *thread = nullptr);
36 void removeSocket(DataArraySocket *);
37 FunctionConnectorProtected<DataArrayTcpClient>::Connector<const DataArraySocket *> connectionStateChanged {AbstractFunctionConnector::DirectOnly};
38 int exchange(const DataArraySocket *, const DataArray &, const DataArray *, uint32_t, int = 5000);
39 std::size_t socketLimit() { return maxSockets; }
40 int connectTimeout() const { return waitForConnectTimeoutInterval; }
41 void setConnectTimeout(int timeout) { waitForConnectTimeoutInterval = timeout; }
42 int reconnectTimeout() const { return reconnectTimeoutInterval; }
43 void setReconnectTimeout(int timeout) { reconnectTimeoutInterval = timeout; }
44
45private:
46 int waitForConnectTimeoutInterval = 10000;
47 int reconnectTimeoutInterval = 10000;
48};
49} // namespace AsyncFw
The DataArraySocket class.
Definition DataArraySocket.h:17
The DataArray class.
Definition DataArray.h:20