24 #ifndef _NETCOMM_FAWKES_SERVER_THREAD_H_
25 #define _NETCOMM_FAWKES_SERVER_THREAD_H_
27 #include <core/threading/thread.h>
28 #include <core/utils/lock_map.h>
29 #include <netcomm/fawkes/hub.h>
30 #include <netcomm/utils/incoming_connection_handler.h>
37 class ThreadCollector;
39 class FawkesNetworkServerClientThread;
40 class NetworkAcceptorThread;
41 class FawkesNetworkHandler;
42 class FawkesNetworkMessage;
43 class FawkesNetworkMessageQueue;
44 class FawkesNetworkMessageContent;
53 const std::string &listen_ipv4,
54 const std::string &listen_ipv6,
55 unsigned int fawkes_port,
65 virtual void broadcast(
unsigned short int component_id,
66 unsigned short int msg_id,
68 unsigned int payload_size);
69 virtual void broadcast(
unsigned short int component_id,
unsigned short int msg_id);
73 send(
unsigned int to_clid,
unsigned short int component_id,
unsigned short int msg_id);
74 virtual void send(
unsigned int to_clid,
75 unsigned short int component_id,
76 unsigned short int msg_id,
78 unsigned int payload_size);
79 virtual void send(
unsigned int to_clid,
80 unsigned short int component_id,
81 unsigned short int msg_id,
99 unsigned int next_client_id;
100 std::vector<NetworkAcceptorThread *> acceptor_threads;
Network handler abstract base class.
Fawkes network message content.
A LockQueue of FawkesNetworkMessage to hold messages in inbound and outbound queues.
Representation of a message that is sent over the network.
virtual void broadcast(FawkesNetworkMessage *msg)
Broadcast a message.
void add_connection(StreamSocket *s)
Add a new connection.
void dispatch(FawkesNetworkMessage *msg)
Dispatch messages.
virtual void add_handler(FawkesNetworkHandler *handler)
Add a handler.
virtual void loop()
Fawkes network thread loop.
virtual ~FawkesNetworkServerThread()
Destructor.
void force_send()
Force sending of all pending messages.
virtual void run()
Stub to see name in backtrace for easier debugging.
virtual void remove_handler(FawkesNetworkHandler *handler)
Remove handler.
virtual void send(FawkesNetworkMessage *msg)
Send a message.
FawkesNetworkServerThread(bool enable_ipv4, bool enable_ipv6, const std::string &listen_ipv4, const std::string &listen_ipv6, unsigned int fawkes_port, ThreadCollector *thread_collector=0)
Constructor.
Interface for handling incoming connections.
TCP stream socket over IP.
Thread class encapsulation of pthreads.
virtual void run()
Code to execute in the thread.
Fawkes library namespace.