Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVjaceslavs Bogdanovs <vjaceslavs.bogdanovs@zabbix.com>2017-07-05 16:47:23 +0300
committerVjaceslavs Bogdanovs <vjaceslavs.bogdanovs@zabbix.com>2017-07-05 16:47:23 +0300
commit9f1fcbdb276bf1b9778519bc86f051da8325dd17 (patch)
tree84fad6a14acf353793d000c0750e05711c8c96b3 /include/zbxserialize.h
parent347e182c13983441ceeb2662de96762a74c9a73f (diff)
parent18a790cdda414dc5ebb1875b1b8d4f86a30f6a47 (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.h31
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 */