24 #include <core/exception.h> 26 #include <netcomm/fawkes/message.h> 27 #include <netcomm/fawkes/message_content.h> 29 #include <netinet/in.h> 49 :
Exception(
"Network message size too big")
52 append(
"Tried to create message of %l bytes, while only %l bytes allowed", message_size,
89 memset(&_msg, 0,
sizeof(_msg));
127 void *payload,
size_t payload_size)
131 if ( payload_size > 0xFFFFFFFF ) {
135 _msg.header.cid = htons(cid);
136 _msg.header.msg_id = htons(msg_id);
137 _msg.header.payload_size = htonl(payload_size);
138 _msg.payload = payload;
154 if ( payload_size > 0xFFFFFFFF ) {
158 _msg.header.cid = htons(cid);
159 _msg.header.msg_id = htons(msg_id);
160 _msg.header.payload_size = htonl(payload_size);
161 _msg.payload = calloc(1, payload_size);
174 _msg.header.cid = htons(cid);
175 _msg.header.msg_id = htons(msg_id);
176 _msg.header.payload_size = 0;
192 _msg.header.cid = htons(cid);
193 _msg.header.msg_id = htons(msg_id);
194 _msg.header.payload_size = 0;
206 unsigned short int cid,
unsigned short int msg_id,
211 _msg.header.cid = htons(cid);
212 _msg.header.msg_id = htons(msg_id);
213 _msg.header.payload_size = 0;
227 unsigned short int cid,
unsigned short int msg_id,
228 void *payload,
size_t payload_size)
231 if ( payload_size > 0xFFFFFFFF ) {
236 _msg.header.cid = htons(cid);
237 _msg.header.msg_id = htons(msg_id);
238 _msg.header.payload_size = htonl(payload_size);
239 _msg.payload = payload;
249 unsigned short int cid,
unsigned short int msg_id)
253 _msg.header.cid = htons(cid);
254 _msg.header.msg_id = htons(msg_id);
255 _msg.header.payload_size = 0;
265 if ( _content == NULL ) {
266 if ( _msg.payload != NULL ) {
293 return ntohs(_msg.header.cid);
303 return ntohs(_msg.header.msg_id);
313 return ntohl(_msg.header.payload_size);
353 _msg.header.cid = htons(cid);
363 _msg.header.msg_id = htons(msg_id);
374 if ( payload_size > 0xFFFFFFFF ) {
378 _msg.payload = payload;
379 _msg.header.payload_size = htonl(payload_size);
411 if ( _content != NULL ) {
412 _content->serialize();
413 _msg.payload = _content->payload();
414 _msg.header.payload_size = htonl(_content->payload_size());
void * payload() const
Get payload buffer.
void set_content(FawkesNetworkMessageContent *content)
Set complex message content.
void set_client_id(unsigned int clid)
Set client ID.
virtual ~FawkesNetworkMessage()
Destructor.
unsigned short int cid() const
Get component ID.
Fawkes library namespace.
unsigned int clid() const
Get client ID.
Fawkes network message content.
FawkesNetworkMessage()
Constructor.
void set_component_id(unsigned short int cid)
Set component ID.
void pack()
Pack data for sending.
void set_message_id(unsigned short int msg_id)
Set message type ID.
Base class for exceptions in Fawkes.
Message as stored in local queues.
const fawkes_message_t & fmsg() const
Get message reference.
FawkesNetworkMessageTooBigException(size_t message_size)
Constructor.
void set_payload(void *payload, size_t payload_size)
Set payload.
unsigned short int msgid() const
Get message type ID.
void set(fawkes_message_t &msg)
Set from message.
void append(const char *format,...)
Append messages to the message list.
size_t payload_size() const
Get payload size.