anycable-core 1.2.0 → 1.2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4c85f8eab809e414507ed9e35da7381b9ca2626ad4c9e2e4f84a5ee8dda2d09
4
- data.tar.gz: 37edd04f4c524384c989a774f94e7a8ede624f7fe95e3a6f1a864f2c11f03b4e
3
+ metadata.gz: 3ae8ddced1365e350a744545ed12da6e42fffbaa3f58d40b0f9d83598077a88a
4
+ data.tar.gz: 6637778d168c99c19a760a635455496ee121dfbbe0fd2472a3a29c4311ce3f7d
5
5
  SHA512:
6
- metadata.gz: 15602cd4712a4a451e41c03035b176d0fc276593852ab93f386e588d297f7a3e7be8284e8feb952fb19b8a0918973edb48c6a9ce2bd0fb8a63a0ceb068c12730
7
- data.tar.gz: a8453ffddde915bd88e2c5fd8cad6178194c8ca7ad3193f617157c6a92b5504022d4a11572e7bb61cc9157897857ab00b7dbab609961ee9ad7d9b55321f66ea9
6
+ metadata.gz: 3446218216fc8c7b76a0ddd249a8976afe8f9ddf83cdd4714bc29a94a2037caa066c5cae02bcb4a8109fd64555f80b871a4c718d059ec6382e814e9b7cc11ff0
7
+ data.tar.gz: 3711df758ce8d1963f158371f5c80a06757ffd3b392acf28cbec79652abe6d61e821800ddd6f2054310d2082a651263bcbe56bfb56a5af11dfc1bbdbe40044e8
data/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 1.2.3 (2022-04-20)
6
+
7
+ - Pass unique connection id (_session id_) in the `anycable.sid` Rack env field. ([@palkan][])
8
+
9
+ ## 1.2.2 (2022-03-04)
10
+
11
+ - Allow Ruby 2.6.
12
+
13
+ ## 1.2.1 (2022-02-21)
14
+
15
+ - Fix RBS signature. ([@palkan][])
16
+
17
+ - Add empty (`''`) service to gRPC health check as "NOT_SERVING". ([@palkan][])
18
+
5
19
  ## 1.2.0 (2021-12-21) 🎄
6
20
 
7
21
  - Drop Ruby 2.6 support.
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2017-2021 Vladimir Dementyev
1
+ Copyright 2017-2022 Vladimir Dementyev
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/anycable.svg)](https://rubygems.org/gems/anycable)
2
2
  [![Build](https://github.com/anycable/anycable/workflows/Build/badge.svg)](https://github.com/anycable/anycable/actions)
3
- [![Gitter](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/anycable/Lobby)
4
3
  [![Documentation](https://img.shields.io/badge/docs-link-brightgreen.svg)](https://docs.anycable.io/v1)
5
4
 
6
5
  # AnyCable
@@ -30,7 +30,7 @@ module AnyCable
30
30
  **options
31
31
  )
32
32
  options = AnyCable.config.to_redis_params.merge(options)
33
- @redis_conn = ::Redis.new(options)
33
+ @redis_conn = ::Redis.new(**options)
34
34
  @channel = channel
35
35
  end
36
36
 
data/lib/anycable/cli.rb CHANGED
@@ -65,6 +65,8 @@ module AnyCable
65
65
 
66
66
  check_version!
67
67
 
68
+ configure_middleware!
69
+
68
70
  @server = AnyCable.server_builder.call(config)
69
71
 
70
72
  # Make sure middlewares are not adding after server has started
@@ -119,7 +121,7 @@ module AnyCable
119
121
  def wait_till_terminated
120
122
  self_read = setup_signals
121
123
 
122
- while readable_io = IO.select([self_read]) # rubocop:disable Lint/AssignmentInCondition
124
+ while readable_io = IO.select([self_read]) # rubocop:disable Lint/AssignmentInCondition,Lint/IncompatibleIoSelectWithFiberScheduler
123
125
  signal = readable_io.first[0].gets.strip
124
126
  raise Interrupt, "SIG#{signal} received"
125
127
  end
@@ -265,6 +267,12 @@ module AnyCable
265
267
  )
266
268
  end
267
269
 
270
+ def configure_middleware!
271
+ if config.sid_header_enabled?
272
+ AnyCable.middleware.use(AnyCable::Middlewares::EnvSid)
273
+ end
274
+ end
275
+
268
276
  def parse_gem_options!(args)
269
277
  config.parse_options!(args)
270
278
  rescue OptionParser::InvalidOption => e
@@ -43,7 +43,8 @@ module AnyCable
43
43
  http_health_path: "/health",
44
44
 
45
45
  ### Misc options
46
- version_check_enabled: true
46
+ version_check_enabled: true,
47
+ sid_header_enabled: true
47
48
  )
48
49
 
49
50
  if respond_to?(:coerce_types)
@@ -74,7 +75,7 @@ module AnyCable
74
75
 
75
76
  HTTP HEALTH CHECKER
76
77
  --http-health-port=port Port to run HTTP health server on, default: <none> (disabled)
77
- --http-health-path=path Endpoint to server health cheks, default: "/health"
78
+ --http-health-path=path Endpoint to serve health checks, default: "/health"
78
79
 
79
80
  REDIS PUB/SUB
80
81
  --redis-url=url Redis URL for pub/sub, default: REDIS_URL or "redis://localhost:6379/5"
@@ -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
- res.status, res.body = server.running? ? SUCCESS_RESPONSE : FAILURE_RESPONSE
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
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AnyCable
4
+ module Middlewares
5
+ # Set sid for request.env from metadata
6
+ class EnvSid < AnyCable::Middleware
7
+ def call(_method, request, meta)
8
+ return yield unless meta["sid"]
9
+ request.env.sid = meta["sid"]
10
+
11
+ yield
12
+ end
13
+ end
14
+ end
15
+ end
data/lib/anycable/rpc.rb CHANGED
@@ -88,4 +88,11 @@ module AnyCable
88
88
  class DisconnectResponse
89
89
  include StatusPredicates
90
90
  end
91
+
92
+ # TODO: Move sid to env in the future version of RPC proto
93
+ unless Env.instance_methods(false).include?(:sid)
94
+ class Env
95
+ attr_accessor :sid
96
+ end
97
+ end
91
98
  end
@@ -116,22 +116,24 @@ 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" => request_env.headers.delete("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
- "anycable.raw_istate" => request_env.istate&.to_h
132
+ "anycable.raw_istate" => request_env.istate&.to_h,
133
+ "anycable.sid" => request_env.sid
132
134
  }.delete_if { |_k, v| v.nil? })
133
135
 
134
- env.merge!(build_headers(request_env.headers))
136
+ env.merge!(build_headers(headers))
135
137
  end
136
138
 
137
139
  def base_rack_env
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AnyCable
4
- VERSION = "1.2.0"
4
+ VERSION = "1.2.3"
5
5
  end
data/lib/anycable.rb CHANGED
@@ -10,6 +10,7 @@ require "anycable/broadcast_adapters"
10
10
  require "anycable/middleware_chain"
11
11
  require "anycable/middlewares/exceptions"
12
12
  require "anycable/middlewares/check_version"
13
+ require "anycable/middlewares/env_sid"
13
14
 
14
15
  require "anycable/socket"
15
16
  require "anycable/rpc"
@@ -114,5 +115,5 @@ begin
114
115
  rescue LoadError => e
115
116
  # Re-raise an exception if we failed to load grpc .so files
116
117
  # (e.g., on Alpine Linux)
117
- raise if /Error loading shared library/.match?(e.message)
118
+ raise if /(error loading shared library|incompatible architecture)/i.match?(e.message)
118
119
  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,10 @@
1
+ module AnyCable
2
+ module BroadcastAdapters
3
+ class Redis < Base
4
+ attr_reader redis_conn: untyped
5
+ attr_reader channel: String
6
+
7
+ def initialize: (?channel: String channel, **untyped options) -> void
8
+ end
9
+ end
10
+ 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,8 @@
1
+ module AnyCable
2
+ module GRPC
3
+ class Service
4
+ end
5
+
6
+ Stub: untyped
7
+ end
8
+ 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: _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: (_Server server, port: Integer port, ?logger: Logger logger, ?path: String path) -> void
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,10 @@
1
+ module AnyCable
2
+ module Middlewares
3
+ class CheckVersion < AnyCable::Middleware
4
+ attr_reader version: String
5
+
6
+ def initialize: (String version) -> void
7
+ def check_version: (rpcMetadata) { () -> untyped } -> untyped
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+ module AnyCable
2
+ module Middlewares
3
+ class EnvSid < AnyCable::Middleware
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ module AnyCable
2
+ module Middlewares
3
+ class Exceptions < AnyCable::Middleware
4
+ private
5
+
6
+ def notify_exception: (StandardError exp, Symbol method_name, rpcRequest request) -> void
7
+ def response_class: (Symbol method_name) -> untyped
8
+ end
9
+ end
10
+ end
@@ -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
@@ -0,0 +1,9 @@
1
+ module AnyCable
2
+ module RPC
3
+ module Handlers
4
+ module Command : _Handler
5
+ def command: (CommandMessage message) -> CommandResponse
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module AnyCable
2
+ module RPC
3
+ module Handlers
4
+ module Connect : _Handler
5
+ def connect: (ConnectionRequest request) -> ConnectionResponse
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module AnyCable
2
+ module RPC
3
+ module Handlers
4
+ module Disconnect : _Handler
5
+ def disconnect: (DisconnectRequest request) -> DisconnectResponse
6
+ end
7
+ end
8
+ end
9
+ 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 = Hash[String, String]
12
+ type protoMap = _ProtobufMap
7
13
  type rpcMetadata = Hash[String, String]
8
14
 
9
15
  interface _WithEnvState
@@ -18,6 +24,7 @@ module AnyCable
18
24
 
19
25
  attr_accessor url: String
20
26
  attr_accessor headers: protoMap
27
+ attr_accessor sid: String?
21
28
 
22
29
  def initialize: (?url: String, ?headers: protoMap, ?cstate: protoMap?, ?istate: protoMap?) -> void
23
30
  end
@@ -38,7 +45,7 @@ module AnyCable
38
45
  end
39
46
 
40
47
  module WithConnectionState : _WithEnv, _ProtoMessage
41
- def initialize: (?session: untyped? session, **untyped other) -> untyped
48
+ %a{rbs:test:skip} def initialize: (?session: untyped? session, **untyped other) -> untyped
42
49
 
43
50
  def session=: (untyped val) -> untyped
44
51
  def session: () -> untyped
@@ -60,8 +67,8 @@ module AnyCable
60
67
  class ConnectionRequest
61
68
  include _WithEnv
62
69
 
63
- def initialize: (?env: Env) -> void
64
- def to_h: () -> Hash[String, untyped]
70
+ %a{rbs:test:skip} def initialize: (?env: Env) -> void
71
+ def to_h: () -> Hash[Symbol, untyped]
65
72
  end
66
73
 
67
74
  class ConnectionResponse
@@ -73,7 +80,7 @@ module AnyCable
73
80
  attr_accessor error_msg: String?
74
81
  attr_accessor env: EnvResponse
75
82
 
76
- def initialize: (
83
+ %a{rbs:test:skip} def initialize: (
77
84
  status: rpcStatus,
78
85
  ?identifiers: String,
79
86
  ?transmissions: Array[String],
@@ -81,7 +88,7 @@ module AnyCable
81
88
  ?env: EnvResponse
82
89
  ) -> void
83
90
 
84
- def to_h: () -> Hash[String, untyped]
91
+ def to_h: () -> Hash[Symbol, untyped]
85
92
  end
86
93
 
87
94
  class CommandMessage
@@ -92,14 +99,14 @@ module AnyCable
92
99
  attr_accessor connection_identifiers: String
93
100
  attr_accessor data: String
94
101
 
95
- def initialize: (
102
+ %a{rbs:test:skip} def initialize: (
96
103
  command: String,
97
104
  identifier: String,
98
105
  ?connection_identifiers: String,
99
106
  ?env: Env
100
107
  ) -> void
101
108
 
102
- def to_h: () -> Hash[String, untyped]
109
+ def to_h: () -> Hash[Symbol, untyped]
103
110
  end
104
111
 
105
112
  class CommandResponse
@@ -114,7 +121,7 @@ module AnyCable
114
121
  attr_accessor env: EnvResponse
115
122
  attr_accessor stopped_streams: Array[String]
116
123
 
117
- def initialize: (
124
+ %a{rbs:test:skip} def initialize: (
118
125
  status: rpcStatus,
119
126
  ?disconnect: bool,
120
127
  ?stop_streams: bool,
@@ -125,7 +132,7 @@ module AnyCable
125
132
  ?env: EnvResponse
126
133
  ) -> void
127
134
 
128
- def to_h: () -> Hash[String, untyped]
135
+ def to_h: () -> Hash[Symbol, untyped]
129
136
  end
130
137
 
131
138
  class DisconnectRequest
@@ -134,8 +141,8 @@ module AnyCable
134
141
  attr_accessor identifiers: String
135
142
  attr_accessor subscriptions: Array[String]
136
143
 
137
- def initialize: (identifiers: String, ?subscriptions: Array[String], ?env: Env) -> void
138
- def to_h: () -> Hash[String, untyped]
144
+ %a{rbs:test:skip} def initialize: (identifiers: String, ?subscriptions: Array[String], ?env: Env) -> void
145
+ def to_h: () -> Hash[Symbol, untyped]
139
146
  end
140
147
 
141
148
  class DisconnectResponse
@@ -144,8 +151,8 @@ module AnyCable
144
151
  attr_accessor status: rpcStatus
145
152
  attr_accessor error_msg: String?
146
153
 
147
- def initialize: (status: rpcStatus, ?error_msg: String) -> void
148
- def to_h: () -> Hash[String, untyped]
154
+ %a{rbs:test:skip} def initialize: (status: rpcStatus, ?error_msg: String) -> void
155
+ def to_h: () -> Hash[Symbol, untyped]
149
156
  end
150
157
 
151
158
  type rpcRequest = ConnectionRequest | DisconnectRequest | CommandMessage
@@ -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: protoMap
5
+ attr_reader source: Hash[String, String]
6
6
 
7
- def initialize: (protoMap) -> void
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: () -> protoMap?
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
- attr_accessor self.connection_factory: ^(Socket, ?identifiers: String, ?subscriptions: Array[String]) -> _Connection
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.0
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - palkan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-21 00:00:00.000000000 Z
11
+ date: 2022-04-20 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:
@@ -184,6 +170,7 @@ files:
184
170
  - lib/anycable/middleware.rb
185
171
  - lib/anycable/middleware_chain.rb
186
172
  - lib/anycable/middlewares/check_version.rb
173
+ - lib/anycable/middlewares/env_sid.rb
187
174
  - lib/anycable/middlewares/exceptions.rb
188
175
  - lib/anycable/protos/rpc_pb.rb
189
176
  - lib/anycable/rpc.rb
@@ -197,13 +184,27 @@ files:
197
184
  - lib/anycable/version.rb
198
185
  - sig/anycable.rbs
199
186
  - sig/anycable/broadcast_adapters.rbs
187
+ - sig/anycable/broadcast_adapters/base.rbs
188
+ - sig/anycable/broadcast_adapters/http.rbs
189
+ - sig/anycable/broadcast_adapters/redis.rbs
200
190
  - sig/anycable/cli.rbs
201
191
  - sig/anycable/config.rbs
202
192
  - sig/anycable/exceptions_handling.rbs
193
+ - sig/anycable/grpc/config.rbs
194
+ - sig/anycable/grpc/handler.rbs
195
+ - sig/anycable/grpc/rpc_services_pb.rbs
196
+ - sig/anycable/grpc/server.rbs
203
197
  - sig/anycable/health_server.rbs
204
198
  - sig/anycable/middleware.rbs
205
199
  - sig/anycable/middleware_chain.rbs
200
+ - sig/anycable/middlewares/check_version.rbs
201
+ - sig/anycable/middlewares/env_sid.rbs
202
+ - sig/anycable/middlewares/exceptions.rbs
206
203
  - sig/anycable/rpc.rbs
204
+ - sig/anycable/rpc/handler.rbs
205
+ - sig/anycable/rpc/handlers/command.rbs
206
+ - sig/anycable/rpc/handlers/connect.rbs
207
+ - sig/anycable/rpc/handlers/disconnect.rbs
207
208
  - sig/anycable/socket.rbs
208
209
  - sig/anycable/version.rbs
209
210
  homepage: http://github.com/anycable/anycable
@@ -224,14 +225,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
224
225
  requirements:
225
226
  - - ">="
226
227
  - !ruby/object:Gem::Version
227
- version: 2.7.0
228
+ version: 2.6.0
228
229
  required_rubygems_version: !ruby/object:Gem::Requirement
229
230
  requirements:
230
231
  - - ">="
231
232
  - !ruby/object:Gem::Version
232
233
  version: '0'
233
234
  requirements: []
234
- rubygems_version: 3.2.22
235
+ rubygems_version: 3.3.7
235
236
  signing_key:
236
237
  specification_version: 4
237
238
  summary: AnyCable core RPC implementation