Fawkes API
Fawkes Development Version
|
#include <>>
Public Member Functions | |
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. More... | |
virtual | ~FawkesNetworkServerThread () |
Destructor. More... | |
virtual void | loop () |
Fawkes network thread loop. More... | |
virtual void | add_handler (FawkesNetworkHandler *handler) |
Add a handler. More... | |
virtual void | remove_handler (FawkesNetworkHandler *handler) |
Remove handler. More... | |
virtual void | broadcast (FawkesNetworkMessage *msg) |
Broadcast a message. More... | |
virtual void | broadcast (unsigned short int component_id, unsigned short int msg_id, void *payload, unsigned int payload_size) |
Broadcast a message. More... | |
virtual void | broadcast (unsigned short int component_id, unsigned short int msg_id) |
Broadcast message without payload. More... | |
virtual void | send (FawkesNetworkMessage *msg) |
Send a message. More... | |
virtual void | send (unsigned int to_clid, unsigned short int component_id, unsigned short int msg_id) |
Send a message without payload. More... | |
virtual void | send (unsigned int to_clid, unsigned short int component_id, unsigned short int msg_id, void *payload, unsigned int payload_size) |
Send a message. More... | |
virtual void | send (unsigned int to_clid, unsigned short int component_id, unsigned short int msg_id, FawkesNetworkMessageContent *content) |
Send a message. More... | |
void | add_connection (StreamSocket *s) throw () |
Add a new connection. More... | |
void | dispatch (FawkesNetworkMessage *msg) |
Dispatch messages. More... | |
void | force_send () |
Force sending of all pending messages. More... | |
![]() | |
virtual | ~Thread () |
Virtual destructor. More... | |
virtual void | init () |
Initialize the thread. More... | |
bool | prepare_finalize () |
Prepare finalization. More... | |
virtual bool | prepare_finalize_user () |
Prepare finalization user implementation. More... | |
virtual void | finalize () |
Finalize the thread. More... | |
void | cancel_finalize () |
Cancel finalization. More... | |
void | start (bool wait=true) |
Call this method to start the thread. More... | |
void | cancel () |
Cancel a thread. More... | |
void | join () |
Join the thread. More... | |
void | detach () |
Detach the thread. More... | |
void | kill (int sig) |
Send signal to a thread. More... | |
bool | operator== (const Thread &thread) |
Check if two threads are the same. More... | |
void | wakeup () |
Wake up thread. More... | |
void | wakeup (Barrier *barrier) |
Wake up thread and wait for barrier afterwards. More... | |
void | wait_loop_done () |
Wait for the current loop iteration to finish. More... | |
OpMode | opmode () const |
Get operation mode. More... | |
pthread_t | thread_id () const |
Get ID of thread. More... | |
bool | started () const |
Check if thread has been started. More... | |
bool | cancelled () const |
Check if thread has been cancelled. More... | |
bool | detached () const |
Check if thread has been detached. More... | |
bool | running () const |
Check if the thread is running. More... | |
bool | waiting () const |
Check if thread is currently waiting for wakeup. More... | |
const char * | name () const |
void | set_flags (uint32_t flags) |
Set all flags in one go. More... | |
void | set_flag (uint32_t flag) |
Set flag for the thread. More... | |
void | unset_flag (uint32_t flag) |
Unset flag. More... | |
bool | flagged_bad () const |
Check if FLAG_BAD was set. More... | |
void | set_delete_on_exit (bool del) |
Set whether the thread should be deleted on exit. More... | |
void | set_prepfin_hold (bool hold) |
Hold prepare_finalize(). More... | |
void | add_notification_listener (ThreadNotificationListener *notification_listener) |
Add notification listener. More... | |
void | remove_notification_listener (ThreadNotificationListener *notification_listener) |
Remove notification listener. More... | |
void | notify_of_failed_init () |
Notify of failed init. More... | |
void | add_loop_listener (ThreadLoopListener *loop_listener) |
Add loop listener. More... | |
void | remove_loop_listener (ThreadLoopListener *loop_listener) |
Remove loop listener. More... | |
![]() | |
virtual | ~FawkesNetworkHub () |
Virtual empty destructor. More... | |
![]() | |
virtual | ~NetworkIncomingConnectionHandler () |
Virtual destructor. More... | |
Protected Member Functions | |
virtual void | run () |
Stub to see name in backtrace for easier debugging. More... | |
![]() | |
Thread (const char *name) | |
Constructor. More... | |
Thread (const char *name, OpMode op_mode) | |
Constructor. More... | |
void | exit () |
Exit the thread. More... | |
void | test_cancel () |
Set cancellation point. More... | |
void | yield () |
Yield the processor to another thread or process. More... | |
void | set_opmode (OpMode op_mode) |
Set operation mode. More... | |
void | set_prepfin_conc_loop (bool concurrent=true) |
Set concurrent execution of prepare_finalize() and loop(). More... | |
void | set_coalesce_wakeups (bool coalesce=true) |
Set wakeup coalescing. More... | |
void | set_name (const char *format,...) |
Set name of thread. More... | |
virtual void | once () |
Execute an action exactly once. More... | |
bool | wakeup_pending () |
Check if wakeups are pending. More... | |
Additional Inherited Members | |
![]() | |
enum | OpMode { OPMODE_CONTINUOUS, OPMODE_WAITFORWAKEUP } |
Thread operation mode. More... | |
enum | CancelState { CANCEL_ENABLED, CANCEL_DISABLED } |
Cancel state. More... | |
![]() | |
static Thread * | current_thread () |
Get the Thread instance of the currently running thread. More... | |
static Thread * | current_thread_noexc () throw () |
Similar to current_thread, but does never throw an exception. More... | |
static pthread_t | current_thread_id () |
Get the ID of the currently running thread. More... | |
static std::string | current_thread_name () |
Get the name of the current thread. More... | |
static void | current_thread_name (const std::string &thread_name) |
Set the name of the current thread. More... | |
static void | init_main () |
Initialize Thread wrapper instance for main thread. More... | |
static void | destroy_main () |
Destroy main thread wrapper instance. More... | |
static void | set_cancel_state (CancelState new_state, CancelState *old_state=0) |
Set the cancel state of the current thread. More... | |
![]() | |
static const unsigned int | FLAG_BAD = 0x00000001 |
Standard thread flag: "thread is bad". More... | |
![]() | |
bool | finalize_prepared |
Mutex * | loop_mutex |
Mutex * | loopinterrupt_antistarve_mutex |
Fawkes Network Thread. Maintains a list of clients and reacts on events triggered by the clients. Also runs the acceptor thread.
Definition at line 50 of file server_thread.h.
fawkes::FawkesNetworkServerThread::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.
enable_ipv4 | true to listen on the IPv4 TCP port |
enable_ipv6 | true to listen on the IPv6 TCP port |
listen_ipv4 | IPv4 address to listen on for incoming connections, 0.0.0.0 to listen on any local address |
listen_ipv6 | IPv6 address to listen on for incoming connections, :: to listen on any local address |
fawkes_port | port for Fawkes network protocol |
thread_collector | thread collector to register new threads with |
Definition at line 63 of file server_thread.cpp.
References fawkes::ThreadCollector::add(), fawkes::Socket::IPv4, and fawkes::Socket::IPv6.
|
virtual |
Destructor.
Definition at line 97 of file server_thread.cpp.
|
virtual |
Add a new connection.
Called by the NetworkAcceptorThread if a new client connected.
s | socket for new client |
Implements fawkes::NetworkIncomingConnectionHandler.
Definition at line 127 of file server_thread.cpp.
|
virtual |
Add a handler.
handler | to add. |
Implements fawkes::FawkesNetworkHub.
Definition at line 155 of file server_thread.cpp.
|
virtual |
Broadcast a message.
Method to broadcast a message to all connected clients. This method will take ownership of the passed message. If you want to use if after enqueing it you must reference it explicitly before calling this method.
msg | Message to broadcast |
Implements fawkes::FawkesNetworkHub.
Definition at line 254 of file server_thread.cpp.
Referenced by broadcast().
|
virtual |
Broadcast message without payload.
component_id | component ID |
msg_id | message type ID |
Implements fawkes::FawkesNetworkHub.
Definition at line 290 of file server_thread.cpp.
|
virtual |
Broadcast a message.
A FawkesNetworkMessage is created and broacasted via the emitter.
component_id | component ID |
msg_id | message type id |
payload | payload buffer |
payload_size | size of payload buffer |
Implements fawkes::FawkesNetworkHub.
Definition at line 276 of file server_thread.cpp.
References broadcast().
void fawkes::FawkesNetworkServerThread::dispatch | ( | FawkesNetworkMessage * | msg | ) |
Dispatch messages.
Actually messages are just put into the inbound message queue and dispatched during the next loop iteration. So after adding all the messages you have to wakeup the thread to get them actually dispatched.
msg | message to dispatch |
Definition at line 382 of file server_thread.cpp.
Referenced by fawkes::FawkesNetworkServerClientThread::set_clid().
|
virtual |
Force sending of all pending messages.
Implements fawkes::FawkesNetworkHub.
Definition at line 238 of file server_thread.cpp.
|
virtual |
Fawkes network thread loop.
The thread loop will check all clients for their alivness and dead clients are removed. Then inbound messages are processed and dispatched properly to registered handlers. Then the thread waits for a new event to happen (event emitting threads need to wakeup this thread!).
Reimplemented from fawkes::Thread.
Definition at line 183 of file server_thread.cpp.
|
virtual |
Remove handler.
handler | handler to remove |
Implements fawkes::FawkesNetworkHub.
Definition at line 168 of file server_thread.cpp.
|
inlineprotectedvirtual |
Stub to see name in backtrace for easier debugging.
Reimplemented from fawkes::Thread.
Definition at line 96 of file server_thread.h.
|
virtual |
Send a message.
Method to send a message to a specific client. The client ID provided in the message is used to determine the correct recipient. If no client is connected for the given client ID or the client is not alive, the message shall be silently ignored. This method will take ownership of the passed message. If you want to use if after enqueing it you must reference it explicitly before calling this method. Implemented Emitter interface message.
msg | Message to send |
Implements fawkes::FawkesNetworkHub.
Definition at line 308 of file server_thread.cpp.
Referenced by send().
|
virtual |
Send a message without payload.
A FawkesNetworkMessage with empty payload is created and sent via the emitter. This is particularly useful for simple status messages that you want to send.
to_clid | client ID of recipient |
component_id | component ID |
msg_id | message type id |
Implements fawkes::FawkesNetworkHub.
Definition at line 367 of file server_thread.cpp.
|
virtual |
Send a message.
A FawkesNetworkMessage is created and sent via the emitter.
to_clid | client ID of recipient |
component_id | component ID |
msg_id | message type id |
content | Fawkes complex network message content |
Implements fawkes::FawkesNetworkHub.
Definition at line 349 of file server_thread.cpp.
References send().
|
virtual |
Send a message.
A FawkesNetworkMessage is created and sent via the emitter.
to_clid | client ID of recipient |
component_id | component ID |
msg_id | message type id |
payload | payload buffer |
payload_size | size of payload buffer |
Implements fawkes::FawkesNetworkHub.
Definition at line 329 of file server_thread.cpp.
References send().