diff options
author | Vjaceslavs Bogdanovs <vjaceslavs.bogdanovs@zabbix.com> | 2017-07-05 16:47:23 +0300 |
---|---|---|
committer | Vjaceslavs Bogdanovs <vjaceslavs.bogdanovs@zabbix.com> | 2017-07-05 16:47:23 +0300 |
commit | 9f1fcbdb276bf1b9778519bc86f051da8325dd17 (patch) | |
tree | 84fad6a14acf353793d000c0750e05711c8c96b3 /include/zbxserialize.h | |
parent | 347e182c13983441ceeb2662de96762a74c9a73f (diff) | |
parent | 18a790cdda414dc5ebb1875b1b8d4f86a30f6a47 (diff) |
.......... [ZBXNEXT-3006] updated to the latest trunk, except for the frontend (conflicts resolved)
Diffstat (limited to 'include/zbxserialize.h')
-rw-r--r-- | include/zbxserialize.h | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/include/zbxserialize.h b/include/zbxserialize.h index 7ca3ef69bc6..d6b6ab4d64b 100644 --- a/include/zbxserialize.h +++ b/include/zbxserialize.h @@ -22,6 +22,13 @@ #include "common.h" +#define zbx_serialize_prepare_str(len, str) \ + str##_len = (NULL != str ? strlen(str) + 1 : 0); \ + len += str##_len + sizeof(zbx_uint32_t) + +#define zbx_serialize_prepare_value(len, value) \ + len += sizeof(value) + #define zbx_serialize_uint64(buffer, value) (memcpy(buffer, &value, sizeof(zbx_uint64_t)), sizeof(zbx_uint64_t)) #define zbx_serialize_int(buffer, value) (memcpy(buffer, (int *)&value, sizeof(int)), sizeof(int)) @@ -32,17 +39,26 @@ #define zbx_serialize_char(buffer, value) (*buffer = (char)value, sizeof(char)) -#define zbx_serialize_str(buffer, value, len) \ - (memcpy(buffer, (zbx_uint32_t *)&len, sizeof(zbx_uint32_t)), \ - memcpy(buffer + sizeof(zbx_uint32_t), value, len), \ - len + sizeof(zbx_uint32_t)) - -#define zbx_serialize_str_null(buffer) \ +#define zbx_serialize_str_null(buffer) \ ( \ memset(buffer, 0, sizeof(zbx_uint32_t)), \ sizeof(zbx_uint32_t) \ ) +#define zbx_serialize_str(buffer, value, len) \ + ( \ + 0 == len ? zbx_serialize_str_null(buffer) : \ + ( \ + memcpy(buffer, (zbx_uint32_t *)&len, sizeof(zbx_uint32_t)), \ + memcpy(buffer + sizeof(zbx_uint32_t), value, len), \ + len + sizeof(zbx_uint32_t) \ + ) \ + ) + +#define zbx_serialize_value(buffer, value) (memcpy(buffer, &value, sizeof(value)), sizeof(value)) + +/* deserialization of primitive types */ + #define zbx_deserialize_uint64(buffer, value) \ (memcpy(value, buffer, sizeof(zbx_uint64_t)), sizeof(zbx_uint64_t)) @@ -84,4 +100,7 @@ (value = NULL), value_len + sizeof(zbx_uint32_t) \ ) +#define zbx_deserialize_value(buffer, value) \ + (memcpy(value, buffer, sizeof(*value)), sizeof(*value)) + #endif /* ZABBIX_SERIALIZE_H */ |