Commit Graph

161 Commits

Author SHA1 Message Date
Pieter Noordhuis
77540aa316 Add function to retrieve formatted reply
This is done by only truncating the read buffer once a full reply has
been read. The buffer is no longer truncated halfway through reading a
reply. In addition: pass offset/length of protocol and content via the
read tasks.
2011-05-05 17:01:34 +02:00
Pieter Noordhuis
0cb7c27d9c Update license 2011-04-21 22:46:23 +02:00
Pieter Noordhuis
f3f02b6419 Let the async API segfault on OOM for now 2011-04-21 22:40:36 +02:00
Pieter Noordhuis
c9dc93e1de Move chrtos to hiredis.c (not used elsewhere) 2011-04-21 22:39:19 +02:00
Pieter Noordhuis
8419b060f2 Handle OOM when doing blocking requests 2011-04-21 21:34:43 +02:00
Pieter Noordhuis
e932709a66 More safety 2011-04-21 21:18:08 +02:00
Pieter Noordhuis
dd5fc26457 Make command formatters gracefully abort when out of memory 2011-04-21 20:59:41 +02:00
Pieter Noordhuis
d4ebb60d65 More OOM checks in the protocol reader 2011-04-21 18:50:10 +02:00
Pieter Noordhuis
df1d693b03 Include fmacros.h to make sure strerror_p is defined on Linux 2011-04-21 16:24:03 +02:00
Pieter Noordhuis
965d42640f Rename *ReplyReader* to *Reader* 2011-04-21 16:03:32 +02:00
Pieter Noordhuis
0ee7c66818 Use static buffer for error string on context 2011-04-21 15:56:22 +02:00
Pieter Noordhuis
6d207ea98e Create protocol reader when creating context 2011-04-21 15:04:42 +02:00
Pieter Noordhuis
a926232293 Reply object functions can be set by the user after creating the reader 2011-04-21 14:37:29 +02:00
Pieter Noordhuis
5ba49014da Privdata can be set directly on the struct 2011-04-21 14:34:03 +02:00
Pieter Noordhuis
2002218981 Remove useless casts 2011-04-21 14:31:02 +02:00
Pieter Noordhuis
e1abacb7b4 Return when memory cannot be allocated 2011-04-21 14:28:39 +02:00
Pieter Noordhuis
026636b0cd Remove accessor functions now the redisReader struct is public 2011-04-21 14:27:03 +02:00
Pieter Noordhuis
727e1babec Make redisReader struct public 2011-04-21 14:21:58 +02:00
Pieter Noordhuis
26588f5007 Test if there is a freeObject function 2011-04-21 10:54:15 +02:00
Pieter Noordhuis
eaf58bd32a Use pre-allocated buffer for error strings in reader 2011-04-20 17:06:19 +02:00
Pieter Noordhuis
5d78214557 First pass at making the protocol reader properly handle OOM 2011-04-20 13:15:58 +02:00
Pieter Noordhuis
421eec9a4d Lazily destroy protocol reader buffer 2011-04-03 18:04:15 +02:00
Pieter Noordhuis
921150fc8a Individual reply object functions may be NULL 2011-04-03 17:46:59 +02:00
Pieter Noordhuis
8e2c39200d Fix formatCommand to work with all empty interpolations 2011-03-06 11:38:07 +01:00
Pieter Noordhuis
2fc0d8756e Use select(2) for enforce a timeout on blocking connect(2) 2011-02-04 15:26:28 +01:00
Pieter Noordhuis
663d6d1258 Properly reset state after protocol error in reply reader 2011-01-27 14:39:34 +01:00
Pieter Noordhuis
864bce944b redisReplyReaderFeed should take a const char* 2011-01-27 14:07:06 +01:00
Pieter Noordhuis
fbe756d838 Avoid warnings with -Wstrict-prototypes 2011-01-27 12:50:55 +01:00
Pieter Noordhuis
3e8cbd53cf Let sds.c figure out where the range stops 2011-01-19 18:10:27 +01:00
Pieter Noordhuis
f6a501001c Discard consumed part of buffer less often 2011-01-19 18:01:01 +01:00
Pieter Noordhuis
43ab0f8018 Return error on socket timeout for a blocking context 2011-01-07 13:04:42 +01:00
Pieter Noordhuis
e3776bfaa6 Add function to explicitly free an async context 2010-12-28 19:19:25 +01:00
Pieter Noordhuis
a1e2c6dfed Add myself to license in some files 2010-12-16 22:08:46 +01:00
Pieter Noordhuis
7684d556bd Add (nearly) full printf support by delegating to vsprintf 2010-12-02 16:20:55 +01:00
Pieter Noordhuis
2635feb0ac Wait with setting CONNECTED until there is an fd 2010-12-01 12:54:47 +01:00
Pieter Noordhuis
e73289a5c6 Use r->len in another spot 2010-11-26 15:25:19 +01:00
Pieter Noordhuis
4eab917a24 Use custom stroll 2010-11-26 14:48:04 +01:00
Pieter Noordhuis
f14108361b Reply objects don't need to be calloc'ed 2010-11-26 14:47:01 +01:00
Pieter Noordhuis
5cf292cdd0 Use explicit buffer length field in the reply reader 2010-11-26 13:49:15 +01:00
Pieter Noordhuis
adb0895e99 Rename 'parent' field in read tasks to 'obj' 2010-11-26 13:04:42 +01:00
Pieter Noordhuis
b4dd17b57f Remove leftover line from earlier commit 2010-11-24 15:46:50 +01:00
Pieter Noordhuis
257a9d40a9 Set error on unexpected nesting of multi bulks 2010-11-24 15:46:05 +01:00
Pieter Noordhuis
d4058be7b0 Add pointer to parent task in read tasks 2010-11-24 15:21:34 +01:00
Pieter Noordhuis
3d702d0bf1 Don't care if object returned by object function is NULL 2010-11-24 15:05:25 +01:00
Pieter Noordhuis
1927c643da Add privdata field to reply reader
This field is set in the read tasks that are passed to the reply object
functions. This allows to curry arbitrary data to these functions.
2010-11-24 12:27:46 +01:00
Pieter Noordhuis
56bbeb7049 Abort on code path that should never be taken 2010-11-22 10:38:07 +01:00
Pieter Noordhuis
b6b96f776e Make error messages consistent in casing 2010-11-22 10:37:14 +01:00
Pieter Noordhuis
cb89a472b6 Fix formatting literal percent characters 2010-11-22 10:00:45 +01:00
Pieter Noordhuis
9d9b8e1c79 Correctly format commands with empty interpolated values 2010-11-22 09:55:54 +01:00
Pieter Noordhuis
8ce0b3228d Finding \r\n without strstr is a little harder 2010-11-04 23:52:47 +01:00
Pieter Noordhuis
8b616d3547 The buffer length to feed should be a size_t 2010-11-04 20:55:03 +01:00
Pieter Noordhuis
183220bf60 Make moveToNextTask non-recursive 2010-11-04 13:26:45 +01:00
Pieter Noordhuis
9c4ee606d6 Use strchr in a loop rather than strstr 2010-11-04 13:26:22 +01:00
Pieter Noordhuis
2e5e9a49fd Return the reply type when the reply object function set is NULL 2010-11-04 13:15:44 +01:00
Pieter Noordhuis
f25a5267cc Allow to connect using a unix socket from hiredis 2010-11-03 11:38:26 +01:00
Pieter Noordhuis
0ccb2c8d89 Add functiont to net.c to connect to a unix socket 2010-11-03 11:31:33 +01:00
Pieter Noordhuis
e13674dd4e Expose redisGetReplyFromReader as public API 2010-11-03 00:40:07 +01:00
Pieter Noordhuis
e51ddd7c2c Make setError receive an sds 2010-11-02 17:14:03 +01:00
Pieter Noordhuis
b8b296654d Strip net.c down to the bare minimum 2010-11-02 17:09:26 +01:00
Pieter Noordhuis
ffa8666a64 Change error reporting to have an explicit type
When there is an I/O error, errno should be used to find out what is
wrong. In other cases, errno cannot be used. So, use an explicit type in
Hiredis to define the different error scenarios that can occur.
2010-11-02 16:36:38 +01:00
Pieter Noordhuis
5fa8d30599 There is no longer need for a separate redisDisconnect 2010-11-01 14:20:51 +01:00
Pieter Noordhuis
ef995accb2 Strip non-blocking callbacks from hiredis.c 2010-11-01 14:13:03 +01:00
Pieter Noordhuis
435e545dd2 Fix redisGetReply 2010-10-31 21:11:25 +01:00
Pieter Noordhuis
6042c569b1 Move include of stdio.h to hiredis.h for size_t 2010-10-31 17:25:20 +01:00
Pieter Noordhuis
1d4f16b571 Extract OOM killer to util.h 2010-10-31 17:21:49 +01:00
Pieter Noordhuis
a0b9f04eaa Move stdarg.h include to the hiredis header file 2010-10-31 14:45:15 +01:00
Pieter Noordhuis
44a2d08b30 The reply object functions may not change the read tasks 2010-10-31 14:44:36 +01:00
Pieter Noordhuis
3f0394b8a9 Use a fixed size stack instead of a dynamic list for read tasks 2010-10-31 14:42:48 +01:00
Pieter Noordhuis
f463734e91 Remove reply object functions from connect functions 2010-10-31 12:53:57 +01:00
Pieter Noordhuis
47e1f77149 Refactor internal function flow and add redisAppendCommand* family 2010-10-31 12:34:45 +01:00
Pieter Noordhuis
298e9325d7 First step in decoupling reply callbacks from internals 2010-10-31 10:56:24 +01:00
Pieter Noordhuis
a3a405bcba Format a command using an argument vector 2010-10-31 10:34:29 +01:00
Pieter Noordhuis
e95c9d4c5b Change redisFormatCommand to return the command in a char*
This allows users of the API to format a command without the need to
have all the sds functions included, only for free'ing the returned
wire-level command.
2010-10-30 20:38:29 +02:00
Pieter Noordhuis
bc5dcdbc85 Status replies should have type REDIS_REPLY_STATUS 2010-10-30 17:49:39 +02:00
Pieter Noordhuis
171b5a24d4 Drop dependency on sds.h for exposed API 2010-10-30 17:47:19 +02:00
Pieter Noordhuis
1e7f5ae6bd Rename struct 2010-10-30 16:36:08 +02:00
Pieter Noordhuis
0f745d1ac0 Run pending callbacks with NULL reply on redisDisconnect() 2010-10-19 21:26:06 +02:00
Pieter Noordhuis
d4b4a9128e Revert e5dd32d8 that added the const qualifier for command callbacks 2010-10-19 21:24:30 +02:00
Pieter Noordhuis
ba42ab2ef8 Revert privdata in context callbacks to being non-const 2010-10-19 14:19:51 +02:00
Pieter Noordhuis
f9596db90b Test callback sequence in non-blocking context 2010-10-18 16:27:52 +02:00
Pieter Noordhuis
e332a32b35 Change redisWriteBuffer to return OK on an empty buffer 2010-10-18 15:49:52 +02:00
Pieter Noordhuis
61ba85ce57 Move context callbacks into struct and make privdata const 2010-10-18 12:37:33 +02:00
Pieter Noordhuis
b60952f22a Disconnect before free'ing 2010-10-07 17:38:56 +02:00
Pieter Noordhuis
9cd3b03d84 Fire callback when the context is being disconnected by the user 2010-10-07 17:36:22 +02:00
Pieter Noordhuis
e5dd32d809 Add const qualifier to privdata pointer for command callbacks 2010-10-07 17:35:31 +02:00
Pieter Noordhuis
5c7b5fca4d Make error messages more consistent (e.g. no newline) 2010-10-06 21:23:03 +02:00
Pieter Noordhuis
1c245845ed Trigger callbacks when a command is issued or the context is free'd 2010-09-25 22:31:07 +02:00
Pieter Noordhuis
9e417047ed Add function to free an allocated context 2010-09-25 15:33:27 +02:00
Pieter Noordhuis
cab99f6427 Free command before returning 2010-09-25 15:26:34 +02:00
Pieter Noordhuis
bc3ec0f35a Rename HIREDIS_BLOCK to REDIS_BLOCK 2010-09-25 15:11:59 +02:00
Pieter Noordhuis
a7d7618141 Deprecate the error object for I/O and protocol errors
Rather, use the return value REDIS_OK and REDIS_ERR to designate if
calling a function has a successful outcome. When there was an error in
performing the call the error field will be set inside the reader or the
context.
2010-09-25 15:09:13 +02:00
Pieter Noordhuis
e6fb160b44 Rename defines HIREDIS_* to REDIS_* 2010-09-25 12:06:47 +02:00
Pieter Noordhuis
bb668e1b94 Support callback functions in a non-blocking context 2010-09-25 12:06:00 +02:00
Pieter Noordhuis
de9c172b50 Fix comment 2010-09-25 11:07:17 +02:00
Pieter Noordhuis
817d26b81d Use context variable to keep state for a connection
The context supports both blocking and non-blocking connections. All
read and write events are not handled by hiredis, but hiredis exposes an
API for buffered reading/writing to Redis.
2010-09-24 18:42:22 +02:00
Pieter Noordhuis
81f6b8ffd4 Split redisCommand to a more generic function 2010-09-24 18:42:21 +02:00
Pieter Noordhuis
af8ba74cbf Rename functions to be more consistent, split feed from get reply 2010-09-21 11:39:18 +02:00
Pieter Noordhuis
b1bedf5c6d Use a set of function pointers for building the reply
Allows libraries to wrap the reply parsing code and build the reply in a
streaming fashion. Reply objects can immediately be initialized to the
required type without having to convert an intermediary format.
2010-09-20 22:04:35 +02:00
Pieter Noordhuis
0a6e3b38e7 Add context to createErrorObject 2010-09-20 18:18:25 +02:00
Pieter Noordhuis
db5244045c Introduce read tasks to allow hooking other code into reply parsing 2010-09-20 18:02:28 +02:00