diff options
author | Mattias Andrée <maandree@operamail.com> | 2015-09-04 15:34:10 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2015-09-04 15:34:10 +0200 |
commit | 324daf82504ef6a409a1d955a804a5f05d572aa4 (patch) | |
tree | cf085fa28e009ec802309a2cc03d47c7c231d298 /src/libmdsclient/inbound.h | |
parent | optimise libmds_message (diff) | |
download | mds-324daf82504ef6a409a1d955a804a5f05d572aa4.tar.gz mds-324daf82504ef6a409a1d955a804a5f05d572aa4.tar.bz2 mds-324daf82504ef6a409a1d955a804a5f05d572aa4.tar.xz |
add libmds_message_duplicate
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r-- | src/libmdsclient/inbound.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libmdsclient/inbound.h b/src/libmdsclient/inbound.h index f0e3d20..87b96f4 100644 --- a/src/libmdsclient/inbound.h +++ b/src/libmdsclient/inbound.h @@ -76,6 +76,15 @@ typedef struct libmds_message size_t buffer_off; /** + * Zero unless the structure is flattend, otherwise + * the size of the object (semiinternal data) + * + * Flattened means that all pointers are subpointers + * of the object itself + */ + size_t flattened; + + /** * 0 while reading headers, 1 while reading payload, and 2 when done (internal data) */ int stage; @@ -108,6 +117,19 @@ __attribute__((nonnull)) void libmds_message_destroy(libmds_message_t* restrict this); /** + * Release all resources in a message, should + * be done even if initialisation fails + * + * @param this The message + * @return The duplicate, you do not need to call `libmds_message_destroy` + * on it before you call `free` on it. However, you cannot use + * this is an `libmds_message_t` array (libmds_message_t*), only + * in an `libmds_message_t*` array (libmds_message_t**). + */ +__attribute__((nonnull, malloc, warn_unused_result)) +libmds_message_t* libmds_message_duplicate(libmds_message_t* restrict this); + +/** * Read the next message from a file descriptor * * @param this Memory slot in which to store the new message |