diff --git a/include/skipstone/message.h b/include/skipstone/message.h index a827e6b..23716de 100644 --- a/include/skipstone/message.h +++ b/include/skipstone/message.h @@ -36,7 +36,7 @@ typedef struct _skipstone_message skipstone_message; typedef int (skipstone_message_handler)(skipstone_message_service *service, void *buf, uint16_t size, uint16_t id, void *context); -skipstone_message *skipstone_message_new(uint16_t id); +skipstone_message *skipstone_message_new(); int skipstone_message_append_string(skipstone_message *message, char *string, uint8_t size); diff --git a/src/message.c b/src/message.c index bea7d93..2652578 100644 --- a/src/message.c +++ b/src/message.c @@ -19,8 +19,8 @@ struct part { }; struct _skipstone_message { - uint16_t size, id; skipstone_queue *parts; + uint16_t size; }; struct endpoint { @@ -34,7 +34,7 @@ struct _skipstone_message_service { skipstone_queue *pending; }; -skipstone_message *skipstone_message_new(uint16_t id) { +skipstone_message *skipstone_message_new() { skipstone_message *message; if ((message = malloc(sizeof(*message))) == NULL) { @@ -46,7 +46,6 @@ skipstone_message *skipstone_message_new(uint16_t id) { } message->size = 0; - message->id = id; return message; @@ -86,17 +85,33 @@ error_malloc_part: int skipstone_message_append_string(skipstone_message *message, char *string, uint8_t size) { - return append_part(message, string, size, SKIPSTONE_MESSAGE_PART_STRING); + if (append_part(message, string, size, SKIPSTONE_MESSAGE_PART_STRING) < 0) { + return -1; + } + + message->size += sizeof(size) + size; + + return 0; } int skipstone_message_append_uint8(skipstone_message *message, uint8_t value) { - return append_part(message, &value, sizeof(value), - SKIPSTONE_MESSAGE_PART_UINT8); + if (append_part(message, &value, sizeof(value), SKIPSTONE_MESSAGE_PART_UINT8) < 0) { + return -1; + } + + message->size += sizeof(value); + + return 0; } int skipstone_message_append_uint16(skipstone_message *message, uint16_t value) { - return append_part(message, &value, sizeof(value), - SKIPSTONE_MESSAGE_PART_UINT16); + if (append_part(message, &value, sizeof(value), SKIPSTONE_MESSAGE_PART_UINT16) < 0) { + return -1; + } + + message->size += sizeof(value); + + return 0; } int skipstone_message_pack(skipstone_message *message, diff --git a/src/message.c-e b/src/message.c-e index bea7d93..2652578 100644 --- a/src/message.c-e +++ b/src/message.c-e @@ -19,8 +19,8 @@ struct part { }; struct _skipstone_message { - uint16_t size, id; skipstone_queue *parts; + uint16_t size; }; struct endpoint { @@ -34,7 +34,7 @@ struct _skipstone_message_service { skipstone_queue *pending; }; -skipstone_message *skipstone_message_new(uint16_t id) { +skipstone_message *skipstone_message_new() { skipstone_message *message; if ((message = malloc(sizeof(*message))) == NULL) { @@ -46,7 +46,6 @@ skipstone_message *skipstone_message_new(uint16_t id) { } message->size = 0; - message->id = id; return message; @@ -86,17 +85,33 @@ error_malloc_part: int skipstone_message_append_string(skipstone_message *message, char *string, uint8_t size) { - return append_part(message, string, size, SKIPSTONE_MESSAGE_PART_STRING); + if (append_part(message, string, size, SKIPSTONE_MESSAGE_PART_STRING) < 0) { + return -1; + } + + message->size += sizeof(size) + size; + + return 0; } int skipstone_message_append_uint8(skipstone_message *message, uint8_t value) { - return append_part(message, &value, sizeof(value), - SKIPSTONE_MESSAGE_PART_UINT8); + if (append_part(message, &value, sizeof(value), SKIPSTONE_MESSAGE_PART_UINT8) < 0) { + return -1; + } + + message->size += sizeof(value); + + return 0; } int skipstone_message_append_uint16(skipstone_message *message, uint16_t value) { - return append_part(message, &value, sizeof(value), - SKIPSTONE_MESSAGE_PART_UINT16); + if (append_part(message, &value, sizeof(value), SKIPSTONE_MESSAGE_PART_UINT16) < 0) { + return -1; + } + + message->size += sizeof(value); + + return 0; } int skipstone_message_pack(skipstone_message *message,