rubysl-net-protocol 1.0.0 → 2.0.1
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 +4 -4
- data/.travis.yml +6 -0
- data/lib/rubysl/net/protocol/protocol.rb +44 -20
- data/lib/rubysl/net/protocol/version.rb +1 -1
- data/rubysl-net-protocol.gemspec +3 -0
- metadata +20 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f0dddf4e307731f0d4912dab2cb75188a77121a
|
4
|
+
data.tar.gz: 6e32a554d2c4e473a6de3a3458c081edb0247aec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62b61fcc4432be376df0d401738fc201ec9e810c0ca60b08959c5a83dea326b46a47ea539daf1e328c1cf9113709041218ea2b073c3b77e8f69a7740a065b15a
|
7
|
+
data.tar.gz: ebb62c7ca6e2fa6a7d0bb5881701a8a5c42cf7c4e0d5ba4fb0712abc824f35d5b4be3f1c916ec8386e6a0fe2adb17a44e6c6d0c02a9e810c3c1bd093c7421789
|
data/.travis.yml
ADDED
@@ -2,8 +2,8 @@
|
|
2
2
|
# = net/protocol.rb
|
3
3
|
#
|
4
4
|
#--
|
5
|
-
# Copyright (c) 1999-
|
6
|
-
# Copyright (c) 1999-
|
5
|
+
# Copyright (c) 1999-2004 Yukihiro Matsumoto
|
6
|
+
# Copyright (c) 1999-2004 Minero Aoki
|
7
7
|
#
|
8
8
|
# written and maintained by Minero Aoki <aamine@loveruby.net>
|
9
9
|
#
|
@@ -45,23 +45,41 @@ module Net # :nodoc:
|
|
45
45
|
class ProtoRetriableError < ProtocolError; end
|
46
46
|
ProtocRetryError = ProtoRetriableError
|
47
47
|
|
48
|
+
##
|
49
|
+
# OpenTimeout, a subclass of Timeout::Error, is raised if a connection cannot
|
50
|
+
# be created within the open_timeout.
|
51
|
+
|
52
|
+
class OpenTimeout < Timeout::Error; end
|
53
|
+
|
54
|
+
##
|
55
|
+
# ReadTimeout, a subclass of Timeout::Error, is raised if a chunk of the
|
56
|
+
# response cannot be read within the read_timeout.
|
57
|
+
|
58
|
+
class ReadTimeout < Timeout::Error; end
|
59
|
+
|
48
60
|
|
49
61
|
class BufferedIO #:nodoc: internal use only
|
50
62
|
def initialize(io)
|
51
63
|
@io = io
|
52
64
|
@read_timeout = 60
|
65
|
+
@continue_timeout = nil
|
53
66
|
@debug_output = nil
|
54
67
|
@rbuf = ''
|
55
68
|
end
|
56
69
|
|
57
70
|
attr_reader :io
|
58
71
|
attr_accessor :read_timeout
|
72
|
+
attr_accessor :continue_timeout
|
59
73
|
attr_accessor :debug_output
|
60
74
|
|
61
75
|
def inspect
|
62
76
|
"#<#{self.class} io=#{@io}>"
|
63
77
|
end
|
64
78
|
|
79
|
+
def eof?
|
80
|
+
@io.eof?
|
81
|
+
end
|
82
|
+
|
65
83
|
def closed?
|
66
84
|
@io.closed?
|
67
85
|
end
|
@@ -121,7 +139,7 @@ module Net # :nodoc:
|
|
121
139
|
return rbuf_consume(@rbuf.size)
|
122
140
|
end
|
123
141
|
end
|
124
|
-
|
142
|
+
|
125
143
|
def readline
|
126
144
|
readuntil("\n").chop
|
127
145
|
end
|
@@ -131,9 +149,23 @@ module Net # :nodoc:
|
|
131
149
|
BUFSIZE = 1024 * 16
|
132
150
|
|
133
151
|
def rbuf_fill
|
134
|
-
|
135
|
-
@rbuf << @io.
|
136
|
-
|
152
|
+
begin
|
153
|
+
@rbuf << @io.read_nonblock(BUFSIZE)
|
154
|
+
rescue IO::WaitReadable
|
155
|
+
if IO.select([@io], nil, nil, @read_timeout)
|
156
|
+
retry
|
157
|
+
else
|
158
|
+
raise Net::ReadTimeout
|
159
|
+
end
|
160
|
+
rescue IO::WaitWritable
|
161
|
+
# OpenSSL::Buffering#read_nonblock may fail with IO::WaitWritable.
|
162
|
+
# http://www.openssl.org/support/faq.html#PROG10
|
163
|
+
if IO.select(nil, [@io], nil, @read_timeout)
|
164
|
+
retry
|
165
|
+
else
|
166
|
+
raise Net::ReadTimeout
|
167
|
+
end
|
168
|
+
end
|
137
169
|
end
|
138
170
|
|
139
171
|
def rbuf_consume(len)
|
@@ -154,6 +186,8 @@ module Net # :nodoc:
|
|
154
186
|
}
|
155
187
|
end
|
156
188
|
|
189
|
+
alias << write
|
190
|
+
|
157
191
|
def writeline(str)
|
158
192
|
writing {
|
159
193
|
write0 str + "\r\n"
|
@@ -202,16 +236,6 @@ module Net # :nodoc:
|
|
202
236
|
|
203
237
|
|
204
238
|
class InternetMessageIO < BufferedIO #:nodoc: internal use only
|
205
|
-
def InternetMessageIO.old_open(addr, port,
|
206
|
-
open_timeout = nil, read_timeout = nil, debug_output = nil)
|
207
|
-
debug_output << "opening connection to #{addr}...\n" if debug_output
|
208
|
-
s = timeout(open_timeout) { TCPsocket.new(addr, port) }
|
209
|
-
io = new(s)
|
210
|
-
io.read_timeout = read_timeout
|
211
|
-
io.debug_output = debug_output
|
212
|
-
io
|
213
|
-
end
|
214
|
-
|
215
239
|
def initialize(io)
|
216
240
|
super
|
217
241
|
@wbuf = nil
|
@@ -232,7 +256,7 @@ module Net # :nodoc:
|
|
232
256
|
LOG_on()
|
233
257
|
LOG "read message (#{read_bytes} bytes)"
|
234
258
|
end
|
235
|
-
|
259
|
+
|
236
260
|
# *library private* (cannot handle 'break')
|
237
261
|
def each_list_item
|
238
262
|
while (str = readuntil("\r\n")) != ".\r\n"
|
@@ -298,7 +322,7 @@ module Net # :nodoc:
|
|
298
322
|
|
299
323
|
def each_crlf_line(src)
|
300
324
|
buffer_filling(@wbuf, src) do
|
301
|
-
while line = @wbuf.slice!(/\A
|
325
|
+
while line = @wbuf.slice!(/\A[^\r\n]*(?:\n|\r(?:\n|(?!\z)))/)
|
302
326
|
yield line.chomp("\n") + "\r\n"
|
303
327
|
end
|
304
328
|
end
|
@@ -317,8 +341,8 @@ module Net # :nodoc:
|
|
317
341
|
yield
|
318
342
|
end
|
319
343
|
else # generic reader
|
320
|
-
src.each do |
|
321
|
-
buf <<
|
344
|
+
src.each do |str|
|
345
|
+
buf << str
|
322
346
|
yield if buf.size > 1024
|
323
347
|
end
|
324
348
|
yield unless buf.empty?
|
data/rubysl-net-protocol.gemspec
CHANGED
@@ -16,6 +16,9 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
|
+
spec.required_ruby_version = "~> 2.0"
|
20
|
+
|
19
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
20
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency "mspec", "~> 1.5"
|
21
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubysl-net-protocol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Shirai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.5'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.5'
|
41
55
|
description: Ruby standard library net-protocol.
|
42
56
|
email:
|
43
57
|
- brixen@gmail.com
|
@@ -46,6 +60,7 @@ extensions: []
|
|
46
60
|
extra_rdoc_files: []
|
47
61
|
files:
|
48
62
|
- .gitignore
|
63
|
+
- .travis.yml
|
49
64
|
- Gemfile
|
50
65
|
- LICENSE
|
51
66
|
- README.md
|
@@ -65,9 +80,9 @@ require_paths:
|
|
65
80
|
- lib
|
66
81
|
required_ruby_version: !ruby/object:Gem::Requirement
|
67
82
|
requirements:
|
68
|
-
- -
|
83
|
+
- - ~>
|
69
84
|
- !ruby/object:Gem::Version
|
70
|
-
version: '0'
|
85
|
+
version: '2.0'
|
71
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
87
|
requirements:
|
73
88
|
- - '>='
|
@@ -80,3 +95,4 @@ signing_key:
|
|
80
95
|
specification_version: 4
|
81
96
|
summary: Ruby standard library net-protocol.
|
82
97
|
test_files: []
|
98
|
+
has_rdoc:
|