fawkes::FawkesNetworkServerThread Class Reference
[Fawkes Network Communication]

Fawkes Network Thread. More...

#include <netcomm/fawkes/server_thread.h>

Inheritance diagram for fawkes::FawkesNetworkServerThread:

[legend]
List of all members.

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.

Author:
Tim Niemueller

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().

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 257 of file server_thread.cpp.

References broadcast().

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 242 of file server_thread.cpp.

References broadcast().

void fawkes::FawkesNetworkServerThread::broadcast ( FawkesNetworkMessage msg  )  [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.

Parameters:
msg Message to broadcast

Implements fawkes::FawkesNetworkHub.

Definition at line 221 of file server_thread.cpp.

References fawkes::RefCount::ref(), and fawkes::RefCount::unref().

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 354 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.

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::LockQueue< Type >::lock(), and fawkes::LockQueue< Type >::unlock().

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().

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.

References fawkes::Thread::run().

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 320 of file server_thread.cpp.

References send().

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 301 of file server_thread.cpp.

References send().

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 339 of file server_thread.cpp.

References send().

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. 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.

Parameters:
msg Message to send

Implements fawkes::FawkesNetworkHub.

Definition at line 276 of file server_thread.cpp.

References fawkes::FawkesNetworkMessage::clid().

Referenced by send().


The documentation for this class was generated from the following files:
Generated on Tue Feb 22 13:32:52 2011 for Fawkes API by  doxygen 1.4.7