hiredis-futureproof 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/COPYING +28 -0
  3. data/Rakefile +53 -0
  4. data/ext/hiredis_ext/connection.c +611 -0
  5. data/ext/hiredis_ext/extconf.rb +48 -0
  6. data/ext/hiredis_ext/hiredis_ext.c +15 -0
  7. data/ext/hiredis_ext/hiredis_ext.h +44 -0
  8. data/ext/hiredis_ext/reader.c +124 -0
  9. data/lib/hiredis/connection.rb +10 -0
  10. data/lib/hiredis/ext/connection.rb +29 -0
  11. data/lib/hiredis/ext/reader.rb +2 -0
  12. data/lib/hiredis/reader.rb +10 -0
  13. data/lib/hiredis/ruby/connection.rb +316 -0
  14. data/lib/hiredis/ruby/reader.rb +183 -0
  15. data/lib/hiredis/version.rb +3 -0
  16. data/lib/hiredis.rb +2 -0
  17. data/vendor/hiredis/COPYING +29 -0
  18. data/vendor/hiredis/Makefile +308 -0
  19. data/vendor/hiredis/alloc.c +86 -0
  20. data/vendor/hiredis/alloc.h +91 -0
  21. data/vendor/hiredis/async.c +892 -0
  22. data/vendor/hiredis/async.h +147 -0
  23. data/vendor/hiredis/async_private.h +75 -0
  24. data/vendor/hiredis/dict.c +352 -0
  25. data/vendor/hiredis/dict.h +126 -0
  26. data/vendor/hiredis/fmacros.h +12 -0
  27. data/vendor/hiredis/hiredis.c +1173 -0
  28. data/vendor/hiredis/hiredis.h +336 -0
  29. data/vendor/hiredis/hiredis_ssl.h +127 -0
  30. data/vendor/hiredis/net.c +612 -0
  31. data/vendor/hiredis/net.h +56 -0
  32. data/vendor/hiredis/read.c +739 -0
  33. data/vendor/hiredis/read.h +129 -0
  34. data/vendor/hiredis/sds.c +1289 -0
  35. data/vendor/hiredis/sds.h +278 -0
  36. data/vendor/hiredis/sdsalloc.h +44 -0
  37. data/vendor/hiredis/sockcompat.c +248 -0
  38. data/vendor/hiredis/sockcompat.h +92 -0
  39. data/vendor/hiredis/ssl.c +526 -0
  40. data/vendor/hiredis/test.c +1387 -0
  41. data/vendor/hiredis/win32.h +56 -0
  42. metadata +128 -0
@@ -0,0 +1,129 @@
1
+ /*
2
+ * Copyright (c) 2009-2011, Salvatore Sanfilippo <antirez at gmail dot com>
3
+ * Copyright (c) 2010-2011, Pieter Noordhuis <pcnoordhuis at gmail dot com>
4
+ *
5
+ * All rights reserved.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following conditions are met:
9
+ *
10
+ * * Redistributions of source code must retain the above copyright notice,
11
+ * this list of conditions and the following disclaimer.
12
+ * * Redistributions in binary form must reproduce the above copyright
13
+ * notice, this list of conditions and the following disclaimer in the
14
+ * documentation and/or other materials provided with the distribution.
15
+ * * Neither the name of Redis nor the names of its contributors may be used
16
+ * to endorse or promote products derived from this software without
17
+ * specific prior written permission.
18
+ *
19
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
+ * POSSIBILITY OF SUCH DAMAGE.
30
+ */
31
+
32
+
33
+ #ifndef __HIREDIS_READ_H
34
+ #define __HIREDIS_READ_H
35
+ #include <stdio.h> /* for size_t */
36
+
37
+ #define REDIS_ERR -1
38
+ #define REDIS_OK 0
39
+
40
+ /* When an error occurs, the err flag in a context is set to hold the type of
41
+ * error that occurred. REDIS_ERR_IO means there was an I/O error and you
42
+ * should use the "errno" variable to find out what is wrong.
43
+ * For other values, the "errstr" field will hold a description. */
44
+ #define REDIS_ERR_IO 1 /* Error in read or write */
45
+ #define REDIS_ERR_EOF 3 /* End of file */
46
+ #define REDIS_ERR_PROTOCOL 4 /* Protocol error */
47
+ #define REDIS_ERR_OOM 5 /* Out of memory */
48
+ #define REDIS_ERR_TIMEOUT 6 /* Timed out */
49
+ #define REDIS_ERR_OTHER 2 /* Everything else... */
50
+
51
+ #define REDIS_REPLY_STRING 1
52
+ #define REDIS_REPLY_ARRAY 2
53
+ #define REDIS_REPLY_INTEGER 3
54
+ #define REDIS_REPLY_NIL 4
55
+ #define REDIS_REPLY_STATUS 5
56
+ #define REDIS_REPLY_ERROR 6
57
+ #define REDIS_REPLY_DOUBLE 7
58
+ #define REDIS_REPLY_BOOL 8
59
+ #define REDIS_REPLY_MAP 9
60
+ #define REDIS_REPLY_SET 10
61
+ #define REDIS_REPLY_ATTR 11
62
+ #define REDIS_REPLY_PUSH 12
63
+ #define REDIS_REPLY_BIGNUM 13
64
+ #define REDIS_REPLY_VERB 14
65
+
66
+ /* Default max unused reader buffer. */
67
+ #define REDIS_READER_MAX_BUF (1024*16)
68
+
69
+ /* Default multi-bulk element limit */
70
+ #define REDIS_READER_MAX_ARRAY_ELEMENTS ((1LL<<32) - 1)
71
+
72
+ #ifdef __cplusplus
73
+ extern "C" {
74
+ #endif
75
+
76
+ typedef struct redisReadTask {
77
+ int type;
78
+ long long elements; /* number of elements in multibulk container */
79
+ int idx; /* index in parent (array) object */
80
+ void *obj; /* holds user-generated value for a read task */
81
+ struct redisReadTask *parent; /* parent task */
82
+ void *privdata; /* user-settable arbitrary field */
83
+ } redisReadTask;
84
+
85
+ typedef struct redisReplyObjectFunctions {
86
+ void *(*createString)(const redisReadTask*, char*, size_t);
87
+ void *(*createArray)(const redisReadTask*, size_t);
88
+ void *(*createInteger)(const redisReadTask*, long long);
89
+ void *(*createDouble)(const redisReadTask*, double, char*, size_t);
90
+ void *(*createNil)(const redisReadTask*);
91
+ void *(*createBool)(const redisReadTask*, int);
92
+ void (*freeObject)(void*);
93
+ } redisReplyObjectFunctions;
94
+
95
+ typedef struct redisReader {
96
+ int err; /* Error flags, 0 when there is no error */
97
+ char errstr[128]; /* String representation of error when applicable */
98
+
99
+ char *buf; /* Read buffer */
100
+ size_t pos; /* Buffer cursor */
101
+ size_t len; /* Buffer length */
102
+ size_t maxbuf; /* Max length of unused buffer */
103
+ long long maxelements; /* Max multi-bulk elements */
104
+
105
+ redisReadTask **task;
106
+ int tasks;
107
+
108
+ int ridx; /* Index of current read task */
109
+ void *reply; /* Temporary reply pointer */
110
+
111
+ redisReplyObjectFunctions *fn;
112
+ void *privdata;
113
+ } redisReader;
114
+
115
+ /* Public API for the protocol parser. */
116
+ redisReader *redisReaderCreateWithFunctions(redisReplyObjectFunctions *fn);
117
+ void redisReaderFree(redisReader *r);
118
+ int redisReaderFeed(redisReader *r, const char *buf, size_t len);
119
+ int redisReaderGetReply(redisReader *r, void **reply);
120
+
121
+ #define redisReaderSetPrivdata(_r, _p) (int)(((redisReader*)(_r))->privdata = (_p))
122
+ #define redisReaderGetObject(_r) (((redisReader*)(_r))->reply)
123
+ #define redisReaderGetError(_r) (((redisReader*)(_r))->errstr)
124
+
125
+ #ifdef __cplusplus
126
+ }
127
+ #endif
128
+
129
+ #endif