hpfeeds 0.1.3 → 0.1.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0601ce492ad0b35c6e5bc8262c63a67eb6383b07
4
- data.tar.gz: 908b2970b3d03f79cff8e8f6beb4357d99323281
3
+ metadata.gz: 6d5af098a432900571e7e05e0b7b333a8d99d02b
4
+ data.tar.gz: 883bd7c4a69d0934e4976428f3b2b32125ca43da
5
5
  SHA512:
6
- metadata.gz: f495301ebe6c183247ea8922344dcc740cdda21139e48dd7d4057828a55350198f3a0cef15d4e8ebb61c54058954c2800f133ea79ff05e7826bd3bb4990858bb
7
- data.tar.gz: c0f97fa987663df406114e7e2acff07997d09ab546b136e7abf835233657fce3c3092315a9997ac4f1b2ea6dfd904f122dd7179194c7dd87c6dec0c2c38cf528
6
+ metadata.gz: 49ebb7c0f6c6304f8403130a5462a62af4c0b6bf54bfc445b34ff8b98741385376e1afc0e87c52b55523ef16313ee7c31fc8e115525af306a638a52fbb714add
7
+ data.tar.gz: 3ff03cc873f66aacac67d19b75fae0feebf4672bd1063d608856903928926aba81f014b6f69af70879877f8d5a60f618a870bb74f68b143420d2431824136470
@@ -1,3 +1,7 @@
1
+ #### 0.1.4
2
+ - major changes:
3
+ - fixed bug in socket data receiving
4
+
1
5
  #### 0.1.3
2
6
  - major changes:
3
7
  - fixed bug in large feeds receiving
@@ -9,7 +9,7 @@ module HPFeeds
9
9
  OP_SUBSCRIBE = 4
10
10
 
11
11
  HEADERSIZE = 5
12
- BLOCKSIZE = 1024
12
+ BLOCKSIZE = 1500
13
13
 
14
14
  class Client
15
15
  def initialize(options)
@@ -62,12 +62,12 @@ module HPFeeds
62
62
  raise Exception.new("Could not connect to broker: #{e}.")
63
63
  end
64
64
  @logger.debug("waiting for data")
65
- header = recv_timeout(HEADERSIZE)
65
+ header = receive_data(HEADERSIZE, @timeout)
66
66
  opcode, len = @decoder.parse_header(header)
67
67
  @logger.debug("received header, opcode = #{opcode}, len = #{len}")
68
68
 
69
69
  if opcode == OP_INFO
70
- data = recv_timeout(len)
70
+ data = receive_data(len-HEADERSIZE, @timeout)
71
71
  @logger.debug("received data = #{binary_to_hex(data)}")
72
72
  name, rand = @decoder.parse_info(data)
73
73
  @logger.debug("received INFO, name = #{name}, rand = #{binary_to_hex(rand)}")
@@ -119,17 +119,14 @@ module HPFeeds
119
119
  begin
120
120
  while !@stopped
121
121
  while @connected
122
- header = @socket.recv(HEADERSIZE)
122
+ header = receive_data(HEADERSIZE)
123
123
  if header.empty?
124
124
  @connected = false
125
125
  break
126
126
  end
127
127
  opcode, len = @decoder.parse_header(header)
128
128
  @logger.debug("received header, opcode = #{opcode}, len = #{len}")
129
- data = ''
130
- while data.size < len - HEADERSIZE
131
- data += @socket.recv(BLOCKSIZE)
132
- end
129
+ data = receive_data(len - HEADERSIZE)
133
130
  if opcode == OP_ERROR
134
131
  unless error_callback.nil?
135
132
  error_callback.call(data)
@@ -176,14 +173,22 @@ module HPFeeds
176
173
  @socket.send(message, 0)
177
174
  end
178
175
 
179
- def recv_timeout(len)
180
- if IO.select([@socket], nil, nil, @timeout)
181
- @socket.recv(len)
176
+ def receive_data(max, timeout=nil)
177
+ if IO.select([@socket], nil, nil, timeout)
178
+ read_from_socket(max)
182
179
  else
183
180
  raise Exception.new("Connection receive timeout.")
184
181
  end
185
182
  end
186
183
 
184
+ def read_from_socket(max, block = BLOCKSIZE)
185
+ data = ''
186
+ (max/block).times do
187
+ data += @socket.recv(block)
188
+ end
189
+ data += @socket.recv(max % block)
190
+ end
191
+
187
192
  def get_log_level(level)
188
193
  begin
189
194
  Logger.const_get(level.to_s.upcase)
@@ -1,3 +1,3 @@
1
1
  module HPFeeds
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hpfeeds
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francesco Coda Zabetta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-18 00:00:00.000000000 Z
11
+ date: 2013-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -45,10 +45,10 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
+ - lib/hpfeeds/version.rb
48
49
  - lib/hpfeeds/exception.rb
49
50
  - lib/hpfeeds/decoder.rb
50
51
  - lib/hpfeeds/client.rb
51
- - lib/hpfeeds/version.rb
52
52
  - lib/hpfeeds.rb
53
53
  - LICENSE.txt
54
54
  - Rakefile