diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-06-14 11:48:51 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-06-14 11:48:51 +0200 |
commit | 2cf895332ffd54ea1a43b090859943665709e420 (patch) | |
tree | 04f02ec914052515182c97457532c2f970877024 /lib/pbdrv/pb-msg.c | |
parent | 557b995f9641f7cb7a0566eefac7e576debec61a (diff) |
decide on pbdrv serialization architecture
Diffstat (limited to 'lib/pbdrv/pb-msg.c')
-rw-r--r-- | lib/pbdrv/pb-msg.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/pbdrv/pb-msg.c b/lib/pbdrv/pb-msg.c new file mode 100644 index 0000000..ead9f09 --- /dev/null +++ b/lib/pbdrv/pb-msg.c @@ -0,0 +1,32 @@ +#include <mpack.h> + +#include "pb-msg.h" +#include "pb-serial.h" + +pbdrv_buf_t pbdrv_msg_write(const pb_msg_t * msg) { + pbdrv_buf_t buf = { 0 }; + mpack_writer_t writer; + + mpack_writer_init_growable(&writer, &buf.data, &buf.size); + + pbdrv_serialize(&writer, msg); + + mpack_writer_destroy(&writer); + return buf; +} + +pb_msg_t * pbdrv_msg_read(const pbdrv_buf_t * buf) { + mpack_reader_t reader; + mpack_reader_init_data(&reader, buf->data, buf->size); + + pb_msg_t * msg = malloc(sizeof(pb_msg_t)); + + pbdrv_deserialize(&reader, msg); + + return msg; +} + +void pbdrv_msg_free(pb_msg_t * msg) { + pbdrv_free(msg); +} + |