riakpb 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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