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>
34 namespace firevision {
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);