Fawkes API  Fawkes Development Version
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages

FUSE Network Message. More...

#include <>>

Inheritance diagram for firevision::FuseNetworkMessage:

Public Member Functions

 FuseNetworkMessage ()
 Constructor. More...
 
 FuseNetworkMessage (FUSE_message_t *msg)
 Constructor. More...
 
 FuseNetworkMessage (FUSE_message_type_t type, void *payload, size_t payload_size, bool copy_payload=false)
 Constructor. More...
 
 FuseNetworkMessage (FUSE_message_type_t type, FuseMessageContent *content)
 Content constructor. More...
 
 FuseNetworkMessage (FUSE_message_type_t type)
 Constructor without payload. More...
 
 ~FuseNetworkMessage ()
 Destructor. More...
 
uint32_t type () const
 Get message type. More...
 
size_t payload_size () const
 Get payload size. More...
 
void * payload () const
 Get pointer to payload. More...
 
const FUSE_message_tfmsg () const
 Get plain message. More...
 
template<typename MT >
MT * msg () const
 Get correctly casted payload. More...
 
template<typename MT >
MT * msg_copy () const
 Get copy of correctly casted payload. More...
 
template<typename MT >
MT * msgc () const
 Get correctly parsed output. More...
 
void pack ()
 Pack data for sending. More...
 
void set_payload (void *payload, size_t payload_size)
 Set payload. More...
 
void set (FUSE_message_t &msg)
 Set from message. More...
 
- Public Member Functions inherited from fawkes::RefCount
 RefCount ()
 Constructor. More...
 
virtual ~RefCount ()
 Destructor. More...
 
void ref ()
 Increment reference count. More...
 
void unref ()
 Decrement reference count and conditionally delete this instance. More...
 
unsigned int refcount ()
 Get reference count for this instance. More...
 

Protected Attributes

FUSE_message_t _msg
 Internal message. More...
 

Detailed Description

FUSE Network Message.

This is the basic entity for messages that are sent over the network. Either just use this message to send arbitrary payload or derive this class for more complex behavior or nice encapsulations of messages.

Author
Tim Niemueller

Definition at line 41 of file fuse_message.h.

Constructor & Destructor Documentation

firevision::FuseNetworkMessage::FuseNetworkMessage ( )

Constructor.

Definition at line 50 of file fuse_message.cpp.

firevision::FuseNetworkMessage::FuseNetworkMessage ( FUSE_message_t msg)

Constructor.

Parameters
msgmessage information to copy

Definition at line 60 of file fuse_message.cpp.

firevision::FuseNetworkMessage::FuseNetworkMessage ( FUSE_message_type_t  type,
void *  payload,
size_t  payload_size,
bool  copy_payload = false 
)

Constructor.

Parameters
typemessage type
payloadpayload
payload_sizesize of payload
copy_payloadif true payload is copied, otherwise payload is referenced and ownership of payload is claimed.

Definition at line 74 of file fuse_message.cpp.

firevision::FuseNetworkMessage::FuseNetworkMessage ( FUSE_message_type_t  type,
FuseMessageContent content 
)

Content constructor.

Construct a message with complex message content.

Parameters
typeFUSE message type
contentcomplex message content.

Definition at line 109 of file fuse_message.cpp.

firevision::FuseNetworkMessage::FuseNetworkMessage ( FUSE_message_type_t  type)

Constructor without payload.

Constructs message without payload.

Parameters
typeFUSE message type

Definition at line 95 of file fuse_message.cpp.

firevision::FuseNetworkMessage::~FuseNetworkMessage ( )

Destructor.

Definition at line 118 of file fuse_message.cpp.

Member Function Documentation

const FUSE_message_t & firevision::FuseNetworkMessage::fmsg ( ) const

Get plain message.

Returns
plain message

Definition at line 165 of file fuse_message.cpp.

Referenced by firevision::FuseNetworkTransceiver::send().

template<typename MT >
MT* firevision::FuseNetworkMessage::msg ( ) const
inline

Get correctly casted payload.

Use this method to cast the payload to a specific type. The size is check as a sanity check and a TypeMismatchException is thrown if the size does not match.

Returns
casted message
Exceptions
TypeMismatchExceptionpayload size does not match requested type

Definition at line 67 of file fuse_message.h.

Referenced by firevision::FuseClient::loop(), firevision::FuseServerClientThread::process_getimage_message(), firevision::FuseServerClientThread::process_getimageinfo_message(), firevision::FuseServerClientThread::process_getlut_message(), and firevision::FuseServerClientThread::process_greeting_message().

template<typename MT >
MT* firevision::FuseNetworkMessage::msg_copy ( ) const
inline

Get copy of correctly casted payload.

Use this method to cast the payload to a specific type. The size is check as a sanity check and a TypeMismatchException is thrown if the size does not match.

Returns
copy of casted message
Exceptions
TypeMismatchExceptionpayload size does not match requested type

Definition at line 85 of file fuse_message.h.

template<typename MT >
MT* firevision::FuseNetworkMessage::msgc ( ) const
inline

Get correctly parsed output.

Use this method to cast the payload to a specific complex type. You can use this routine to parse complex messages that are derived from FuseComplexMessageContent. Note that the class must provide a constructor that takes three parameters: The message type, a pointer to the payload and the payload size. From this the class shall parse the output and throw an exception if that for whatever reason fails.

Returns
casted message
Exceptions
TypeMismatchExceptionpayload size does not match requested type

Definition at line 107 of file fuse_message.h.

Referenced by firevision::FuseServerClientThread::process_setlut_message().

void firevision::FuseNetworkMessage::pack ( )

Pack data for sending.

Use this if any additional packing is needed before sending the data (for example if using a DynamicBuffer).

Definition at line 202 of file fuse_message.cpp.

Referenced by firevision::FuseNetworkTransceiver::send().

void * firevision::FuseNetworkMessage::payload ( ) const
void firevision::FuseNetworkMessage::set ( FUSE_message_t msg)

Set from message.

Parameters
msgreference to message. Content is deep-copied.

Definition at line 192 of file fuse_message.cpp.

void firevision::FuseNetworkMessage::set_payload ( void *  payload,
size_t  payload_size 
)

Set payload.

Payload is referenced and ownership claimed.

Parameters
payloadpayload
payload_sizesize of payload

Definition at line 177 of file fuse_message.cpp.

uint32_t firevision::FuseNetworkMessage::type ( ) const

Get message type.

Returns
message type

Definition at line 135 of file fuse_message.cpp.

Referenced by firevision::FuseClient::loop().

Member Data Documentation

FUSE_message_t firevision::FuseNetworkMessage::_msg
protected

Internal message.

Fill in derivatives.

Definition at line 127 of file fuse_message.h.


The documentation for this class was generated from the following files: