summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/dict.h
diff options
context:
space:
mode:
authorAmar Tumballi <amar@gluster.com>2012-02-13 13:00:26 +0530
committerAnand Avati <avati@redhat.com>2012-02-14 01:00:26 -0800
commite17ac220e4bff53fb89f5bea636acb61e347cf50 (patch)
tree5d34c63d431ff13bbcdadcd88bf11f463d5c1b9d /libglusterfs/src/dict.h
parent635f3bc0f8a05ad1280f8ab7d55181502bcad700 (diff)
protocol: code cleanup
make dict serialize and unserialization code a macro Change-Id: I459c77c6c1f54118c6c94390162670f4159b9690 BUG: 764890 Signed-off-by: Amar Tumballi <amar@gluster.com> Reviewed-on: http://review.gluster.com/2742 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'libglusterfs/src/dict.h')
-rw-r--r--libglusterfs/src/dict.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/libglusterfs/src/dict.h b/libglusterfs/src/dict.h
index c68c3af873b..8e81e539b74 100644
--- a/libglusterfs/src/dict.h
+++ b/libglusterfs/src/dict.h
@@ -35,6 +35,51 @@ typedef struct _data data_t;
typedef struct _dict dict_t;
typedef struct _data_pair data_pair_t;
+
+#define GF_PROTOCOL_DICT_SERIALIZE(this,from_dict,to,len,ope,labl) do { \
+ int ret = 0; \
+ size_t dictlen = 0; \
+ \
+ if (!from_dict) \
+ break; \
+ \
+ ret = dict_allocate_and_serialize (from_dict, to, \
+ &dictlen); \
+ if (ret < 0) { \
+ gf_log (this->name, GF_LOG_WARNING, \
+ "failed to get serialized dict (%s)", \
+ (#from_dict)); \
+ ope = EINVAL; \
+ goto labl; \
+ } \
+ len = dictlen; \
+ } while (0)
+
+
+#define GF_PROTOCOL_DICT_UNSERIALIZE(xl,to,buff,len,ret,ope,labl) do { \
+ char *buf = NULL; \
+ if (!len) \
+ break; \
+ to = dict_new(); \
+ GF_VALIDATE_OR_GOTO (xl->name, to, labl); \
+ \
+ buf = memdup (buff, len); \
+ GF_VALIDATE_OR_GOTO (xl->name, buf, labl); \
+ \
+ ret = dict_unserialize (buf, len, &to); \
+ if (ret < 0) { \
+ gf_log (xl->name, GF_LOG_WARNING, \
+ "failed to unserialize dictionary (%s)", \
+ (#to)); \
+ \
+ ope = EINVAL; \
+ GF_FREE (buf); \
+ goto labl; \
+ } \
+ \
+ to->extra_free = buf; \
+ } while (0)
+
struct _data {
unsigned char is_static:1;
unsigned char is_const:1;