Ember
Loading...
Searching...
No Matches
TCPServer.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <functional>
5#include <string>
6#include <vector>
7
9
10namespace Ember {
11namespace Monitor {
12
14class TCPServer {
15 public:
17 using MessageCallback = std::function<void(const Network::MessageFrame &)>;
19 using ConnectCallback = std::function<void(const std::string &address)>;
21 using DisconnectCallback = std::function<void()>;
22
23 TCPServer();
24 ~TCPServer();
25
27 bool Start(uint16_t port);
29 void Stop();
31 bool IsRunning() const { return m_serverSocket >= 0; }
33 bool IsClientConnected() const { return m_clientSocket >= 0; }
34
36 std::string GetClientAddress() const { return m_clientAddress; }
38 std::string GetClientName() const { return m_clientName; }
40 void SetClientName(const std::string &name) { m_clientName = name; }
42 uint16_t GetPort() const { return m_port; }
43
50
52 void Poll();
53
55 bool Send(const Network::MessageFrame &frame);
56
58 void DisconnectClient();
59
60 private:
61 void AcceptConnection();
62 void ReadFromClient();
63 bool SetNonBlocking(int socket);
64
67 std::string m_clientAddress;
68 std::string m_clientName;
69 uint16_t m_port = 0;
70
71 std::vector<uint8_t> m_recvBuffer;
72
76};
77
78} // namespace Monitor
79} // namespace Ember
void SetClientName(const std::string &name)
Sets the client's display name.
Definition TCPServer.h:40
ConnectCallback m_connectCallback
Definition TCPServer.h:74
void SetMessageCallback(MessageCallback cb)
Sets the callback for incoming messages.
Definition TCPServer.h:45
void Stop()
Stops the server and disconnects any client.
Definition TCPServer.cpp:72
uint16_t GetPort() const
Returns the port the server is listening on.
Definition TCPServer.h:42
bool Send(const Network::MessageFrame &frame)
Sends a message frame to the connected client. Returns true on success.
bool Start(uint16_t port)
Starts the server listening on the given port. Returns true on success.
Definition TCPServer.cpp:27
void SetDisconnectCallback(DisconnectCallback cb)
Sets the callback for client disconnections.
Definition TCPServer.h:49
DisconnectCallback m_disconnectCallback
Definition TCPServer.h:75
std::function< void()> DisconnectCallback
Callback invoked when the client disconnects.
Definition TCPServer.h:21
void DisconnectClient()
Disconnects the current client without stopping the server.
Definition TCPServer.cpp:82
std::vector< uint8_t > m_recvBuffer
Definition TCPServer.h:71
std::string GetClientName() const
Returns the client's display name.
Definition TCPServer.h:38
bool IsClientConnected() const
Returns true if a client is currently connected.
Definition TCPServer.h:33
bool IsRunning() const
Returns true if the server is listening.
Definition TCPServer.h:31
void SetConnectCallback(ConnectCallback cb)
Sets the callback for client connections.
Definition TCPServer.h:47
std::string m_clientAddress
Definition TCPServer.h:67
void Poll()
Processes pending I/O (accept, read). Call periodically from the main loop.
MessageCallback m_messageCallback
Definition TCPServer.h:73
std::string GetClientAddress() const
Returns the connected client's address string.
Definition TCPServer.h:36
std::function< void(const Network::MessageFrame &)> MessageCallback
Callback invoked when a message is received from the client.
Definition TCPServer.h:17
std::function< void(const std::string &address)> ConnectCallback
Callback invoked when a client connects.
Definition TCPServer.h:19
bool SetNonBlocking(int socket)
Definition TCPServer.cpp:19