Class: Async::IO::Endpoint
- Inherits:
-
Object
- Object
- Async::IO::Endpoint
show all
- Defined in:
- lib/async/io/endpoint.rb,
lib/async/io/ssl_endpoint.rb,
lib/async/io/endpoint/each.rb,
lib/async/io/host_endpoint.rb,
lib/async/io/socket_endpoint.rb,
lib/async/io/address_endpoint.rb
Overview
Endpoints represent a way of connecting or binding to an address.
Instance Attribute Summary collapse
Class Method Summary
collapse
-
.each(specifications, &block) ⇒ Object
Generate a list of endpoint from an array.
-
.parse(string, **options) ⇒ Object
-
.socket(socket, **options) ⇒ Object
-
.ssl(*args, ssl_context: nil, hostname: nil, **options) ⇒ Object
-
.tcp(*args, **options) ⇒ Object
args: nodename, service, family, socktype, protocol, flags.
-
.try_convert(specification) ⇒ Object
-
.udp(*args, **options) ⇒ Object
-
.unix(*args, **options) ⇒ Object
Instance Method Summary
collapse
Constructor Details
#initialize(**options) ⇒ Endpoint
Returns a new instance of Endpoint.
30
31
32
|
# File 'lib/async/io/endpoint.rb', line 30
def initialize(**options)
@options = options
end
|
Instance Attribute Details
#options ⇒ Object
Returns the value of attribute options.
34
35
36
|
# File 'lib/async/io/endpoint.rb', line 34
def options
@options
end
|
Class Method Details
.each(specifications, &block) ⇒ Object
Generate a list of endpoint from an array.
45
46
47
48
49
50
51
|
# File 'lib/async/io/endpoint/each.rb', line 45
def self.each(specifications, &block)
return to_enum(:each, specifications) unless block_given?
specifications.each do |specification|
yield try_convert(specification)
end
end
|
.parse(string, **options) ⇒ Object
62
63
64
65
66
|
# File 'lib/async/io/endpoint.rb', line 62
def self.parse(string, **options)
uri = URI.parse(string)
self.send(uri.scheme, uri.host, uri.port, **options)
end
|
.socket(socket, **options) ⇒ Object
66
67
68
|
# File 'lib/async/io/socket_endpoint.rb', line 66
def self.socket(socket, **options)
SocketEndpoint.new(socket, **options)
end
|
.ssl(*args, ssl_context: nil, hostname: nil, **options) ⇒ Object
102
103
104
|
# File 'lib/async/io/ssl_endpoint.rb', line 102
def self.ssl(*args, ssl_context: nil, hostname: nil, **options)
SSLEndpoint.new(self.tcp(*args, **options), ssl_context: ssl_context, hostname: hostname)
end
|
.tcp(*args, **options) ⇒ Object
args: nodename, service, family, socktype, protocol, flags
82
83
84
85
86
|
# File 'lib/async/io/host_endpoint.rb', line 82
def self.tcp(*args, **options)
args[3] = ::Socket::SOCK_STREAM
HostEndpoint.new(args, **options)
end
|
.try_convert(specification) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/async/io/endpoint/each.rb', line 28
def self.try_convert(specification)
if specification.is_a? self
specification
elsif specification.is_a? Array
self.send(*specification)
elsif specification.is_a? String
self.parse(specification)
elsif specification.is_a? ::BasicSocket
self.socket(specification)
elsif specification.is_a? Generic
self.new(specification)
else
raise ArgumentError.new("Not sure how to convert #{specification} to endpoint!")
end
end
|
.udp(*args, **options) ⇒ Object
88
89
90
91
92
|
# File 'lib/async/io/host_endpoint.rb', line 88
def self.udp(*args, **options)
args[3] = ::Socket::SOCK_DGRAM
HostEndpoint.new(args, **options)
end
|
.unix(*args, **options) ⇒ Object
56
57
58
|
# File 'lib/async/io/address_endpoint.rb', line 56
def self.unix(*args, **options)
AddressEndpoint.new(Address.unix(*args), **options)
end
|
Instance Method Details
#accept(backlog = Socket::SOMAXCONN, &block) ⇒ Object
54
55
56
57
58
59
60
|
# File 'lib/async/io/endpoint.rb', line 54
def accept(backlog = Socket::SOMAXCONN, &block)
bind do |server|
server.listen(backlog)
server.accept_each(&block)
end
end
|
#each {|_self| ... } ⇒ Object
48
49
50
51
52
|
# File 'lib/async/io/endpoint.rb', line 48
def each
return to_enum unless block_given?
yield self
end
|
#hostname ⇒ Object
36
37
38
|
# File 'lib/async/io/endpoint.rb', line 36
def hostname
@options[:hostname]
end
|
#reuse_port ⇒ Object
40
41
42
|
# File 'lib/async/io/endpoint.rb', line 40
def reuse_port
@options[:reuse_port]
end
|
#timeout ⇒ Object
44
45
46
|
# File 'lib/async/io/endpoint.rb', line 44
def timeout
@options[:timeout]
end
|