summaryrefslogtreecommitdiff
path: root/src/rdb.h
diff options
context:
space:
mode:
authorPieter Noordhuis <pcnoordhuis@gmail.com>2011-05-13 22:14:39 +0200
committerPieter Noordhuis <pcnoordhuis@gmail.com>2011-05-13 22:14:39 +0200
commitf1d8e4968ec50d04eea81b95ebb755d3b3080cdf (patch)
tree345257ce8f49e4b650abb232a3c85c7f6c478a39 /src/rdb.h
parent2e4b0e7727743cf03d25da0f535ecc02aad82d1f (diff)
downloadredis-f1d8e4968ec50d04eea81b95ebb755d3b3080cdf.tar.gz
Make RDB types/opcodes explicit; load/save object type
Diffstat (limited to 'src/rdb.h')
-rw-r--r--src/rdb.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/rdb.h b/src/rdb.h
index a4a8c096f..93185fc37 100644
--- a/src/rdb.h
+++ b/src/rdb.h
@@ -7,6 +7,31 @@
/* TBD: include only necessary headers. */
#include "redis.h"
+/* Dup object types to RDB object types. Only reason is readability (are we
+ * dealing with RDB types or with in-memory object types?). */
+#define REDIS_RDB_TYPE_STRING 0
+#define REDIS_RDB_TYPE_LIST 1
+#define REDIS_RDB_TYPE_SET 2
+#define REDIS_RDB_TYPE_ZSET 3
+#define REDIS_RDB_TYPE_HASH 4
+
+/* Object types for encoded objects. */
+#define REDIS_RDB_TYPE_HASH_ZIPMAP 9
+#define REDIS_RDB_TYPE_LIST_ZIPLIST 10
+#define REDIS_RDB_TYPE_SET_INTSET 11
+#define REDIS_RDB_TYPE_ZSET_ZIPLIST 12
+
+/* Test if a type is an object type. */
+#define rdbIsObjectType(t) ((t >= 0 && t <= 4) || (t >= 9 && t <= 12))
+
+/* Special RDB opcodes (saved/loaded with rdbSaveType/rdbLoadType). */
+#define REDIS_RDB_OPCODE_EXPIRETIME 253
+#define REDIS_RDB_OPCODE_SELECTDB 254
+#define REDIS_RDB_OPCODE_EOF 255
+
+/* Test if a type is an opcode. */
+#define rdbIsOpcode(t) (t >= 253 && t <= 255)
+
int rdbLoad(char *filename);
int rdbSaveBackground(char *filename);
void rdbRemoveTempFile(pid_t childpid);
@@ -22,5 +47,7 @@ time_t rdbLoadTime(rio *rdb);
robj *rdbLoadStringObject(rio *rdb);
int rdbSaveType(rio *rdb, unsigned char type);
int rdbSaveLen(rio *rdb, uint32_t len);
+int rdbSaveObjectType(rio *rdb, robj *o);
+int rdbLoadObjectType(rio *rdb);
#endif