fawkes::FawkesNetworkServerThread Class Reference
[Fawkes Network Communication]
Fawkes Network Thread.
More...
#include <netcomm/fawkes/server_thread.h>

Public Member Functions | |
| FawkesNetworkServerThread (unsigned int fawkes_port, ThreadCollector *thread_collector=0) | |
| Constructor. | |
| virtual | ~FawkesNetworkServerThread () |
| Destructor. | |
| virtual void | loop () |
| Fawkes network thread loop. | |
| virtual void | add_handler (FawkesNetworkHandler *handler) |
| Add a handler. | |
| virtual void | remove_handler (FawkesNetworkHandler *handler) |
| Remove handler. | |
| virtual void | broadcast (FawkesNetworkMessage *msg) |
| Broadcast a message. | |
| virtual void | broadcast (unsigned short int component_id, unsigned short int msg_id, void *payload, unsigned int payload_size) |
| Broadcast a message. | |
| virtual void | broadcast (unsigned short int component_id, unsigned short int msg_id) |
| Broadcast message without payload. | |
| virtual void | send (FawkesNetworkMessage *msg) |
| Send a message. | |
| virtual void | send (unsigned int to_clid, unsigned short int component_id, unsigned short int msg_id) |
| Send a message without payload. | |
| 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. | |
| virtual void | send (unsigned int to_clid, unsigned short int component_id, unsigned short int msg_id, FawkesNetworkMessageContent *content) |
| Send a message. | |
| void | add_connection (StreamSocket *s) throw () |
| Add a new connection. | |
| void | dispatch (FawkesNetworkMessage *msg) |
| Dispatch messages. | |
| void | force_send () |
| Force sending of all pending messages. | |
Protected Member Functions | |
| virtual void | run () |
| Stub to see name in backtrace for easier debugging. | |
Detailed Description
Fawkes Network Thread.Maintains a list of clients and reacts on events triggered by the clients. Also runs the acceptor thread.
Definition at line 43 of file server_thread.h.
Constructor & Destructor Documentation
| fawkes::FawkesNetworkServerThread::FawkesNetworkServerThread | ( | unsigned int | fawkes_port, | |
| ThreadCollector * | thread_collector = 0 | |||
| ) |
Constructor.
- Parameters:
-
thread_collector thread collector to register new threads with fawkes_port port for Fawkes network protocol
Definition at line 52 of file server_thread.cpp.
References fawkes::ThreadCollector::add(), and fawkes::Thread::start().
| fawkes::FawkesNetworkServerThread::~FawkesNetworkServerThread | ( | ) | [virtual] |
Destructor.
Definition at line 72 of file server_thread.cpp.
References fawkes::Thread::cancel(), fawkes::Thread::join(), and fawkes::ThreadCollector::remove().
Member Function Documentation
| void fawkes::FawkesNetworkServerThread::add_connection | ( | StreamSocket * | s | ) | throw () [virtual] |
Add a new connection.
Called by the NetworkAcceptorThread if a new client connected.
- Parameters:
-
s socket for new client
Implements fawkes::NetworkIncomingConnectionHandler.
Definition at line 100 of file server_thread.cpp.
References fawkes::FawkesNetworkServerClientThread::set_clid(), and fawkes::Thread::start().
| void fawkes::FawkesNetworkServerThread::add_handler | ( | FawkesNetworkHandler * | handler | ) | [virtual] |
Add a handler.
- Parameters:
-
handler to add.
Implements fawkes::FawkesNetworkHub.
Definition at line 126 of file server_thread.cpp.
References fawkes::FawkesNetworkHandler::id(), fawkes::LockMap< KeyType, ValueType, LessKey >::lock(), and fawkes::LockMap< KeyType, ValueType, LessKey >::unlock().
| void fawkes::FawkesNetworkServerThread::broadcast | ( | unsigned short int | component_id, | |
| unsigned short int | msg_id | |||
| ) | [virtual] |
Broadcast message without payload.
- Parameters:
-
component_id component ID msg_id message type ID
Implements fawkes::FawkesNetworkHub.
Definition at line 253 of file server_thread.cpp.
References broadcast(), and fawkes::RefCount::unref().
| void fawkes::FawkesNetworkServerThread::broadcast | ( | unsigned short int | component_id, | |
| unsigned short int | msg_id, | |||
| void * | payload, | |||
| unsigned int | payload_size | |||
| ) | [virtual] |
Broadcast a message.
A FawkesNetworkMessage is created and broacasted via the emitter.
- Parameters:
-
component_id component ID msg_id message type id payload payload buffer payload_size size of payload buffer
- See also:
- FawkesNetworkEmitter::broadcast()
Implements fawkes::FawkesNetworkHub.
Definition at line 238 of file server_thread.cpp.
References broadcast(), and fawkes::RefCount::unref().
| void fawkes::FawkesNetworkServerThread::broadcast | ( | FawkesNetworkMessage * | msg | ) | [virtual] |
Broadcast a message.
Method to broadcast a message to all connected clients.
- Parameters:
-
msg Message to broadcast
Implements fawkes::FawkesNetworkHub.
Definition at line 219 of file server_thread.cpp.
Referenced by 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.
- Parameters:
-
msg message to dispatch
Definition at line 351 of file server_thread.cpp.
References fawkes::LockQueue< Type >::push_locked(), and fawkes::RefCount::ref().
| void fawkes::FawkesNetworkServerThread::force_send | ( | ) | [virtual] |
Force sending of all pending messages.
Implements fawkes::FawkesNetworkHub.
Definition at line 204 of file server_thread.cpp.
References fawkes::LockMap< KeyType, ValueType, LessKey >::lock(), and fawkes::LockMap< KeyType, ValueType, LessKey >::unlock().
| void fawkes::FawkesNetworkServerThread::loop | ( | ) | [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 159 of file server_thread.cpp.
References fawkes::FawkesNetworkMessage::cid(), fawkes::LockQueue< Type >::lock(), fawkes::LockMap< KeyType, ValueType, LessKey >::lock(), fawkes::ThreadCollector::remove(), fawkes::LockMap< KeyType, ValueType, LessKey >::unlock(), fawkes::LockQueue< Type >::unlock(), and fawkes::RefCount::unref().
| void fawkes::FawkesNetworkServerThread::remove_handler | ( | FawkesNetworkHandler * | handler | ) | [virtual] |
Remove handler.
- Parameters:
-
handler handler to remove
Implements fawkes::FawkesNetworkHub.
Definition at line 142 of file server_thread.cpp.
References fawkes::FawkesNetworkHandler::id(), fawkes::LockMap< KeyType, ValueType, LessKey >::lock(), and fawkes::LockMap< KeyType, ValueType, LessKey >::unlock().
| virtual void fawkes::FawkesNetworkServerThread::run | ( | ) | [inline, protected, virtual] |
Stub to see name in backtrace for easier debugging.
- See also:
- Thread::run()
Reimplemented from fawkes::Thread.
Definition at line 79 of file server_thread.h.
| void fawkes::FawkesNetworkServerThread::send | ( | unsigned int | to_clid, | |
| unsigned short int | component_id, | |||
| unsigned short int | msg_id, | |||
| FawkesNetworkMessageContent * | content | |||
| ) | [virtual] |
Send a message.
A FawkesNetworkMessage is created and sent via the emitter.
- Parameters:
-
to_clid client ID of recipient component_id component ID msg_id message type id content Fawkes complex network message content
- See also:
- FawkesNetworkEmitter::broadcast()
Implements fawkes::FawkesNetworkHub.
Definition at line 315 of file server_thread.cpp.
References send(), and fawkes::RefCount::unref().
| void fawkes::FawkesNetworkServerThread::send | ( | unsigned int | to_clid, | |
| unsigned short int | component_id, | |||
| unsigned short int | msg_id, | |||
| void * | payload, | |||
| unsigned int | payload_size | |||
| ) | [virtual] |
Send a message.
A FawkesNetworkMessage is created and sent via the emitter.
- Parameters:
-
to_clid client ID of recipient component_id component ID msg_id message type id payload payload buffer payload_size size of payload buffer
- See also:
- FawkesNetworkEmitter::broadcast()
Implements fawkes::FawkesNetworkHub.
Definition at line 295 of file server_thread.cpp.
References send(), and fawkes::RefCount::unref().
| void fawkes::FawkesNetworkServerThread::send | ( | unsigned int | to_clid, | |
| unsigned short int | component_id, | |||
| unsigned short int | msg_id | |||
| ) | [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.
- Parameters:
-
to_clid client ID of recipient component_id component ID msg_id message type id
- See also:
- FawkesNetworkEmitter::broadcast()
Implements fawkes::FawkesNetworkHub.
Definition at line 335 of file server_thread.cpp.
References send(), and fawkes::RefCount::unref().
| void fawkes::FawkesNetworkServerThread::send | ( | FawkesNetworkMessage * | msg | ) | [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 the message shall be silently ignored. Implemented Emitter interface message.
- Parameters:
-
msg Message to send
Implements fawkes::FawkesNetworkHub.
Definition at line 270 of file server_thread.cpp.
References fawkes::FawkesNetworkMessage::clid().
Referenced by send().
The documentation for this class was generated from the following files:
- src/libs/netcomm/fawkes/server_thread.h
- src/libs/netcomm/fawkes/server_thread.cpp

