From 1ab4cd9482fa58bc2b3ce2ac03f295807d820dfb Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko Date: Wed, 22 Aug 2018 15:19:06 +0300 Subject: [PATCH] machinarium: allow dynamic msg resize/write --- third_party/machinarium/sources/machinarium.h | 6 ++++++ third_party/machinarium/sources/msg.c | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/third_party/machinarium/sources/machinarium.h b/third_party/machinarium/sources/machinarium.h index 94b15276..335646ca 100644 --- a/third_party/machinarium/sources/machinarium.h +++ b/third_party/machinarium/sources/machinarium.h @@ -130,6 +130,12 @@ machine_msg_get_data(machine_msg_t*); MACHINE_API int machine_msg_get_type(machine_msg_t*); +MACHINE_API int +machine_msg_ensure(machine_msg_t*, int size); + +MACHINE_API void +machine_msg_write(machine_msg_t*, char *buf, int size); + /* channel */ MACHINE_API machine_channel_t* diff --git a/third_party/machinarium/sources/msg.c b/third_party/machinarium/sources/msg.c index d6a0cea1..2d275b31 100644 --- a/third_party/machinarium/sources/msg.c +++ b/third_party/machinarium/sources/msg.c @@ -47,3 +47,19 @@ machine_msg_get_type(machine_msg_t *obj) mm_msg_t *msg = mm_cast(mm_msg_t*, obj); return msg->type; } + +MACHINE_API int +machine_msg_ensure(machine_msg_t *obj, int size) +{ + mm_msg_t *msg = mm_cast(mm_msg_t*, obj); + return mm_buf_ensure(&msg->data, size); +} + +MACHINE_API void +machine_msg_write(machine_msg_t *obj, char *buf, int size) +{ + mm_msg_t *msg = mm_cast(mm_msg_t*, obj); + int rc = mm_buf_add(&msg->data, buf, size); + (void)rc; + assert(rc == 0); +}