riakpb 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require './lib/riak'
6
6
  gemspec = Gem::Specification.new do |gem|
7
7
  gem.name = "riakpb"
8
8
  gem.summary = %Q{riakpb is a protocol buffer client for Riak--the distributed database by Basho.}
9
- gem.description = %Q{riakpb is a protocol buffer client for Riak--the distributed database by Basho. Connects via Protocol Buffers instead of REST.}
9
+ gem.description = %Q{riakpb is a protocol buffer client for Riak--the distributed database by Basho.}
10
10
  gem.version = Riak::VERSION
11
11
  gem.email = "me@inherentlylame.com"
12
12
  gem.homepage = "http://github.com/aitrus/riak-pbclient"
@@ -14,7 +14,7 @@ module Riak
14
14
  include Riak::Util::Encode
15
15
  include Riak::Util::Decode
16
16
 
17
- RECV_LIMIT=1638400
17
+ RECV_LIMIT=1073741824
18
18
 
19
19
  attr_reader :req_message, :response, :resp_message_codes, :resp_message, :status
20
20
 
@@ -30,7 +30,7 @@ module Riak
30
30
 
31
31
  # Request / Response Data
32
32
  @resp_message_codes = -1
33
- @resp_message = ''
33
+ @resp_message = []
34
34
  @req_message_code = -1
35
35
  @req_message = ''
36
36
  @response = ''
@@ -39,11 +39,12 @@ module Riak
39
39
  # Clears the request / response data, in preparation for a new request
40
40
  def clear
41
41
  @resp_message_codes = -1
42
- @resp_message = ''
42
+ @resp_message = []
43
43
  @req_message_code = -1
44
44
  @req_message = ''
45
45
  @response = ''
46
46
  @status = false
47
+ @buffer = ''
47
48
  end
48
49
 
49
50
  # Opens a TCPSocket connection with the riak host/node
@@ -93,9 +94,9 @@ module Riak
93
94
  end
94
95
 
95
96
  socket.send(@req_message, 0)
96
- self.response = socket.recv(@limit)
97
+ self.parse_response socket.recv(@limit)
97
98
 
98
- end while(false == (@response.done rescue true))
99
+ end while(false == (@response[:done] rescue true))
99
100
  end # with_socket
100
101
 
101
102
  return(@response)
@@ -104,10 +105,14 @@ module Riak
104
105
  # Handles the response from the Riak node
105
106
  # @param [String] value The message returned from the Riak node over the TCP Socket
106
107
  # @return [Protobuf::Message] @response the processed response (if any) from the Riak node
107
- def response=(value)
108
- @resp_message = value
108
+ def parse_response(value)
109
+ @resp_message << value
109
110
 
110
- response_chunk, @resp_message_codes = decode_message(value)
111
+ value = @buffer + value
112
+
113
+ # return {:done => false} if message_remaining?(@resp_message)
114
+
115
+ response_chunk, @resp_message_codes, @buffer = decode_message(value)
111
116
 
112
117
  @resp_message_codes.each do |resp_mc|
113
118
  if resp_mc.equal?(ERROR_RESPONSE)
@@ -9,9 +9,11 @@ module Riak
9
9
  POFF = (PBMC+1)
10
10
 
11
11
  def decode_message(message)
12
+
12
13
  pb_len = 0
13
14
  pb_mc = ''
14
15
  pb_msg = ''
16
+ remain = ''
15
17
 
16
18
  until message.empty?
17
19
  pb_len = message[PLEN].unpack('N')[0] # message[0..3]unpack('N')[0]
@@ -20,17 +22,28 @@ module Riak
20
22
  prange = POFF..(pb_len+3) # range for the start->finish of the pb message
21
23
  mrange = (pb_len+4)..(message.size-1) # range for any remaining portions of message
22
24
 
23
- if(prange.count != message[prange].size)
24
- raise FailedExchange.new(prange.count, message[prange].size, message[prange], "decode_error")
25
- end
25
+ break if(prange.count > message[prange].size)
26
26
 
27
27
  pb_msg = pb_msg + message[prange]
28
28
  message = message[mrange] # message[(5+pb_len)..(message.size)]
29
29
  end
30
30
 
31
- [pb_msg, pb_mc.unpack("c" * pb_mc.size)]
31
+ [pb_msg, pb_mc.unpack("c" * pb_mc.size), message]
32
32
  end
33
33
 
34
+ def message_remaining?(message)
35
+ pb_len = message[PLEN].unpack('N')[0]
36
+ msg_len = message.size - PBMC
37
+
38
+ puts "pb_len:#{pb_len}"
39
+ puts "msg_len:#{msg_len}"
40
+ puts "message:#{message.inspect}"
41
+
42
+ return false if pb_len == msg_len
43
+ return true if pb_len > msg_len
44
+
45
+ return message_remaining?(message[(pb_len+4)..(msg_len-1)])
46
+ end
34
47
  end # module Decode
35
48
  end
36
49
  end
data/lib/riak.rb CHANGED
@@ -9,7 +9,7 @@ require 'base64'
9
9
  require 'riak/client_pb'
10
10
 
11
11
  module Riak
12
- VERSION = '0.1.5'
12
+ VERSION = '0.1.6'
13
13
 
14
14
  # Domain objects
15
15
  autoload :I18n, 'riak/i18n'
data/load_stocks.rb CHANGED
File without changes
data/riakpb.gemspec CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{riakpb}
5
- s.version = "0.1.5"
5
+ s.version = "0.1.6"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Scott Gonyea"]
9
- s.date = %q{2010-06-16}
10
- s.description = %q{riakpb is a protocol buffer client for Riak--the distributed database by Basho. Connects via Protocol Buffers instead of REST.}
9
+ s.date = %q{2010-07-08}
10
+ s.description = %q{riakpb is a protocol buffer client for Riak--the distributed database by Basho.}
11
11
  s.email = %q{me@inherentlylame.com}
12
12
  s.files = ["goog.csv", "History.txt", "lib/riak/bucket.rb", "lib/riak/client/rpc.rb", "lib/riak/client.rb", "lib/riak/client_pb.rb", "lib/riak/failed_exchange.rb", "lib/riak/failed_request.rb", "lib/riak/i18n.rb", "lib/riak/key.rb", "lib/riak/locale/en.yml", "lib/riak/map_reduce.rb", "lib/riak/riak_content.rb", "lib/riak/sibling_error.rb", "lib/riak/util/decode.rb", "lib/riak/util/encode.rb", "lib/riak/util/message_code.rb", "lib/riak/util/translation.rb", "lib/riak.rb", "load_stocks.rb", "Manifest.txt", "Rakefile", "README.rdoc", "riakpb.gemspec", "script/console", "script/destroy", "script/generate", "spec/riak/bucket_spec.rb", "spec/riak/client_spec.rb", "spec/riak/key_spec.rb", "spec/riak/map_reduce_spec.rb", "spec/riak/riak_content_spec.rb", "spec/riak/rpc_spec.rb", "spec/spec_helper.rb"]
13
13
  s.homepage = %q{http://github.com/aitrus/riak-pbclient}
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 5
9
- version: 0.1.5
8
+ - 6
9
+ version: 0.1.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Scott Gonyea
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-06-16 00:00:00 -07:00
17
+ date: 2010-07-08 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -61,7 +61,7 @@ dependencies:
61
61
  version: 0.4.4
62
62
  type: :runtime
63
63
  version_requirements: *id003
64
- description: riakpb is a protocol buffer client for Riak--the distributed database by Basho. Connects via Protocol Buffers instead of REST.
64
+ description: riakpb is a protocol buffer client for Riak--the distributed database by Basho.
65
65
  email: me@inherentlylame.com
66
66
  executables: []
67
67