5 #include <unordered_map>
6 #include <unordered_set>
23 using std::unique_ptr;
24 using std::unordered_map;
25 using std::unordered_set;
101 virtual void identify(
const UDPPacket* packet,
MessageType& messageType, uint32_t& connectionId, uint32_t& messageId, uint8_t& retries);
Base exception class for network server exceptions.
Base class for network server groups.
Simple server worker thread pool class.
Base class for network servers.
Base class for network UDP server clients.
UDP Network server IO thread.
Base class for network UDP servers.
UDPServer_Statistics statistics
virtual void identify(const UDPPacket *packet, MessageType &messageType, uint32_t &connectionId, uint32_t &messageId, uint8_t &retries)
Identifies a client message.
virtual void validate(const UDPPacket *packet)
Validates a client message.
virtual void run()
main event loop
unique_ptr< ServerWorkerThreadPool > workerThreadPool
static const uint32_t MESSAGE_ID_NONE
virtual UDPServerClient * accept(const uint32_t clientId, const string &ip, const uint16_t port)
method to implement for accepting clients
void processAckReceived(UDPServerClient *client, const uint32_t messageId)
Processes an acknowlegdement reception.
UDPServerClient * getClientByIp(const string &ip, const uint16_t port)
Returns client by host name and port.
static void initializeHeader(UDPPacket *packet)
Writes a empty header to packet.
ReadWriteLock clientIpMapReadWriteLock
virtual ~UDPServer()
destructor
const UDPServer_Statistics getStatistics()
void addClient(UDPServerClient *client)
maps a new client to a given client id
UDPServerClient * lookupClient(const uint32_t clientId)
Look ups a client by client id.
vector< unique_ptr< UDPServerIOThread > > ioThreads
UDPServer(const string &name, const string &host, const unsigned int port, const unsigned int maxCCU)
Public constructor.
void cleanUpClients()
Clean up clients that have been idle for some time or are flagged to be shut down.
static const uint64_t CLIENT_CLEANUP_IDLETIME
unordered_map< string, UDPServerClient * > ClientIpMap
unordered_set< UDPServerClient * > ClientSet
@ MESSAGETYPE_ACKNOWLEDGEMENT
ReadWriteLock clientIdMapReadWriteLock
unordered_map< uint32_t, ClientId * > ClientIdMap
void sendMessage(const UDPServerClient *client, UDPPacket *packet, const bool safe, const bool deleteFrame, const MessageType messageType, const uint32_t messageId=MESSAGE_ID_NONE)
pushes a message to be send, takes over ownership of frame
const uint32_t allocateClientId()
Allocates a client id for a new client.
virtual void writeHeader(UDPPacket *packet, MessageType messageType, const uint32_t clientId, const uint32_t messageId, const uint8_t retries)
Writes a message header to message.
void removeClient(UDPServerClient *client)
removes a client
Implementation for read/write lock.
#define FORBID_CLASS_COPY(CLASS)