1 #ifndef _ots_TCPServerBase_h_
2 #define _ots_TCPServerBase_h_
10 #include "otsdaq/NetworkUtilities/TCPSocket.h"
18 unsigned int serverPort,
19 unsigned int maxNumberOfClients = 0);
22 void startAccept(
void);
23 void broadcastPacket(
const char* message, std::size_t length);
24 void broadcastPacket(
const std::string& message);
25 void broadcast(
const char* message, std::size_t length);
26 void broadcast(
const std::string& message);
27 void broadcast(
const std::vector<char>& message);
28 void broadcast(
const std::vector<uint16_t>& message);
31 virtual void acceptConnections() = 0;
33 void closeClientSocket(
int socket);
35 T* acceptClient(
bool blocking =
true)
37 int socketId = accept(blocking);
38 fConnectedClients.emplace(socketId,
new T(socketId));
39 return dynamic_cast<T*
>(fConnectedClients[socketId]);
42 void pingActiveClients(
void);
45 std::map<int, TCPSocket*> fConnectedClients;
46 std::map<int, std::future<void>> fConnectedClientsFuture;
47 const int E_SHUTDOWN = 0;
48 bool getAccept() {
return fAccept.load(); }
51 void closeClientSockets(
53 int accept(
bool blocking =
true);
54 void shutdownAccept(
void);
56 const int fMaxConnectionBacklog = 5;
57 unsigned int fMaxNumberOfClients;
58 unsigned int fServerPort;
59 std::atomic_bool fAccept;
61 std::future<void> fAcceptFuture;
TCPServerBase(unsigned int serverPort, unsigned int maxNumberOfClients=0)
Means as many unsigned allows.