io-endpoint 0.16.0 → 0.17.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
- checksums.yaml.gz.sig +0 -0
- data/context/index.yaml +5 -0
- data/context/named-endpoints.md +140 -0
- data/lib/io/endpoint/named_endpoints.rb +92 -0
- data/lib/io/endpoint/version.rb +1 -1
- data/lib/io/endpoint.rb +1 -1
- data/license.md +1 -1
- data/readme.md +52 -4
- data/releases.md +111 -0
- data.tar.gz.sig +0 -0
- metadata +5 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6a1fd8b9900456445fa95fc7de22135fc86c96c9ed05586acec98c492de11ab7
|
|
4
|
+
data.tar.gz: b179c79964d3fba2d92753fc4494fd0fa2a88bcb825dc20561a61784adc60fec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6370da98fec490d732f957fd5cf947396551bed010d88211a4e6684529d4ea930bff17753ae672c3cc8e482315f96bd2d31ee4365a77bb85476fa12da23ace4f
|
|
7
|
+
data.tar.gz: c478357360832dd7c225979f2531025025f711fca06616b4efd2a7398d700a1c248021a5d2be6749fd9b5dc5950cd04a953ac383527c8d2cb301745ee5ac5038
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/context/index.yaml
CHANGED
|
@@ -10,3 +10,8 @@ files:
|
|
|
10
10
|
title: Getting Started
|
|
11
11
|
description: This guide explains how to get started with `io-endpoint`, a library
|
|
12
12
|
that provides a separation of concerns interface for network I/O endpoints.
|
|
13
|
+
- path: named-endpoints.md
|
|
14
|
+
title: Named Endpoints
|
|
15
|
+
description: This guide explains how to use `IO::Endpoint::NamedEndpoints` to manage
|
|
16
|
+
multiple endpoints by name, enabling scenarios like running the same application
|
|
17
|
+
on different protocols or ports.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Named Endpoints
|
|
2
|
+
|
|
3
|
+
This guide explains how to use `IO::Endpoint::NamedEndpoints` to manage multiple endpoints by name, enabling scenarios like running the same application on different protocols or ports.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`NamedEndpoints` is a collection of endpoints that can be accessed by symbolic names. Unlike {ruby IO::Endpoint::CompositeEndpoint}, which treats endpoints as an ordered list for failover, `NamedEndpoints` allows you to:
|
|
8
|
+
|
|
9
|
+
- **Access endpoints by name**: Use symbolic keys like `:http1` or `:http2` instead of array indices.
|
|
10
|
+
- **Run multiple configurations**: Serve the same application on different protocols, ports, or transports simultaneously.
|
|
11
|
+
- **Iterate over endpoints**: Process all endpoints while maintaining their names for configuration lookup.
|
|
12
|
+
|
|
13
|
+
## When to Use NamedEndpoints
|
|
14
|
+
|
|
15
|
+
Use `NamedEndpoints` when you need to:
|
|
16
|
+
|
|
17
|
+
- Run the same server application on multiple endpoints with different configurations (e.g., HTTP/1 and HTTP/2).
|
|
18
|
+
- Access endpoints by symbolic names rather than position.
|
|
19
|
+
- Bind multiple endpoints and create servers for each one.
|
|
20
|
+
- Manage a collection of endpoints where each has a specific role or configuration.
|
|
21
|
+
|
|
22
|
+
If you need failover behavior (trying endpoints in order until one succeeds), use {ruby IO::Endpoint::CompositeEndpoint} instead.
|
|
23
|
+
|
|
24
|
+
## Creating Named Endpoints
|
|
25
|
+
|
|
26
|
+
### Using the Constructor
|
|
27
|
+
|
|
28
|
+
Create a `NamedEndpoints` instance by passing a hash of endpoints:
|
|
29
|
+
|
|
30
|
+
```ruby
|
|
31
|
+
require "io/endpoint"
|
|
32
|
+
|
|
33
|
+
http1_endpoint = IO::Endpoint.tcp("localhost", 8080)
|
|
34
|
+
http2_endpoint = IO::Endpoint.tcp("localhost", 8090)
|
|
35
|
+
|
|
36
|
+
named = IO::Endpoint::NamedEndpoints.new(
|
|
37
|
+
http1: http1_endpoint,
|
|
38
|
+
http2: http2_endpoint
|
|
39
|
+
)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Using the Factory Method
|
|
43
|
+
|
|
44
|
+
The `IO::Endpoint.named` factory method provides a convenient way to create named endpoints:
|
|
45
|
+
|
|
46
|
+
```ruby
|
|
47
|
+
require "io/endpoint"
|
|
48
|
+
|
|
49
|
+
named = IO::Endpoint.named(
|
|
50
|
+
http1: IO::Endpoint.tcp("localhost", 8080),
|
|
51
|
+
http2: IO::Endpoint.tcp("localhost", 8090),
|
|
52
|
+
https: IO::Endpoint.ssl("localhost", 8443)
|
|
53
|
+
)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Accessing Endpoints
|
|
57
|
+
|
|
58
|
+
Access endpoints by their names using the `[]` operator:
|
|
59
|
+
|
|
60
|
+
```ruby
|
|
61
|
+
named = IO::Endpoint.named(
|
|
62
|
+
http1: IO::Endpoint.tcp("localhost", 8080),
|
|
63
|
+
http2: IO::Endpoint.tcp("localhost", 8090)
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# Access by name
|
|
67
|
+
http1 = named[:http1]
|
|
68
|
+
http2 = named[:http2]
|
|
69
|
+
|
|
70
|
+
# Returns nil if not found
|
|
71
|
+
missing = named[:nonexistent] # => nil
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Iterating Over Endpoints
|
|
75
|
+
|
|
76
|
+
### Using `each`
|
|
77
|
+
|
|
78
|
+
The `each` method yields both the name and endpoint:
|
|
79
|
+
|
|
80
|
+
```ruby
|
|
81
|
+
named = IO::Endpoint.named(
|
|
82
|
+
http1: IO::Endpoint.tcp("localhost", 8080),
|
|
83
|
+
http2: IO::Endpoint.tcp("localhost", 8090)
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
named.each do |name, endpoint|
|
|
87
|
+
puts "Endpoint #{name} is bound to #{endpoint}"
|
|
88
|
+
end
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
To map over endpoint values, use `endpoints.values.map`:
|
|
92
|
+
|
|
93
|
+
```ruby
|
|
94
|
+
protocols = named.endpoints.values.map do |endpoint|
|
|
95
|
+
endpoint.protocol.to_s
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# => ["HTTP1", "HTTP2"]
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Binding Endpoints
|
|
102
|
+
|
|
103
|
+
To bind endpoints, iterate over the collection and bind each endpoint individually, or use the `bound` method to create a new collection with all endpoints bound.
|
|
104
|
+
|
|
105
|
+
The `bound` method creates a new `NamedEndpoints` instance where all endpoints are bound:
|
|
106
|
+
|
|
107
|
+
```ruby
|
|
108
|
+
named = IO::Endpoint.named(
|
|
109
|
+
http1: IO::Endpoint.tcp("localhost", 8080),
|
|
110
|
+
http2: IO::Endpoint.tcp("localhost", 8090)
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
bound_named = named.bound(reuse_address: true)
|
|
114
|
+
|
|
115
|
+
# All endpoints are now bound
|
|
116
|
+
bound_named.each do |name, bound_endpoint|
|
|
117
|
+
server = bound_endpoint.sockets.first
|
|
118
|
+
server.listen(10)
|
|
119
|
+
end
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Connecting to Endpoints
|
|
123
|
+
|
|
124
|
+
To connect to a specific endpoint, access it by name and call `connect` on that endpoint:
|
|
125
|
+
|
|
126
|
+
```ruby
|
|
127
|
+
named = IO::Endpoint.named(
|
|
128
|
+
primary: IO::Endpoint.tcp("server1.example.com", 80),
|
|
129
|
+
secondary: IO::Endpoint.tcp("server2.example.com", 80)
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
# Connect to a specific endpoint by name
|
|
133
|
+
named[:primary].connect do |socket|
|
|
134
|
+
socket.write("GET / HTTP/1.1\r\n\r\n")
|
|
135
|
+
response = socket.read
|
|
136
|
+
puts response
|
|
137
|
+
end
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
If you need failover behavior (trying endpoints in order until one succeeds), use {ruby IO::Endpoint::CompositeEndpoint} instead.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Released under the MIT License.
|
|
4
|
+
# Copyright, 2026, by Samuel Williams.
|
|
5
|
+
|
|
6
|
+
require_relative "generic"
|
|
7
|
+
|
|
8
|
+
module IO::Endpoint
|
|
9
|
+
# A named endpoints collection is a hash of endpoints that can be accessed by name.
|
|
10
|
+
#
|
|
11
|
+
# Unlike {CompositeEndpoint}, which treats endpoints as an ordered list for failover, `NamedEndpoints` allows you to access endpoints by symbolic names, making it useful for scenarios where you need to run the same application on multiple endpoints with different configurations (e.g., HTTP/1 and HTTP/2 on different ports).
|
|
12
|
+
class NamedEndpoints
|
|
13
|
+
# Initialize a new named endpoints collection.
|
|
14
|
+
# @parameter endpoints [Hash(Symbol, Generic)] A hash mapping endpoint names to endpoint instances.
|
|
15
|
+
def initialize(endpoints)
|
|
16
|
+
@endpoints = endpoints
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Get a string representation of the named endpoints.
|
|
20
|
+
# @returns [String] A string representation listing all named endpoints.
|
|
21
|
+
def to_s
|
|
22
|
+
parts = @endpoints.map do |name, endpoint|
|
|
23
|
+
"#{name}:#{endpoint}"
|
|
24
|
+
end
|
|
25
|
+
"named:#{parts.join(",")}"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Get a detailed string representation of the named endpoints.
|
|
29
|
+
# @returns [String] A detailed string representation including all named endpoints.
|
|
30
|
+
def inspect
|
|
31
|
+
parts = @endpoints.map do |name, endpoint|
|
|
32
|
+
"#{name}: #{endpoint.inspect}"
|
|
33
|
+
end
|
|
34
|
+
"\#<#{self.class} #{parts.join(", ")}>"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @attribute [Hash(Symbol, Generic)] The endpoints hash mapping names to endpoint instances.
|
|
38
|
+
attr :endpoints
|
|
39
|
+
|
|
40
|
+
# Access an endpoint by its name.
|
|
41
|
+
# @parameter key [Symbol] The name of the endpoint to access.
|
|
42
|
+
# @returns [Generic, nil] The endpoint with the given name, or nil if not found.
|
|
43
|
+
def [] key
|
|
44
|
+
@endpoints[key]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Enumerate all endpoints with their names.
|
|
48
|
+
# @yields {|name, endpoint| ...} For each endpoint, yields the name and endpoint.
|
|
49
|
+
# @parameter name [Symbol] The name of the endpoint.
|
|
50
|
+
# @parameter endpoint [Generic] The endpoint.
|
|
51
|
+
def each(&block)
|
|
52
|
+
@endpoints.each(&block)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Create a new named endpoints instance with all endpoints bound.
|
|
56
|
+
# @parameter options [Hash] Options to pass to each endpoint's bound method.
|
|
57
|
+
# @returns [NamedEndpoints] A new instance with bound endpoints.
|
|
58
|
+
def bound(**options)
|
|
59
|
+
self.class.new(
|
|
60
|
+
@endpoints.transform_values{|endpoint| endpoint.bound(**options)}
|
|
61
|
+
)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Create a new named endpoints instance with all endpoints connected.
|
|
65
|
+
# @parameter options [Hash] Options to pass to each endpoint's connected method.
|
|
66
|
+
# @returns [NamedEndpoints] A new instance with connected endpoints.
|
|
67
|
+
def connected(**options)
|
|
68
|
+
self.class.new(
|
|
69
|
+
@endpoints.transform_values{|endpoint| endpoint.connected(**options)}
|
|
70
|
+
)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Close all endpoints in the collection.
|
|
74
|
+
# Calls `close` on each endpoint value.
|
|
75
|
+
# @returns [void]
|
|
76
|
+
def close
|
|
77
|
+
@endpoints.each_value(&:close)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Create a named endpoints collection from keyword arguments.
|
|
82
|
+
# @parameter endpoints [Hash(Symbol, Generic)] Named endpoints as keyword arguments.
|
|
83
|
+
# @returns [NamedEndpoints] A new named endpoints instance.
|
|
84
|
+
# @example Create a named endpoints collection
|
|
85
|
+
# endpoints = IO::Endpoint.named(
|
|
86
|
+
# http1: IO::Endpoint.tcp("localhost", 8080),
|
|
87
|
+
# http2: IO::Endpoint.tcp("localhost", 8090)
|
|
88
|
+
# )
|
|
89
|
+
def self.named(**endpoints)
|
|
90
|
+
NamedEndpoints.new(endpoints)
|
|
91
|
+
end
|
|
92
|
+
end
|
data/lib/io/endpoint/version.rb
CHANGED
data/lib/io/endpoint.rb
CHANGED
data/license.md
CHANGED
data/readme.md
CHANGED
|
@@ -10,6 +10,58 @@ Please see the [project documentation](https://socketry.github.io/io-endpoint) f
|
|
|
10
10
|
|
|
11
11
|
- [Getting Started](https://socketry.github.io/io-endpointguides/getting-started/index) - This guide explains how to get started with `io-endpoint`, a library that provides a separation of concerns interface for network I/O endpoints.
|
|
12
12
|
|
|
13
|
+
- [Named Endpoints](https://socketry.github.io/io-endpointguides/named-endpoints/index) - This guide explains how to use `IO::Endpoint::NamedEndpoints` to manage multiple endpoints by name, enabling scenarios like running the same application on different protocols or ports.
|
|
14
|
+
|
|
15
|
+
## Releases
|
|
16
|
+
|
|
17
|
+
Please see the [project releases](https://socketry.github.io/io-endpointreleases/index) for all releases.
|
|
18
|
+
|
|
19
|
+
### v0.17.1
|
|
20
|
+
|
|
21
|
+
- Add `#to_s` and `#inspect` for `IO::Endpoint::NamedEndpoints`.
|
|
22
|
+
|
|
23
|
+
### v0.17.0
|
|
24
|
+
|
|
25
|
+
- Added `IO::Endpoint::NamedEndpoints` for accessing endpoints by symbolic names, useful for running applications on multiple endpoints with different configurations.
|
|
26
|
+
|
|
27
|
+
### v0.16.0
|
|
28
|
+
|
|
29
|
+
- Improved error handling in `#connect` for more robust connection handling.
|
|
30
|
+
- Added getting started guide and improved documentation coverage.
|
|
31
|
+
|
|
32
|
+
### v0.15.2
|
|
33
|
+
|
|
34
|
+
- Fixed `UNIXEndpoint#bind` to pass all arguments through to super.
|
|
35
|
+
|
|
36
|
+
### v0.15.1
|
|
37
|
+
|
|
38
|
+
- Added `async-dns` to externals and restored removed method.
|
|
39
|
+
|
|
40
|
+
### v0.15.0
|
|
41
|
+
|
|
42
|
+
- Allow wrapper to be customized using endpoint `options[:wrapper]`.
|
|
43
|
+
- Expose wrapper extension points for `connect` and `accept`.
|
|
44
|
+
|
|
45
|
+
### v0.14.0
|
|
46
|
+
|
|
47
|
+
- Uniform `#to_s` and `#inspect` implementations across all endpoints.
|
|
48
|
+
|
|
49
|
+
### v0.13.1
|
|
50
|
+
|
|
51
|
+
- Fixed state leak between iterations of the accept loop.
|
|
52
|
+
|
|
53
|
+
### v0.13.0
|
|
54
|
+
|
|
55
|
+
- Propagate options assigned to composite endpoint to nested endpoints.
|
|
56
|
+
|
|
57
|
+
### v0.12.0
|
|
58
|
+
|
|
59
|
+
- Expose `size` and internal endpoints for composite endpoint.
|
|
60
|
+
|
|
61
|
+
## See Also
|
|
62
|
+
|
|
63
|
+
- [async-io](https://github.com/socketry/async-io) — Where this implementation originally came from.
|
|
64
|
+
|
|
13
65
|
## Contributing
|
|
14
66
|
|
|
15
67
|
We welcome contributions to this project.
|
|
@@ -27,7 +79,3 @@ In order to protect users of this project, we require all contributors to comply
|
|
|
27
79
|
### Community Guidelines
|
|
28
80
|
|
|
29
81
|
This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.
|
|
30
|
-
|
|
31
|
-
## See Also
|
|
32
|
-
|
|
33
|
-
- [async-io](https://github.com/socketry/async-io) — Where this implementation originally came from.
|
data/releases.md
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Releases
|
|
2
|
+
|
|
3
|
+
## v0.17.1
|
|
4
|
+
|
|
5
|
+
- Add `#to_s` and `#inspect` for `IO::Endpoint::NamedEndpoints`.
|
|
6
|
+
|
|
7
|
+
## v0.17.0
|
|
8
|
+
|
|
9
|
+
- Added `IO::Endpoint::NamedEndpoints` for accessing endpoints by symbolic names, useful for running applications on multiple endpoints with different configurations.
|
|
10
|
+
|
|
11
|
+
## v0.16.0
|
|
12
|
+
|
|
13
|
+
- Improved error handling in `#connect` for more robust connection handling.
|
|
14
|
+
- Added getting started guide and improved documentation coverage.
|
|
15
|
+
|
|
16
|
+
## v0.15.2
|
|
17
|
+
|
|
18
|
+
- Fixed `UNIXEndpoint#bind` to pass all arguments through to super.
|
|
19
|
+
|
|
20
|
+
## v0.15.1
|
|
21
|
+
|
|
22
|
+
- Added `async-dns` to externals and restored removed method.
|
|
23
|
+
|
|
24
|
+
## v0.15.0
|
|
25
|
+
|
|
26
|
+
- Allow wrapper to be customized using endpoint `options[:wrapper]`.
|
|
27
|
+
- Expose wrapper extension points for `connect` and `accept`.
|
|
28
|
+
|
|
29
|
+
## v0.14.0
|
|
30
|
+
|
|
31
|
+
- Uniform `#to_s` and `#inspect` implementations across all endpoints.
|
|
32
|
+
|
|
33
|
+
## v0.13.1
|
|
34
|
+
|
|
35
|
+
- Fixed state leak between iterations of the accept loop.
|
|
36
|
+
|
|
37
|
+
## v0.13.0
|
|
38
|
+
|
|
39
|
+
- Propagate options assigned to composite endpoint to nested endpoints.
|
|
40
|
+
|
|
41
|
+
## v0.12.0
|
|
42
|
+
|
|
43
|
+
- Expose `size` and internal endpoints for composite endpoint.
|
|
44
|
+
|
|
45
|
+
## v0.10.3
|
|
46
|
+
|
|
47
|
+
- Fixed `SSLServer#accept` failures causing accept loop to exit. (\#10)
|
|
48
|
+
|
|
49
|
+
## v0.10.2
|
|
50
|
+
|
|
51
|
+
- Centralized usage of `listen` to wrapper.
|
|
52
|
+
|
|
53
|
+
## v0.10.1
|
|
54
|
+
|
|
55
|
+
- Ensure `listen` is called.
|
|
56
|
+
|
|
57
|
+
## v0.10.0
|
|
58
|
+
|
|
59
|
+
- Don't hardcode timeout support - detect at run-time.
|
|
60
|
+
|
|
61
|
+
## v0.9.0
|
|
62
|
+
|
|
63
|
+
- Correctly set `sync_close`. (\#7)
|
|
64
|
+
|
|
65
|
+
## v0.8.1
|
|
66
|
+
|
|
67
|
+
- Remove broken `require_relative 'readable'`.
|
|
68
|
+
|
|
69
|
+
## v0.8.0
|
|
70
|
+
|
|
71
|
+
- Removed `IO#readable?` dependency in favor of `io-stream` gem.
|
|
72
|
+
|
|
73
|
+
## v0.7.2
|
|
74
|
+
|
|
75
|
+
- Added missing `SSLSocket#remote_address`.
|
|
76
|
+
|
|
77
|
+
## v0.7.1
|
|
78
|
+
|
|
79
|
+
- Improved shims for `IO#readable?`.
|
|
80
|
+
|
|
81
|
+
## v0.7.0
|
|
82
|
+
|
|
83
|
+
- Fixed shim for `OpenSSL::SSL::SSLSocket#local_address`.
|
|
84
|
+
- Added shim for `IO#readable?`.
|
|
85
|
+
|
|
86
|
+
## v0.6.0
|
|
87
|
+
|
|
88
|
+
- Allow `Wrapper#accept` to ignore unknown options.
|
|
89
|
+
|
|
90
|
+
## v0.5.0
|
|
91
|
+
|
|
92
|
+
- Fixed the OpenSSL shims. (\#5)
|
|
93
|
+
- Simplified implementation and separated connected/bound options. (\#4)
|
|
94
|
+
|
|
95
|
+
## v0.4.0
|
|
96
|
+
|
|
97
|
+
- Improved compatibility with `async-http`/`async-io`. (\#3)
|
|
98
|
+
|
|
99
|
+
## v0.3.0
|
|
100
|
+
|
|
101
|
+
- Fixed OpenSSL integration. (\#2)
|
|
102
|
+
|
|
103
|
+
## v0.2.0
|
|
104
|
+
|
|
105
|
+
- Added option `buffered:` for controlling `TCP_NODELAY`.
|
|
106
|
+
|
|
107
|
+
## v0.1.0
|
|
108
|
+
|
|
109
|
+
- Initial implementation extracted from `async-io`.
|
|
110
|
+
- Added support for thread and fiber wrappers.
|
|
111
|
+
- Support Ruby 2.7+ with optional `set_timeout`.
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: io-endpoint
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.17.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Samuel Williams
|
|
@@ -44,6 +44,7 @@ extra_rdoc_files: []
|
|
|
44
44
|
files:
|
|
45
45
|
- context/getting-started.md
|
|
46
46
|
- context/index.yaml
|
|
47
|
+
- context/named-endpoints.md
|
|
47
48
|
- lib/io/endpoint.rb
|
|
48
49
|
- lib/io/endpoint/address_endpoint.rb
|
|
49
50
|
- lib/io/endpoint/bound_endpoint.rb
|
|
@@ -51,6 +52,7 @@ files:
|
|
|
51
52
|
- lib/io/endpoint/connected_endpoint.rb
|
|
52
53
|
- lib/io/endpoint/generic.rb
|
|
53
54
|
- lib/io/endpoint/host_endpoint.rb
|
|
55
|
+
- lib/io/endpoint/named_endpoints.rb
|
|
54
56
|
- lib/io/endpoint/shared_endpoint.rb
|
|
55
57
|
- lib/io/endpoint/socket_endpoint.rb
|
|
56
58
|
- lib/io/endpoint/ssl_endpoint.rb
|
|
@@ -59,6 +61,7 @@ files:
|
|
|
59
61
|
- lib/io/endpoint/wrapper.rb
|
|
60
62
|
- license.md
|
|
61
63
|
- readme.md
|
|
64
|
+
- releases.md
|
|
62
65
|
homepage: https://github.com/socketry/io-endpoint
|
|
63
66
|
licenses:
|
|
64
67
|
- MIT
|
|
@@ -79,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
79
82
|
- !ruby/object:Gem::Version
|
|
80
83
|
version: '0'
|
|
81
84
|
requirements: []
|
|
82
|
-
rubygems_version:
|
|
85
|
+
rubygems_version: 4.0.3
|
|
83
86
|
specification_version: 4
|
|
84
87
|
summary: Provides a separation of concerns interface for IO endpoints.
|
|
85
88
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|