anycable-core 1.1.0.pre1
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 +7 -0
- data/CHANGELOG.md +84 -0
- data/MIT-LICENSE +20 -0
- data/README.md +78 -0
- data/bin/anycable +13 -0
- data/bin/anycabled +30 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/lib/anycable.rb +114 -0
- data/lib/anycable/broadcast_adapters.rb +34 -0
- data/lib/anycable/broadcast_adapters/base.rb +29 -0
- data/lib/anycable/broadcast_adapters/http.rb +131 -0
- data/lib/anycable/broadcast_adapters/redis.rb +46 -0
- data/lib/anycable/cli.rb +319 -0
- data/lib/anycable/config.rb +127 -0
- data/lib/anycable/exceptions_handling.rb +35 -0
- data/lib/anycable/grpc.rb +30 -0
- data/lib/anycable/grpc/check_version.rb +33 -0
- data/lib/anycable/grpc/config.rb +53 -0
- data/lib/anycable/grpc/handler.rb +25 -0
- data/lib/anycable/grpc/rpc_services_pb.rb +24 -0
- data/lib/anycable/grpc/server.rb +103 -0
- data/lib/anycable/health_server.rb +73 -0
- data/lib/anycable/middleware.rb +10 -0
- data/lib/anycable/middleware_chain.rb +74 -0
- data/lib/anycable/middlewares/exceptions.rb +35 -0
- data/lib/anycable/protos/rpc_pb.rb +74 -0
- data/lib/anycable/rpc.rb +91 -0
- data/lib/anycable/rpc/handler.rb +50 -0
- data/lib/anycable/rpc/handlers/command.rb +36 -0
- data/lib/anycable/rpc/handlers/connect.rb +33 -0
- data/lib/anycable/rpc/handlers/disconnect.rb +27 -0
- data/lib/anycable/rspec.rb +4 -0
- data/lib/anycable/rspec/rpc_command_context.rb +21 -0
- data/lib/anycable/socket.rb +169 -0
- data/lib/anycable/version.rb +5 -0
- data/sig/anycable.rbs +37 -0
- data/sig/anycable/broadcast_adapters.rbs +5 -0
- data/sig/anycable/cli.rbs +40 -0
- data/sig/anycable/config.rbs +46 -0
- data/sig/anycable/exceptions_handling.rbs +14 -0
- data/sig/anycable/health_server.rbs +21 -0
- data/sig/anycable/middleware.rbs +5 -0
- data/sig/anycable/middleware_chain.rbs +22 -0
- data/sig/anycable/rpc.rbs +143 -0
- data/sig/anycable/socket.rbs +40 -0
- data/sig/anycable/version.rbs +3 -0
- metadata +237 -0
data/sig/anycable.rbs
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module AnyCable
|
2
|
+
interface _Server
|
3
|
+
def start: () -> void
|
4
|
+
def wait_till_terminated: () -> void
|
5
|
+
def stop: () -> void
|
6
|
+
def running?: () -> bool
|
7
|
+
def stopped?: () -> bool
|
8
|
+
end
|
9
|
+
|
10
|
+
interface _Connection
|
11
|
+
def handle_open: () -> void
|
12
|
+
def handle_close: () -> void
|
13
|
+
def handle_channel_command: (String identifier, String command, String data) -> void
|
14
|
+
def identifiers_json: () -> String
|
15
|
+
end
|
16
|
+
|
17
|
+
type rackEnv = Hash[String, untyped]
|
18
|
+
|
19
|
+
type serverBuilder = ^(Config) -> _Server
|
20
|
+
|
21
|
+
attr_accessor self.connection_factory: ^(Socket, ?identifiers: String, ?subscriptions: Array[String]) -> _Connection
|
22
|
+
attr_accessor self.server_builder: serverBuilder
|
23
|
+
attr_writer self.logger: Logger
|
24
|
+
attr_writer self.rpc_handler: RPC::Handler
|
25
|
+
attr_accessor self.middleware: MiddlewareChain
|
26
|
+
|
27
|
+
def self.logger: () -> Logger
|
28
|
+
def self.config: () -> Config
|
29
|
+
def self.configure: () { (Config) -> void } -> void
|
30
|
+
def self.capture_exception: () { (StandardError) -> void } -> void
|
31
|
+
def self.configure_server: () { () -> void } -> void
|
32
|
+
def self.server_callbacks: () -> Array[^() -> void]
|
33
|
+
def self.broadcast_adapter: () -> _BroadcastAdapter
|
34
|
+
def self.broadcast_adapter=: (untyped adapter) -> void
|
35
|
+
def self.broadcast: (String channel, String payload) -> void
|
36
|
+
def self.rpc_handler: () -> RPC::Handler
|
37
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module AnyCable
|
2
|
+
class CLI
|
3
|
+
APP_CANDIDATES: Array[String]
|
4
|
+
WAIT_PROCESS: Integer
|
5
|
+
attr_reader server: _Server
|
6
|
+
attr_reader health_server: HealthServer
|
7
|
+
attr_reader embedded: bool
|
8
|
+
|
9
|
+
alias embedded? embedded
|
10
|
+
|
11
|
+
def initialize: (?embedded: bool embedded) -> void
|
12
|
+
def run: (?untyped args) -> void
|
13
|
+
def shutdown: () -> void
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
attr_reader boot_file: String?
|
18
|
+
attr_reader server_command: String?
|
19
|
+
|
20
|
+
def config: () -> Config
|
21
|
+
def logger: () -> Logger
|
22
|
+
def at_stop: () { () -> void } -> Array[^() -> void]
|
23
|
+
def wait_till_terminated: () -> void
|
24
|
+
def setup_signals: () -> void
|
25
|
+
def print_version!: () -> void
|
26
|
+
def boot_app!: () -> void
|
27
|
+
def try_detect_app: () -> String?
|
28
|
+
def configure_server!: () -> void
|
29
|
+
def start_health_server!: () -> void
|
30
|
+
def start_pubsub!: () -> void
|
31
|
+
def run_custom_server_command!: () -> void
|
32
|
+
def log_errors!: () -> void
|
33
|
+
def verify_connection_factory!: () -> void
|
34
|
+
def verify_server_builder!: () -> void
|
35
|
+
def parse_gem_options!: (untyped args) -> void
|
36
|
+
def parse_cli_options!: (untyped args) -> void
|
37
|
+
def build_cli_parser: () -> untyped
|
38
|
+
def usage: () -> String
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module AnyCable
|
2
|
+
interface _Config
|
3
|
+
def broadcast_adapter: () -> Symbol
|
4
|
+
def broadcast_adapter=: (Symbol) -> void
|
5
|
+
def redis_url: () -> String
|
6
|
+
def redis_url=: (String) -> void
|
7
|
+
def redis_sentinels: () -> Array[String | Hash[untyped, untyped]]?
|
8
|
+
def redis_sentinels=: (Array[String]) -> void
|
9
|
+
def redis_channel: () -> String
|
10
|
+
def redis_channel=: (String) -> void
|
11
|
+
def http_broadcast_url: () -> String
|
12
|
+
def http_broadcast_url=: (String) -> void
|
13
|
+
def http_broadcast_secret: () -> String?
|
14
|
+
def http_broadcast_secret=: (String) -> void
|
15
|
+
def log_file: () -> String?
|
16
|
+
def log_file=: (String) -> void
|
17
|
+
def log_level: () -> String
|
18
|
+
def log_level=: (String) -> void
|
19
|
+
def debug: () -> bool
|
20
|
+
def debug=: (bool) -> void
|
21
|
+
def http_health_port: () -> Integer?
|
22
|
+
def http_health_port=: (Integer) -> void
|
23
|
+
def http_health_path: () -> String
|
24
|
+
def http_health_path=: (String) -> void
|
25
|
+
def version_check_enabled: () -> bool
|
26
|
+
def version_check_enabled=: (bool) -> void
|
27
|
+
end
|
28
|
+
|
29
|
+
class Config < Anyway::Config
|
30
|
+
def self.usage: (String txt) -> void
|
31
|
+
def self.usages: () -> Array[String]
|
32
|
+
|
33
|
+
include _Config
|
34
|
+
|
35
|
+
alias debug? debug
|
36
|
+
alias version_check_enabled? version_check_enabled
|
37
|
+
|
38
|
+
def http_health_port_provided?: () -> bool
|
39
|
+
def to_redis_params: () -> { url: String, sentinels: Array[untyped]?, ssl_params: Hash[Symbol, untyped]? }
|
40
|
+
def to_http_health_params: () -> { port: Integer?, path: String }
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def parse_sentinel: ((String | Hash[untyped, untyped]) sentinel) -> Hash[Symbol, untyped]
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module AnyCable
|
2
|
+
module ExceptionsHandling
|
3
|
+
def self.add_handler: (untyped block) -> untyped
|
4
|
+
|
5
|
+
alias self.<< self.add_handler
|
6
|
+
|
7
|
+
def self.notify: (untyped exp, untyped method_name, untyped message) -> untyped
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def self.procify: (untyped block) -> untyped
|
12
|
+
def self.handlers: () -> untyped
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module AnyCable
|
2
|
+
class HealthServer
|
3
|
+
SUCCESS_RESPONSE: Array[Integer | String]
|
4
|
+
FAILURE_RESPONSE: Array[Integer | String]
|
5
|
+
|
6
|
+
attr_reader server: _Server
|
7
|
+
attr_reader port: Integer
|
8
|
+
attr_reader path: String
|
9
|
+
attr_reader http_server: untyped
|
10
|
+
|
11
|
+
def initialize: (_Server server, port: Integer port, ?logger: Logger logger, ?path: String path) -> void
|
12
|
+
def start: () -> void
|
13
|
+
def stop: () -> void
|
14
|
+
def running?: () -> bool
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def logger: () -> Logger
|
19
|
+
def build_server: () -> untyped
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module AnyCable
|
2
|
+
class MiddlewareChain
|
3
|
+
type rpcHandlerBlock = ^(Symbol, rpcRequest) -> rpcResponse
|
4
|
+
|
5
|
+
def initialize: () -> void
|
6
|
+
def use: (singleton(Middleware) | Middleware middleware) -> void
|
7
|
+
def freeze: () -> void
|
8
|
+
def to_a: () -> Array[Middleware]
|
9
|
+
def call: (Symbol, rpcRequest) { (Symbol, rpcRequest) -> rpcResponse } -> rpcResponse
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def execute_next_middleware: (Integer ind, Symbol, rpcRequest, rpcHandlerBlock block) -> rpcResponse
|
14
|
+
|
15
|
+
attr_reader mu: untyped
|
16
|
+
attr_reader registry: Array[Middleware]
|
17
|
+
|
18
|
+
def sync: () { () -> untyped } -> untyped
|
19
|
+
def check_frozen!: () -> untyped
|
20
|
+
def build_middleware: (untyped middleware) -> untyped
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
module AnyCable
|
2
|
+
PROTO_VERSION: ::String
|
3
|
+
SESSION_KEY: ::String
|
4
|
+
|
5
|
+
type rpcStatus = 0 | 1 | 2
|
6
|
+
type protoMap = Hash[String, String]
|
7
|
+
|
8
|
+
interface _WithEnvState
|
9
|
+
def cstate: () -> protoMap?
|
10
|
+
def cstate=: (protoMap) -> void
|
11
|
+
def istate: () -> protoMap?
|
12
|
+
def istate=: (protoMap) -> void
|
13
|
+
end
|
14
|
+
|
15
|
+
class Env
|
16
|
+
include _WithEnvState
|
17
|
+
|
18
|
+
attr_accessor url: String
|
19
|
+
attr_accessor headers: protoMap
|
20
|
+
|
21
|
+
def initialize: (?url: String, ?headers: protoMap, ?cstate: protoMap, ?istate: protoMap) -> void
|
22
|
+
end
|
23
|
+
|
24
|
+
class EnvResponse
|
25
|
+
include _WithEnvState
|
26
|
+
|
27
|
+
def initialize: (?cstate: protoMap, ?istate: protoMap) -> void
|
28
|
+
end
|
29
|
+
|
30
|
+
interface _ProtoMessage
|
31
|
+
def initialize: (**untyped) -> void
|
32
|
+
end
|
33
|
+
|
34
|
+
interface _WithEnv
|
35
|
+
def env: () -> Env
|
36
|
+
def env=: (Env) -> void
|
37
|
+
end
|
38
|
+
|
39
|
+
module WithConnectionState : _WithEnv, _ProtoMessage
|
40
|
+
def initialize: (?session: untyped? session, **untyped other) -> untyped
|
41
|
+
|
42
|
+
def session=: (untyped val) -> untyped
|
43
|
+
def session: () -> untyped
|
44
|
+
|
45
|
+
def cstate: () -> protoMap?
|
46
|
+
def cstate=: (protoMap val) -> protoMap
|
47
|
+
|
48
|
+
def istate: () -> protoMap?
|
49
|
+
def istate=: (protoMap val) -> protoMap
|
50
|
+
end
|
51
|
+
|
52
|
+
module StatusPredicates
|
53
|
+
def status: () -> rpcStatus
|
54
|
+
def success?: () -> bool
|
55
|
+
def failure?: () -> bool
|
56
|
+
def error?: () -> bool
|
57
|
+
end
|
58
|
+
|
59
|
+
class ConnectionRequest
|
60
|
+
include _WithEnv
|
61
|
+
|
62
|
+
def initialize: (?env: Env) -> void
|
63
|
+
end
|
64
|
+
|
65
|
+
class ConnectionResponse
|
66
|
+
include StatusPredicates
|
67
|
+
|
68
|
+
attr_accessor status: rpcStatus
|
69
|
+
attr_accessor identifiers: String
|
70
|
+
attr_accessor transmissions: Array[String]
|
71
|
+
attr_accessor error_msg: String?
|
72
|
+
attr_accessor env: EnvResponse
|
73
|
+
|
74
|
+
def initialize: (
|
75
|
+
status: rpcStatus,
|
76
|
+
?identifiers: String,
|
77
|
+
?transmissions: Array[String],
|
78
|
+
?error_msg: String,
|
79
|
+
?env: EnvResponse
|
80
|
+
) -> void
|
81
|
+
end
|
82
|
+
|
83
|
+
class CommandMessage
|
84
|
+
include _WithEnv
|
85
|
+
|
86
|
+
attr_accessor command: String
|
87
|
+
attr_accessor identifier: String
|
88
|
+
attr_accessor connection_identifiers: String
|
89
|
+
attr_accessor data: String
|
90
|
+
|
91
|
+
def initialize: (
|
92
|
+
command: String,
|
93
|
+
identifier: String,
|
94
|
+
?connection_identifiers: String,
|
95
|
+
?env: Env
|
96
|
+
) -> void
|
97
|
+
end
|
98
|
+
|
99
|
+
class CommandResponse
|
100
|
+
include StatusPredicates
|
101
|
+
|
102
|
+
attr_accessor status: rpcStatus
|
103
|
+
attr_accessor disconnect: bool
|
104
|
+
attr_accessor stop_streams: bool
|
105
|
+
attr_accessor streams: Array[String]
|
106
|
+
attr_accessor transmissions: Array[String]
|
107
|
+
attr_accessor error_msg: String?
|
108
|
+
attr_accessor env: EnvResponse
|
109
|
+
attr_accessor stopped_streams: Array[String]
|
110
|
+
|
111
|
+
def initialize: (
|
112
|
+
status: rpcStatus,
|
113
|
+
?disconnect: bool,
|
114
|
+
?stop_streams: bool,
|
115
|
+
?streams: Array[String],
|
116
|
+
?stopped_streams: Array[String],
|
117
|
+
?transmissions: Array[String],
|
118
|
+
?error_msg: String,
|
119
|
+
?env: EnvResponse
|
120
|
+
) -> void
|
121
|
+
end
|
122
|
+
|
123
|
+
class DisconnectRequest
|
124
|
+
include _WithEnv
|
125
|
+
|
126
|
+
attr_accessor identifiers: String
|
127
|
+
attr_accessor subscriptions: Array[String]
|
128
|
+
|
129
|
+
def initialize: (identifiers: String, ?subscriptions: Array[String], ?env: Env) -> void
|
130
|
+
end
|
131
|
+
|
132
|
+
class DisconnectResponse
|
133
|
+
include StatusPredicates
|
134
|
+
|
135
|
+
attr_accessor status: rpcStatus
|
136
|
+
attr_accessor error_msg: String?
|
137
|
+
|
138
|
+
def initialize: (status: rpcStatus, ?error_msg: String) -> void
|
139
|
+
end
|
140
|
+
|
141
|
+
type rpcRequest = ConnectionRequest | DisconnectRequest | CommandMessage
|
142
|
+
type rpcResponse = ConnectionResponse | DisconnectResponse | CommandResponse
|
143
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module AnyCable
|
2
|
+
class Socket
|
3
|
+
class State
|
4
|
+
attr_reader dirty_keys: Array[String]?
|
5
|
+
attr_reader source: protoMap
|
6
|
+
|
7
|
+
def initialize: (protoMap) -> void
|
8
|
+
def read: (String key) -> untyped
|
9
|
+
def write: (String key, String val) -> void
|
10
|
+
def changed_fields: () -> protoMap?
|
11
|
+
|
12
|
+
alias [] read
|
13
|
+
alias []= write
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader transmissions: Array[String]
|
17
|
+
attr_reader request_env: Env
|
18
|
+
|
19
|
+
def initialize: (env: Env) -> void
|
20
|
+
def transmit: (String) -> void
|
21
|
+
def subscribe: (String, String) -> void
|
22
|
+
def unsubscribe: (String, String) -> void
|
23
|
+
def unsubscribe_from_all: (String) -> void
|
24
|
+
def streams: () -> { start: Array[String], stop: Array[String] }
|
25
|
+
def close: () -> void
|
26
|
+
def closed?: () -> bool
|
27
|
+
def stop_streams?: () -> bool
|
28
|
+
def session: () -> untyped
|
29
|
+
def session=: (untyped val) -> untyped
|
30
|
+
def env: () -> Hash[String, untyped]
|
31
|
+
def cstate: () -> State
|
32
|
+
def istate: () -> State
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def build_rack_env: () -> rackEnv
|
37
|
+
def base_rack_env: () -> rackEnv
|
38
|
+
def build_headers: (untyped headers) -> Hash[String, String]
|
39
|
+
end
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,237 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: anycable-core
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0.pre1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- palkan
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-04-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: anyway_config
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.1.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.1.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: google-protobuf
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.13'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.13'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: redis
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '4.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '4.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '13.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '13.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rack
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.5'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.5'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: webmock
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '3.8'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '3.8'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: webrick
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
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
|
+
description: AnyCable core RPC implementation not depenending on a particular server
|
154
|
+
type (e.g., gRPC or whatever)
|
155
|
+
email:
|
156
|
+
- dementiev.vm@gmail.com
|
157
|
+
executables:
|
158
|
+
- anycable
|
159
|
+
- anycabled
|
160
|
+
extensions: []
|
161
|
+
extra_rdoc_files: []
|
162
|
+
files:
|
163
|
+
- CHANGELOG.md
|
164
|
+
- MIT-LICENSE
|
165
|
+
- README.md
|
166
|
+
- bin/anycable
|
167
|
+
- bin/anycabled
|
168
|
+
- bin/console
|
169
|
+
- bin/setup
|
170
|
+
- lib/anycable.rb
|
171
|
+
- lib/anycable/broadcast_adapters.rb
|
172
|
+
- lib/anycable/broadcast_adapters/base.rb
|
173
|
+
- lib/anycable/broadcast_adapters/http.rb
|
174
|
+
- lib/anycable/broadcast_adapters/redis.rb
|
175
|
+
- lib/anycable/cli.rb
|
176
|
+
- lib/anycable/config.rb
|
177
|
+
- lib/anycable/exceptions_handling.rb
|
178
|
+
- lib/anycable/grpc.rb
|
179
|
+
- lib/anycable/grpc/check_version.rb
|
180
|
+
- lib/anycable/grpc/config.rb
|
181
|
+
- lib/anycable/grpc/handler.rb
|
182
|
+
- lib/anycable/grpc/rpc_services_pb.rb
|
183
|
+
- lib/anycable/grpc/server.rb
|
184
|
+
- lib/anycable/health_server.rb
|
185
|
+
- lib/anycable/middleware.rb
|
186
|
+
- lib/anycable/middleware_chain.rb
|
187
|
+
- lib/anycable/middlewares/exceptions.rb
|
188
|
+
- lib/anycable/protos/rpc_pb.rb
|
189
|
+
- lib/anycable/rpc.rb
|
190
|
+
- lib/anycable/rpc/handler.rb
|
191
|
+
- lib/anycable/rpc/handlers/command.rb
|
192
|
+
- lib/anycable/rpc/handlers/connect.rb
|
193
|
+
- lib/anycable/rpc/handlers/disconnect.rb
|
194
|
+
- lib/anycable/rspec.rb
|
195
|
+
- lib/anycable/rspec/rpc_command_context.rb
|
196
|
+
- lib/anycable/socket.rb
|
197
|
+
- lib/anycable/version.rb
|
198
|
+
- sig/anycable.rbs
|
199
|
+
- sig/anycable/broadcast_adapters.rbs
|
200
|
+
- sig/anycable/cli.rbs
|
201
|
+
- sig/anycable/config.rbs
|
202
|
+
- sig/anycable/exceptions_handling.rbs
|
203
|
+
- sig/anycable/health_server.rbs
|
204
|
+
- sig/anycable/middleware.rbs
|
205
|
+
- sig/anycable/middleware_chain.rbs
|
206
|
+
- sig/anycable/rpc.rbs
|
207
|
+
- sig/anycable/socket.rbs
|
208
|
+
- sig/anycable/version.rbs
|
209
|
+
homepage: http://github.com/anycable/anycable
|
210
|
+
licenses:
|
211
|
+
- MIT
|
212
|
+
metadata:
|
213
|
+
bug_tracker_uri: http://github.com/anycable/anycable/issues
|
214
|
+
changelog_uri: https://github.com/anycable/anycable/blob/master/CHANGELOG.md
|
215
|
+
documentation_uri: https://docs.anycable.io/
|
216
|
+
homepage_uri: https://anycable.io/
|
217
|
+
source_code_uri: http://github.com/anycable/anycable
|
218
|
+
post_install_message:
|
219
|
+
rdoc_options: []
|
220
|
+
require_paths:
|
221
|
+
- lib
|
222
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
223
|
+
requirements:
|
224
|
+
- - ">="
|
225
|
+
- !ruby/object:Gem::Version
|
226
|
+
version: 2.6.0
|
227
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
228
|
+
requirements:
|
229
|
+
- - ">"
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: 1.3.1
|
232
|
+
requirements: []
|
233
|
+
rubygems_version: 3.2.15
|
234
|
+
signing_key:
|
235
|
+
specification_version: 4
|
236
|
+
summary: AnyCable core RPC implementation
|
237
|
+
test_files: []
|