anycable-core 1.2.0 → 1.2.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/CHANGELOG.md +6 -0
- data/MIT-LICENSE +1 -1
- data/README.md +0 -1
- data/lib/anycable/broadcast_adapters/redis.rb +1 -1
- data/lib/anycable/cli.rb +1 -1
- data/lib/anycable/config.rb +1 -1
- data/lib/anycable/grpc/server.rb +4 -0
- data/lib/anycable/health_server.rb +9 -1
- data/lib/anycable/socket.rb +4 -3
- data/lib/anycable/version.rb +1 -1
- data/lib/anycable.rb +1 -1
- data/sig/anycable/broadcast_adapters/base.rbs +18 -0
- data/sig/anycable/broadcast_adapters/http.rbs +31 -0
- data/sig/anycable/broadcast_adapters/redis.rbs +10 -0
- data/sig/anycable/grpc/config.rbs +36 -0
- data/sig/anycable/grpc/handler.rbs +11 -0
- data/sig/anycable/grpc/rpc_services_pb.rbs +8 -0
- data/sig/anycable/grpc/server.rbs +20 -0
- data/sig/anycable/health_server.rbs +6 -2
- data/sig/anycable/middlewares/check_version.rbs +10 -0
- data/sig/anycable/middlewares/exceptions.rbs +10 -0
- data/sig/anycable/rpc/handler.rbs +24 -0
- data/sig/anycable/rpc/handlers/command.rbs +9 -0
- data/sig/anycable/rpc/handlers/connect.rbs +9 -0
- data/sig/anycable/rpc/handlers/disconnect.rbs +9 -0
- data/sig/anycable/rpc.rbs +20 -14
- data/sig/anycable/socket.rbs +3 -3
- data/sig/anycable.rbs +5 -1
- metadata +15 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f387a5b5a0a7535f698339c719f4f7f8debd3c799f5e69b7b54b46b599d3830
|
4
|
+
data.tar.gz: 558f452d571cd33557836861083539fa130c266d5ded16764f0137a9494c39d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 819b9da9e51dae8e6feca6be71550c72e3aaee4358e8245c95235a030f9ee130d3b49d48590eb3d4abc8275a7918c71130b48fd63e3b4b9a5fd46d34520942c7
|
7
|
+
data.tar.gz: c3409d81a2b9c66593384de64d0cc66ac1c31d915d58a836af1c222438d152f18ca86830a86c7867b784ba2159aa80787a5abd5ea3b50d8edd99b835d572bbe8
|
data/CHANGELOG.md
CHANGED
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
[](https://rubygems.org/gems/anycable)
|
2
2
|
[](https://github.com/anycable/anycable/actions)
|
3
|
-
[](https://gitter.im/anycable/Lobby)
|
4
3
|
[](https://docs.anycable.io/v1)
|
5
4
|
|
6
5
|
# AnyCable
|
data/lib/anycable/cli.rb
CHANGED
@@ -119,7 +119,7 @@ module AnyCable
|
|
119
119
|
def wait_till_terminated
|
120
120
|
self_read = setup_signals
|
121
121
|
|
122
|
-
while readable_io = IO.select([self_read]) # rubocop:disable Lint/AssignmentInCondition
|
122
|
+
while readable_io = IO.select([self_read]) # rubocop:disable Lint/AssignmentInCondition,Lint/IncompatibleIoSelectWithFiberScheduler
|
123
123
|
signal = readable_io.first[0].gets.strip
|
124
124
|
raise Interrupt, "SIG#{signal} received"
|
125
125
|
end
|
data/lib/anycable/config.rb
CHANGED
@@ -74,7 +74,7 @@ module AnyCable
|
|
74
74
|
|
75
75
|
HTTP HEALTH CHECKER
|
76
76
|
--http-health-port=port Port to run HTTP health server on, default: <none> (disabled)
|
77
|
-
--http-health-path=path Endpoint to
|
77
|
+
--http-health-path=path Endpoint to serve health checks, default: "/health"
|
78
78
|
|
79
79
|
REDIS PUB/SUB
|
80
80
|
--redis-url=url Redis URL for pub/sub, default: REDIS_URL or "redis://localhost:6379/5"
|
data/lib/anycable/grpc/server.rb
CHANGED
@@ -96,6 +96,10 @@ module AnyCable
|
|
96
96
|
"anycable.RPC",
|
97
97
|
Grpc::Health::V1::HealthCheckResponse::ServingStatus::SERVING
|
98
98
|
)
|
99
|
+
health_checker.add_status(
|
100
|
+
"",
|
101
|
+
Grpc::Health::V1::HealthCheckResponse::ServingStatus::NOT_SERVING
|
102
|
+
)
|
99
103
|
health_checker
|
100
104
|
end
|
101
105
|
end
|
@@ -65,7 +65,15 @@ module AnyCable
|
|
65
65
|
AccessLog: []
|
66
66
|
).tap do |http_server|
|
67
67
|
http_server.mount_proc path do |_, res|
|
68
|
-
|
68
|
+
# Replace with mass assignment as soon as Steep added support
|
69
|
+
# https://github.com/soutaro/steep/issues/424
|
70
|
+
if server.running?
|
71
|
+
res.status = SUCCESS_RESPONSE.first
|
72
|
+
res.body = SUCCESS_RESPONSE.last
|
73
|
+
else
|
74
|
+
res.status = FAILURE_RESPONSE.first
|
75
|
+
res.body = FAILURE_RESPONSE.last
|
76
|
+
end
|
69
77
|
end
|
70
78
|
end
|
71
79
|
end
|
data/lib/anycable/socket.rb
CHANGED
@@ -116,22 +116,23 @@ module AnyCable
|
|
116
116
|
# Build Rack env from request
|
117
117
|
def build_rack_env
|
118
118
|
uri = URI.parse(request_env.url)
|
119
|
+
headers = request_env.headers.to_h
|
119
120
|
|
120
121
|
env = base_rack_env
|
121
122
|
env.merge!({
|
122
123
|
"PATH_INFO" => uri.path,
|
123
124
|
"QUERY_STRING" => uri.query,
|
124
125
|
"SERVER_NAME" => uri.host,
|
125
|
-
"SERVER_PORT" => uri.port,
|
126
|
+
"SERVER_PORT" => uri.port&.to_s,
|
126
127
|
"HTTP_HOST" => uri.host,
|
127
|
-
"REMOTE_ADDR" =>
|
128
|
+
"REMOTE_ADDR" => headers.delete("REMOTE_ADDR"),
|
128
129
|
"rack.url_scheme" => uri.scheme&.sub(/^ws/, "http"),
|
129
130
|
# AnyCable specific fields
|
130
131
|
"anycable.raw_cstate" => request_env.cstate&.to_h,
|
131
132
|
"anycable.raw_istate" => request_env.istate&.to_h
|
132
133
|
}.delete_if { |_k, v| v.nil? })
|
133
134
|
|
134
|
-
env.merge!(build_headers(
|
135
|
+
env.merge!(build_headers(headers))
|
135
136
|
end
|
136
137
|
|
137
138
|
def base_rack_env
|
data/lib/anycable/version.rb
CHANGED
data/lib/anycable.rb
CHANGED
@@ -114,5 +114,5 @@ begin
|
|
114
114
|
rescue LoadError => e
|
115
115
|
# Re-raise an exception if we failed to load grpc .so files
|
116
116
|
# (e.g., on Alpine Linux)
|
117
|
-
raise if /
|
117
|
+
raise if /(error loading shared library|incompatible architecture)/i.match?(e.message)
|
118
118
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module AnyCable
|
2
|
+
interface _BroadcastAdapter
|
3
|
+
def raw_broadcast: (String _data) -> void
|
4
|
+
def broadcast: (String stream, String payload) -> void
|
5
|
+
def broadcast_command: (String command, **untyped payload) -> void
|
6
|
+
def announce!: () -> void
|
7
|
+
end
|
8
|
+
|
9
|
+
module BroadcastAdapters
|
10
|
+
class Base
|
11
|
+
include _BroadcastAdapter
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def logger: () -> Logger
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module AnyCable
|
2
|
+
module BroadcastAdapters
|
3
|
+
class Http < Base
|
4
|
+
RECOVERABLE_EXCEPTIONS: Array[singleton(Class)]
|
5
|
+
OPEN_TIMEOUT: Integer
|
6
|
+
READ_TIMEOUT: Integer
|
7
|
+
MAX_ATTEMPTS: Integer
|
8
|
+
DELAY: Integer
|
9
|
+
|
10
|
+
attr_reader url: String
|
11
|
+
attr_reader headers: Hash[String, String]
|
12
|
+
attr_reader authorized: bool
|
13
|
+
|
14
|
+
alias authorized? authorized
|
15
|
+
|
16
|
+
def initialize: (?url: String url, ?secret: String secret) -> void
|
17
|
+
def shutdown: () -> void
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
attr_reader uri: URI::Generic
|
22
|
+
attr_reader queue: Thread::Queue
|
23
|
+
attr_reader thread: Thread?
|
24
|
+
|
25
|
+
def ensure_thread_is_alive: () -> void
|
26
|
+
def perform_request: (String payload) -> untyped
|
27
|
+
def handle_response: (untyped response) -> void
|
28
|
+
def build_http: () { (untyped) -> untyped } -> untyped
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module AnyCable
|
2
|
+
module GRPC
|
3
|
+
interface _Config
|
4
|
+
def rpc_host: () -> String
|
5
|
+
def rpc_host=: (String) -> void
|
6
|
+
def rpc_pool_size: () -> Integer
|
7
|
+
def rpc_pool_size=: (Integer) -> void
|
8
|
+
def rpc_max_waiting_requests: () -> Integer
|
9
|
+
def rpc_max_waiting_requests=: (Integer) -> void
|
10
|
+
def rpc_poll_period: () -> Integer
|
11
|
+
def rpc_poll_period=: (Integer) -> void
|
12
|
+
def rpc_pool_keep_alive: () -> Integer
|
13
|
+
def rpc_pool_keep_alive=: (Integer) -> void
|
14
|
+
def rpc_server_args: () -> Hash[Symbol | String, untyped]?
|
15
|
+
def rpc_server_args=: (Hash[Symbol | String, untyped]) -> void
|
16
|
+
def log_grpc: () -> bool
|
17
|
+
def log_grpc=: (bool) -> void
|
18
|
+
end
|
19
|
+
|
20
|
+
module Config : AnyCable::Config
|
21
|
+
include _Config
|
22
|
+
|
23
|
+
alias log_grpc? log_grpc
|
24
|
+
|
25
|
+
def to_grpc_params: () -> {
|
26
|
+
pool_size: Integer,
|
27
|
+
max_waiting_requests: Integer,
|
28
|
+
poll_period: Integer,
|
29
|
+
pool_keep_alive: Integer,
|
30
|
+
server_args: Hash[String, untyped]
|
31
|
+
}
|
32
|
+
|
33
|
+
def normalized_grpc_server_args: () -> Hash[String, untyped]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module AnyCable
|
2
|
+
module GRPC
|
3
|
+
# RPC service handler
|
4
|
+
class Handler < AnyCable::GRPC::Service
|
5
|
+
# Handle connection request from WebSocket server
|
6
|
+
def connect: (untyped request, untyped _unused_call) -> untyped
|
7
|
+
def disconnect: (untyped request, untyped _unused_call) -> untyped
|
8
|
+
def command: (untyped request, untyped _unused_call) -> untyped
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module AnyCable
|
2
|
+
module GRPC
|
3
|
+
class Server
|
4
|
+
include _Server
|
5
|
+
|
6
|
+
attr_reader grpc_server: untyped
|
7
|
+
attr_reader host: String
|
8
|
+
|
9
|
+
def initialize: (host: String, ?logger: Logger, **untyped options) -> void
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
attr_reader start_thread: Thread
|
14
|
+
|
15
|
+
def logger: () -> Logger
|
16
|
+
def build_server: (**untyped options) -> untyped
|
17
|
+
def build_health_checker: () -> untyped
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,14 +1,18 @@
|
|
1
1
|
module AnyCable
|
2
2
|
class HealthServer
|
3
|
+
interface _Runnable
|
4
|
+
def running?: () -> bool
|
5
|
+
end
|
6
|
+
|
3
7
|
SUCCESS_RESPONSE: Array[Integer | String]
|
4
8
|
FAILURE_RESPONSE: Array[Integer | String]
|
5
9
|
|
6
|
-
attr_reader server:
|
10
|
+
attr_reader server: _Runnable
|
7
11
|
attr_reader port: Integer
|
8
12
|
attr_reader path: String
|
9
13
|
attr_reader http_server: untyped
|
10
14
|
|
11
|
-
def initialize: (
|
15
|
+
def initialize: (_Runnable server, port: Integer port, ?logger: Logger logger, ?path: String path) -> void
|
12
16
|
def start: () -> void
|
13
17
|
def stop: () -> void
|
14
18
|
def running?: () -> bool
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module AnyCable
|
2
|
+
module RPC
|
3
|
+
interface _Handler
|
4
|
+
def build_socket: (env: Env) -> Socket
|
5
|
+
def build_env_response: (Socket socket) -> EnvResponse
|
6
|
+
def logger: () -> Logger
|
7
|
+
def factory: () -> _ConnectionFactory
|
8
|
+
end
|
9
|
+
|
10
|
+
class Handler
|
11
|
+
include _Handler
|
12
|
+
include Handlers::Connect
|
13
|
+
include Handlers::Disconnect
|
14
|
+
include Handlers::Command
|
15
|
+
|
16
|
+
def initialize: (?middleware: MiddlewareChain) -> void
|
17
|
+
def handle: (Symbol cmd, rpcRequest data, ?rpcMetadata meta) -> rpcResponse
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
attr_reader middleware: MiddlewareChain
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/sig/anycable/rpc.rbs
CHANGED
@@ -2,8 +2,14 @@ module AnyCable
|
|
2
2
|
PROTO_VERSION: ::String
|
3
3
|
SESSION_KEY: ::String
|
4
4
|
|
5
|
+
interface _ProtobufMap
|
6
|
+
def []: (String key) -> String
|
7
|
+
def []=: (String key, String val) -> String
|
8
|
+
def to_h: () -> Hash[String, String]
|
9
|
+
end
|
10
|
+
|
5
11
|
type rpcStatus = 0 | 1 | 2
|
6
|
-
type protoMap =
|
12
|
+
type protoMap = _ProtobufMap
|
7
13
|
type rpcMetadata = Hash[String, String]
|
8
14
|
|
9
15
|
interface _WithEnvState
|
@@ -38,7 +44,7 @@ module AnyCable
|
|
38
44
|
end
|
39
45
|
|
40
46
|
module WithConnectionState : _WithEnv, _ProtoMessage
|
41
|
-
def initialize: (?session: untyped? session, **untyped other) -> untyped
|
47
|
+
%a{rbs:test:skip} def initialize: (?session: untyped? session, **untyped other) -> untyped
|
42
48
|
|
43
49
|
def session=: (untyped val) -> untyped
|
44
50
|
def session: () -> untyped
|
@@ -60,8 +66,8 @@ module AnyCable
|
|
60
66
|
class ConnectionRequest
|
61
67
|
include _WithEnv
|
62
68
|
|
63
|
-
def initialize: (?env: Env) -> void
|
64
|
-
def to_h: () -> Hash[
|
69
|
+
%a{rbs:test:skip} def initialize: (?env: Env) -> void
|
70
|
+
def to_h: () -> Hash[Symbol, untyped]
|
65
71
|
end
|
66
72
|
|
67
73
|
class ConnectionResponse
|
@@ -73,7 +79,7 @@ module AnyCable
|
|
73
79
|
attr_accessor error_msg: String?
|
74
80
|
attr_accessor env: EnvResponse
|
75
81
|
|
76
|
-
def initialize: (
|
82
|
+
%a{rbs:test:skip} def initialize: (
|
77
83
|
status: rpcStatus,
|
78
84
|
?identifiers: String,
|
79
85
|
?transmissions: Array[String],
|
@@ -81,7 +87,7 @@ module AnyCable
|
|
81
87
|
?env: EnvResponse
|
82
88
|
) -> void
|
83
89
|
|
84
|
-
def to_h: () -> Hash[
|
90
|
+
def to_h: () -> Hash[Symbol, untyped]
|
85
91
|
end
|
86
92
|
|
87
93
|
class CommandMessage
|
@@ -92,14 +98,14 @@ module AnyCable
|
|
92
98
|
attr_accessor connection_identifiers: String
|
93
99
|
attr_accessor data: String
|
94
100
|
|
95
|
-
def initialize: (
|
101
|
+
%a{rbs:test:skip} def initialize: (
|
96
102
|
command: String,
|
97
103
|
identifier: String,
|
98
104
|
?connection_identifiers: String,
|
99
105
|
?env: Env
|
100
106
|
) -> void
|
101
107
|
|
102
|
-
def to_h: () -> Hash[
|
108
|
+
def to_h: () -> Hash[Symbol, untyped]
|
103
109
|
end
|
104
110
|
|
105
111
|
class CommandResponse
|
@@ -114,7 +120,7 @@ module AnyCable
|
|
114
120
|
attr_accessor env: EnvResponse
|
115
121
|
attr_accessor stopped_streams: Array[String]
|
116
122
|
|
117
|
-
def initialize: (
|
123
|
+
%a{rbs:test:skip} def initialize: (
|
118
124
|
status: rpcStatus,
|
119
125
|
?disconnect: bool,
|
120
126
|
?stop_streams: bool,
|
@@ -125,7 +131,7 @@ module AnyCable
|
|
125
131
|
?env: EnvResponse
|
126
132
|
) -> void
|
127
133
|
|
128
|
-
def to_h: () -> Hash[
|
134
|
+
def to_h: () -> Hash[Symbol, untyped]
|
129
135
|
end
|
130
136
|
|
131
137
|
class DisconnectRequest
|
@@ -134,8 +140,8 @@ module AnyCable
|
|
134
140
|
attr_accessor identifiers: String
|
135
141
|
attr_accessor subscriptions: Array[String]
|
136
142
|
|
137
|
-
def initialize: (identifiers: String, ?subscriptions: Array[String], ?env: Env) -> void
|
138
|
-
def to_h: () -> Hash[
|
143
|
+
%a{rbs:test:skip} def initialize: (identifiers: String, ?subscriptions: Array[String], ?env: Env) -> void
|
144
|
+
def to_h: () -> Hash[Symbol, untyped]
|
139
145
|
end
|
140
146
|
|
141
147
|
class DisconnectResponse
|
@@ -144,8 +150,8 @@ module AnyCable
|
|
144
150
|
attr_accessor status: rpcStatus
|
145
151
|
attr_accessor error_msg: String?
|
146
152
|
|
147
|
-
def initialize: (status: rpcStatus, ?error_msg: String) -> void
|
148
|
-
def to_h: () -> Hash[
|
153
|
+
%a{rbs:test:skip} def initialize: (status: rpcStatus, ?error_msg: String) -> void
|
154
|
+
def to_h: () -> Hash[Symbol, untyped]
|
149
155
|
end
|
150
156
|
|
151
157
|
type rpcRequest = ConnectionRequest | DisconnectRequest | CommandMessage
|
data/sig/anycable/socket.rbs
CHANGED
@@ -2,12 +2,12 @@ module AnyCable
|
|
2
2
|
class Socket
|
3
3
|
class State
|
4
4
|
attr_reader dirty_keys: Array[String]?
|
5
|
-
attr_reader source:
|
5
|
+
attr_reader source: Hash[String, String]
|
6
6
|
|
7
|
-
def initialize: (
|
7
|
+
def initialize: (Hash[String, String]) -> void
|
8
8
|
def read: (String key) -> untyped
|
9
9
|
def write: (String key, String val) -> void
|
10
|
-
def changed_fields: () ->
|
10
|
+
def changed_fields: () -> Hash[String, String]?
|
11
11
|
|
12
12
|
alias [] read
|
13
13
|
alias []= write
|
data/sig/anycable.rbs
CHANGED
@@ -18,7 +18,11 @@ module AnyCable
|
|
18
18
|
|
19
19
|
type serverBuilder = ^(Config) -> _Server
|
20
20
|
|
21
|
-
|
21
|
+
interface _ConnectionFactory
|
22
|
+
def call: (Socket, ?identifiers: String, ?subscriptions: Array[String]) -> _Connection
|
23
|
+
end
|
24
|
+
|
25
|
+
attr_accessor self.connection_factory: _ConnectionFactory
|
22
26
|
attr_accessor self.server_builder: serverBuilder
|
23
27
|
attr_writer self.logger: Logger
|
24
28
|
attr_writer self.rpc_handler: RPC::Handler
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anycable-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- palkan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: anyway_config
|
@@ -136,20 +136,6 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: steep
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
153
139
|
description: AnyCable core RPC implementation not depenending on a particular server
|
154
140
|
type (e.g., gRPC or whatever)
|
155
141
|
email:
|
@@ -197,13 +183,26 @@ files:
|
|
197
183
|
- lib/anycable/version.rb
|
198
184
|
- sig/anycable.rbs
|
199
185
|
- sig/anycable/broadcast_adapters.rbs
|
186
|
+
- sig/anycable/broadcast_adapters/base.rbs
|
187
|
+
- sig/anycable/broadcast_adapters/http.rbs
|
188
|
+
- sig/anycable/broadcast_adapters/redis.rbs
|
200
189
|
- sig/anycable/cli.rbs
|
201
190
|
- sig/anycable/config.rbs
|
202
191
|
- sig/anycable/exceptions_handling.rbs
|
192
|
+
- sig/anycable/grpc/config.rbs
|
193
|
+
- sig/anycable/grpc/handler.rbs
|
194
|
+
- sig/anycable/grpc/rpc_services_pb.rbs
|
195
|
+
- sig/anycable/grpc/server.rbs
|
203
196
|
- sig/anycable/health_server.rbs
|
204
197
|
- sig/anycable/middleware.rbs
|
205
198
|
- sig/anycable/middleware_chain.rbs
|
199
|
+
- sig/anycable/middlewares/check_version.rbs
|
200
|
+
- sig/anycable/middlewares/exceptions.rbs
|
206
201
|
- sig/anycable/rpc.rbs
|
202
|
+
- sig/anycable/rpc/handler.rbs
|
203
|
+
- sig/anycable/rpc/handlers/command.rbs
|
204
|
+
- sig/anycable/rpc/handlers/connect.rbs
|
205
|
+
- sig/anycable/rpc/handlers/disconnect.rbs
|
207
206
|
- sig/anycable/socket.rbs
|
208
207
|
- sig/anycable/version.rbs
|
209
208
|
homepage: http://github.com/anycable/anycable
|