Skip to content

Commit

Permalink
Support deeper nesting of multi bulks
Browse files Browse the repository at this point in the history
  • Loading branch information
pietern committed Dec 2, 2011
1 parent b0a52ba commit 1ef107c
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
11 changes: 7 additions & 4 deletions lib/hiredis/ruby/reader.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,17 @@ class Task
method_index[?*] = :process_multi_bulk_reply
METHOD_INDEX = method_index.freeze

attr_accessor :parent, :child
attr_reader :parent
attr_reader :depth
attr_accessor :multi_bulk

def initialize(buffer, parent = nil, depth = 0)
@buffer, @parent = buffer, parent
@buffer, @parent, @depth = buffer, parent, depth
end

# Require 3 nested tasks
@child = Task.new(@buffer, self, depth + 1) if depth < 2
# Note: task depth is not checked.
def child
@child ||= Task.new(@buffer, self, depth + 1)
end

def root
Expand Down
5 changes: 5 additions & 0 deletions test/reader_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ def test_nested_multi_bulk
@reader.feed("*2\r\n*2\r\n$5\r\nhello\r\n$5\r\nworld\r\n$1\r\n!\r\n")
assert_equal [["hello", "world"], "!"], @reader.gets
end

def test_nested_multi_bulk_redux
@reader.feed("*2\r\n*2\r\n*1\r\n$5\r\nhello\r\n$5\r\nworld\r\n$1\r\n!\r\n")
assert_equal [[["hello"], "world"], "!"], @reader.gets
end
end

if defined?(Hiredis::Ruby::Reader)
Expand Down
2 changes: 1 addition & 1 deletion vendor/hiredis
Submodule hiredis updated 18 files
+16 −0 CHANGELOG.md
+76 −52 Makefile
+6 −0 README.md
+0 −2 TODO
+11 −9 adapters/ae.h
+12 −8 adapters/libev.h
+11 −8 adapters/libevent.h
+83 −17 async.c
+1 −1 async.h
+8 −5 example-ae.c
+8 −4 example-libev.c
+8 −4 example-libevent.c
+5 −3 fmacros.h
+79 −31 hiredis.c
+2 −2 hiredis.h
+79 −56 net.c
+1 −0 net.h
+268 −143 test.c

0 comments on commit 1ef107c

Please sign in to comment.