hpfeeds 0.1.3 → 0.1.4

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