anycable-core 1.2.0 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
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