24 #include <core/exceptions/software.h>
25 #include <fvutils/net/fuse_message.h>
26 #include <fvutils/net/fuse_message_content.h>
31 #include <netinet/in.h>
50 FuseNetworkMessage::FuseNetworkMessage()
52 memset(&_msg, 0,
sizeof(_msg));
74 FuseNetworkMessage::FuseNetworkMessage(FUSE_message_type_t type,
75 void *payload,
size_t payload_size,
79 _msg.header.message_type = htonl(type);
80 _msg.header.payload_size = htonl(payload_size);
83 _msg.payload = malloc(payload_size);
84 memcpy(_msg.payload, payload, payload_size);
86 _msg.payload = payload;
95 FuseNetworkMessage::FuseNetworkMessage(FUSE_message_type_t type)
98 _msg.header.message_type = htonl(type);
99 _msg.header.payload_size = htonl(0);
112 _msg.header.message_type = htonl(type);
113 _msg.header.payload_size = htonl(0);
118 FuseNetworkMessage::~FuseNetworkMessage()
120 if ( __content == NULL ) {
121 if ( _msg.payload != NULL ) {
126 __content->free_payload();
135 FuseNetworkMessage::type()
const
137 return ntohl(_msg.header.message_type);
145 FuseNetworkMessage::payload_size()
const
147 return ntohl(_msg.header.payload_size);
155 FuseNetworkMessage::payload()
const
165 FuseNetworkMessage::fmsg()
const
177 FuseNetworkMessage::set_payload(
void *payload,
size_t payload_size)
179 if ( payload_size > 0xFFFFFFFF ) {
183 _msg.payload = payload;
184 _msg.header.payload_size = htonl(payload_size);
202 FuseNetworkMessage::pack()
204 if ( __content != NULL ) {
205 __content->serialize();
206 _msg.payload = __content->payload();
207 _msg.header.payload_size = htonl(__content->payload_size());