Class: Excon::Socket
- Inherits:
-
Object
show all
- Extended by:
- Forwardable
- Includes:
- Utils
- Defined in:
- lib/excon/socket.rb
Constant Summary
collapse
- CONNECT_RETRY_EXCEPTION_CLASSES =
if defined?(IO::EINPROGRESSWaitWritable)
[Errno::EINPROGRESS, IO::EINPROGRESSWaitWritable]
else
[Errno::EINPROGRESS]
end
- READ_RETRY_EXCEPTION_CLASSES =
if defined?(IO::EAGAINWaitReadable)
[Errno::EAGAIN, Errno::EWOULDBLOCK, IO::WaitReadable, IO::EAGAINWaitReadable, IO::EWOULDBLOCKWaitReadable]
else
[Errno::EAGAIN, Errno::EWOULDBLOCK, IO::WaitReadable]
end
- WRITE_RETRY_EXCEPTION_CLASSES =
if defined?(IO::EAGAINWaitWritable)
[Errno::EAGAIN, Errno::EWOULDBLOCK, IO::WaitWritable, IO::EAGAINWaitWritable, IO::EWOULDBLOCKWaitWritable]
else
[Errno::EAGAIN, Errno::EWOULDBLOCK, IO::WaitWritable]
end
Constants included
from Utils
Utils::CONTROL, Utils::DELIMS, Utils::ESCAPED, Utils::NONASCII, Utils::UNESCAPED, Utils::UNWISE
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Utils
#binary_encode, #connection_uri, #escape_uri, #port_string, #query_string, #redact, #request_uri, #split_header_value, #unescape_form, #unescape_uri
Constructor Details
#initialize(data = {}) ⇒ Socket
43
44
45
46
47
48
49
50
|
# File 'lib/excon/socket.rb', line 43
def initialize(data = {})
@data = data
@nonblock = data[:nonblock]
@port ||= @data[:port] || 80
@read_buffer = String.new
@eof = false
connect
end
|
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
10
11
12
|
# File 'lib/excon/socket.rb', line 10
def data
@data
end
|
#remote_ip ⇒ Object
Returns the value of attribute remote_ip.
39
40
41
|
# File 'lib/excon/socket.rb', line 39
def remote_ip
@remote_ip
end
|
Instance Method Details
#legacy_readline ⇒ Object
69
70
71
72
73
74
75
76
77
|
# File 'lib/excon/socket.rb', line 69
def legacy_readline
begin
Timeout.timeout(@data[:read_timeout]) do
@socket.readline
end
rescue Timeout::Error
raise Excon::Errors::Timeout.new('read timeout reached')
end
end
|
#local_address ⇒ Object
87
88
89
|
# File 'lib/excon/socket.rb', line 87
def local_address
unpacked_sockaddr[1]
end
|
#local_port ⇒ Object
91
92
93
|
# File 'lib/excon/socket.rb', line 91
def local_port
unpacked_sockaddr[0]
end
|
#params ⇒ Object
29
30
31
32
|
# File 'lib/excon/socket.rb', line 29
def params
Excon.display_warning('Excon::Socket#params is deprecated use Excon::Socket#data instead.')
@data
end
|
#params=(new_params) ⇒ Object
34
35
36
37
|
# File 'lib/excon/socket.rb', line 34
def params=(new_params)
Excon.display_warning('Excon::Socket#params= is deprecated use Excon::Socket#data= instead.')
@data = new_params
end
|
#read(max_length = nil) ⇒ Object
52
53
54
55
56
57
58
59
60
|
# File 'lib/excon/socket.rb', line 52
def read(max_length = nil)
if @eof
return max_length ? nil : ''
elsif @nonblock
read_nonblock(max_length)
else
read_block(max_length)
end
end
|
#readline ⇒ Object
62
63
64
65
66
67
|
# File 'lib/excon/socket.rb', line 62
def readline
return legacy_readline if RUBY_VERSION.to_f <= 1.8_7
buffer = String.new
buffer << (read_nonblock(1) || raise(EOFError)) while buffer[-1] != "\n"
buffer
end
|
#write(data) ⇒ Object
79
80
81
82
83
84
85
|
# File 'lib/excon/socket.rb', line 79
def write(data)
if @nonblock
write_nonblock(data)
else
write_block(data)
end
end
|