changeset 107:3d3088f7e176

common: allow XDR encoding of vector clocks Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net> Signed-off-by: Holly Sipek <holly.sipek@gmail.com>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Sat, 17 Oct 2015 16:37:42 -0400
parents d1b40f1a89a6
children 869d71b4e5da
files src/common/include/nomad/vclock.h src/common/vclock.c
diffstat 2 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/common/include/nomad/vclock.h	Sat Oct 17 16:35:10 2015 -0400
+++ b/src/common/include/nomad/vclock.h	Sat Oct 17 16:37:42 2015 -0400
@@ -24,6 +24,7 @@
 #define __NOMAD_VCLOCK_H
 
 #include <stdint.h>
+#include <rpc/rpc.h>
 
 /* version vector */
 #define NVCLOCK_NUM_NODES	16 /* ought to be enough for everyone */
@@ -61,4 +62,6 @@
 extern int nvclock_set(struct nvclock *clock, uint64_t seq);
 extern int nvclock_inc(struct nvclock *clock);
 
+extern bool_t xdr_nvclock(XDR *xdrs, struct nvclock *clock);
+
 #endif
--- a/src/common/vclock.c	Sat Oct 17 16:35:10 2015 -0400
+++ b/src/common/vclock.c	Sat Oct 17 16:37:42 2015 -0400
@@ -411,3 +411,17 @@
 	ASSERT(0);
 	return 0xbad; /* pacify gcc */
 }
+
+bool_t xdr_nvclock(XDR *xdrs, struct nvclock *clock)
+{
+	int i;
+
+	for (i = 0; i < NVCLOCK_NUM_NODES; i++) {
+		if (!xdr_uint64_t(xdrs, &clock->ent[i].node))
+			return FALSE;
+		if (!xdr_uint64_t(xdrs, &clock->ent[i].seq))
+			return FALSE;
+	}
+
+	return TRUE;
+}