summaryrefslogtreecommitdiff
path: root/src/stream.h
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2017-11-17 13:24:20 +0100
committerantirez <antirez@gmail.com>2017-12-01 10:24:25 +0100
commitee3490ec481c7f1ef89fe685b03c2b5f171d335b (patch)
tree9b5121006eb613090b3f7e2b4f8e227679d5f1ee /src/stream.h
parent3c5d773f82eede4497cb3695d2cd32eec3e10382 (diff)
downloadredis-ee3490ec481c7f1ef89fe685b03c2b5f171d335b.tar.gz
Streams: state machine for reverse iteration WIP 1.
Diffstat (limited to 'src/stream.h')
-rw-r--r--src/stream.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/stream.h b/src/stream.h
index df29e9e70..214b6d9a5 100644
--- a/src/stream.h
+++ b/src/stream.h
@@ -28,9 +28,10 @@ typedef struct stream {
typedef struct streamIterator {
streamID master_id; /* ID of the master entry at listpack head. */
uint64_t master_fields_count; /* Master entries # of fields. */
- unsigned char *master_fields_start; /* Master entries start in listapck. */
+ unsigned char *master_fields_start; /* Master entries start in listpack. */
unsigned char *master_fields_ptr; /* Master field to emit next. */
int entry_flags; /* Flags of entry we are emitting. */
+ int rev; /* True if iterating end to start (reverse). */
uint64_t start_key[2]; /* Start key as 128 bit big endian. */
uint64_t end_key[2]; /* End key as 128 bit big endian. */
raxIterator ri; /* Rax iterator. */
@@ -49,8 +50,8 @@ struct client;
stream *streamNew(void);
void freeStream(stream *s);
-size_t streamReplyWithRange(struct client *c, stream *s, streamID *start, streamID *end, size_t count);
-void streamIteratorStart(streamIterator *si, stream *s, streamID *start, streamID *end);
+size_t streamReplyWithRange(struct client *c, stream *s, streamID *start, streamID *end, size_t count, int rev);
+void streamIteratorStart(streamIterator *si, stream *s, streamID *start, streamID *end, int rev);
int streamIteratorGetID(streamIterator *si, streamID *id, int64_t *numfields);
void streamIteratorGetField(streamIterator *si, unsigned char **fieldptr, unsigned char **valueptr, int64_t *fieldlen, int64_t *valuelen);
void streamIteratorStop(streamIterator *si);