24 #ifndef __FIREVISION_FVUTILS_NET_FUSE_MESSAGE_H_ 25 #define __FIREVISION_FVUTILS_NET_FUSE_MESSAGE_H_ 27 #include <core/utils/refcount.h> 28 #include <core/exceptions/software.h> 29 #include <fvutils/net/fuse.h> 30 #include <sys/types.h> 39 class FuseMessageContent;
47 bool copy_payload =
false);
52 uint32_t type()
const;
53 size_t payload_size()
const;
54 void * payload()
const;
65 template <
typename MT>
69 if ( payload_size() !=
sizeof(MT) ) {
72 return (MT *)(_msg.payload);
83 template <
typename MT>
87 if ( payload_size() !=
sizeof(MT) ) {
90 void *tmp = malloc(
sizeof(MT));
91 memcpy(tmp, _msg.payload,
sizeof(MT));
105 template <
typename MT>
110 MT *m =
new MT(type(), _msg.payload, payload_size());
115 throw fawkes::Exception(
"Unknown exception caught while parsing complex network message");
121 void set_payload(
void *payload,
size_t payload_size);
FUSE_message_t _msg
Internal message.
MT * msg_copy() const
Get copy of correctly casted payload.
MT * msgc() const
Get correctly parsed output.
Base class for exceptions in Fawkes.
Reference counting base class.
MT * msg() const
Get correctly casted payload.