Fawkes API
Fawkes Development Version
|
FUSE Network Message. More...
#include <>>
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_t & | fmsg () 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... | |
![]() | |
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... | |
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.
Definition at line 41 of file fuse_message.h.
firevision::FuseNetworkMessage::FuseNetworkMessage | ( | ) |
firevision::FuseNetworkMessage::FuseNetworkMessage | ( | FUSE_message_t * | msg | ) |
Constructor.
msg | message information to copy |
Definition at line 60 of file fuse_message.cpp.
References _msg.
firevision::FuseNetworkMessage::FuseNetworkMessage | ( | FUSE_message_type_t | type, |
void * | payload, | ||
size_t | payload_size, | ||
bool | copy_payload = false |
||
) |
Constructor.
type | message type |
payload | payload |
payload_size | size of payload |
copy_payload | if true payload is copied, otherwise payload is referenced and ownership of payload is claimed. |
Definition at line 74 of file fuse_message.cpp.
References _msg, firevision::FUSE_message_t::header, firevision::FUSE_header_t::message_type, payload(), firevision::FUSE_message_t::payload, and firevision::FUSE_header_t::payload_size.
firevision::FuseNetworkMessage::FuseNetworkMessage | ( | FUSE_message_type_t | type, |
FuseMessageContent * | content | ||
) |
Content constructor.
Construct a message with complex message content.
type | FUSE message type |
content | complex message content. |
Definition at line 109 of file fuse_message.cpp.
References _msg, firevision::FUSE_message_t::header, firevision::FUSE_header_t::message_type, firevision::FUSE_message_t::payload, and firevision::FUSE_header_t::payload_size.
firevision::FuseNetworkMessage::FuseNetworkMessage | ( | FUSE_message_type_t | type | ) |
Constructor without payload.
Constructs message without payload.
type | FUSE message type |
Definition at line 95 of file fuse_message.cpp.
References _msg, firevision::FUSE_message_t::header, firevision::FUSE_header_t::message_type, firevision::FUSE_message_t::payload, and firevision::FUSE_header_t::payload_size.
firevision::FuseNetworkMessage::~FuseNetworkMessage | ( | ) |
Destructor.
Definition at line 118 of file fuse_message.cpp.
References _msg, firevision::FuseMessageContent::free_payload(), and firevision::FUSE_message_t::payload.
const FUSE_message_t & firevision::FuseNetworkMessage::fmsg | ( | ) | const |
Get plain message.
Definition at line 165 of file fuse_message.cpp.
References _msg.
Referenced by firevision::FuseNetworkTransceiver::send().
|
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.
TypeMismatchException | payload size does not match requested type |
Definition at line 67 of file fuse_message.h.
References _msg, firevision::FUSE_message_t::payload, and payload_size().
Referenced by firevision::FuseClient::loop(), msgc(), firevision::FuseServerClientThread::process_getimage_message(), firevision::FuseServerClientThread::process_getimageinfo_message(), firevision::FuseServerClientThread::process_getlut_message(), and firevision::FuseServerClientThread::process_greeting_message().
|
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.
TypeMismatchException | payload size does not match requested type |
Definition at line 85 of file fuse_message.h.
References _msg, firevision::FUSE_message_t::payload, and payload_size().
|
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.
TypeMismatchException | payload size does not match requested type |
Definition at line 107 of file fuse_message.h.
References _msg, msg(), pack(), firevision::FUSE_message_t::payload, set_payload(), and type().
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.
References _msg, firevision::FUSE_message_t::header, firevision::FuseMessageContent::payload(), firevision::FUSE_message_t::payload, firevision::FuseMessageContent::payload_size(), firevision::FUSE_header_t::payload_size, and firevision::FuseMessageContent::serialize().
Referenced by msgc(), and firevision::FuseNetworkTransceiver::send().
void * firevision::FuseNetworkMessage::payload | ( | ) | const |
Get pointer to payload.
Definition at line 155 of file fuse_message.cpp.
References _msg, and firevision::FUSE_message_t::payload.
Referenced by FuseNetworkMessage(), firevision::FuseServerClientThread::process_getimage_message(), firevision::FuseServerClientThread::process_getimageinfo_message(), firevision::FuseServerClientThread::process_getlut_message(), and set_payload().
size_t firevision::FuseNetworkMessage::payload_size | ( | ) | const |
Get payload size.
Definition at line 145 of file fuse_message.cpp.
References _msg, firevision::FUSE_message_t::header, and firevision::FUSE_header_t::payload_size.
Referenced by msg(), msg_copy(), firevision::FuseServerClientThread::process_getimage_message(), firevision::FuseServerClientThread::process_getimageinfo_message(), firevision::FuseServerClientThread::process_getlut_message(), and firevision::FuseNetworkTransceiver::send().
void firevision::FuseNetworkMessage::set | ( | FUSE_message_t & | msg | ) |
Set from message.
msg | reference to message. Content is deep-copied. |
Definition at line 192 of file fuse_message.cpp.
References _msg.
void firevision::FuseNetworkMessage::set_payload | ( | void * | payload, |
size_t | payload_size | ||
) |
Set payload.
Payload is referenced and ownership claimed.
payload | payload |
payload_size | size of payload |
Definition at line 177 of file fuse_message.cpp.
References _msg, firevision::FUSE_message_t::header, payload(), firevision::FUSE_message_t::payload, and firevision::FUSE_header_t::payload_size.
Referenced by msgc().
uint32_t firevision::FuseNetworkMessage::type | ( | ) | const |
Get message type.
Definition at line 135 of file fuse_message.cpp.
References _msg, firevision::FUSE_message_t::header, and firevision::FUSE_header_t::message_type.
Referenced by firevision::FuseClient::loop(), msgc(), and firevision::FuseServerClientThread::process_getlutlist_message().
|
protected |
Internal message.
Fill in derivatives.
Definition at line 127 of file fuse_message.h.
Referenced by fmsg(), FuseNetworkMessage(), msg(), msg_copy(), msgc(), pack(), payload(), payload_size(), set(), set_payload(), type(), and ~FuseNetworkMessage().