grpc_kit 0.1.8 → 0.1.9
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/examples/helloworld_client.rb +1 -1
- data/examples/routeguide_client.rb +33 -0
- data/examples/routeguide_server.rb +17 -0
- data/lib/grpc.rb +2 -1
- data/lib/grpc_kit.rb +4 -1
- data/lib/grpc_kit/calls.rb +17 -3
- data/lib/grpc_kit/calls/client_bidi_streamer.rb +63 -0
- data/lib/grpc_kit/calls/client_client_streamer.rb +8 -4
- data/lib/grpc_kit/calls/client_request_response.rb +7 -4
- data/lib/grpc_kit/calls/client_server_streamer.rb +7 -4
- data/lib/grpc_kit/calls/server_bidi_streamer.rb +43 -0
- data/lib/grpc_kit/calls/server_client_streamer.rb +5 -1
- data/lib/grpc_kit/calls/server_request_response.rb +5 -1
- data/lib/grpc_kit/calls/server_server_streamer.rb +5 -1
- data/lib/grpc_kit/client.rb +22 -4
- data/lib/grpc_kit/errors.rb +25 -11
- data/lib/grpc_kit/grpc/dsl.rb +17 -2
- data/lib/grpc_kit/grpc/generic_service.rb +0 -13
- data/lib/grpc_kit/grpc/interceptor.rb +27 -0
- data/lib/grpc_kit/grpc/logger.rb +4 -1
- data/lib/grpc_kit/grpc_time.rb +3 -1
- data/lib/grpc_kit/interceptors.rb +3 -0
- data/lib/grpc_kit/interceptors/client_bidi_streamer.rb +20 -0
- data/lib/grpc_kit/interceptors/client_client_streamer.rb +3 -0
- data/lib/grpc_kit/interceptors/client_request_response.rb +3 -0
- data/lib/grpc_kit/interceptors/client_server_streamer.rb +3 -0
- data/lib/grpc_kit/interceptors/server_bidi_streamer.rb +17 -0
- data/lib/grpc_kit/interceptors/server_client_streamer.rb +2 -0
- data/lib/grpc_kit/interceptors/server_request_response.rb +2 -0
- data/lib/grpc_kit/interceptors/server_server_streamer.rb +2 -0
- data/lib/grpc_kit/protobuffer.rb +8 -0
- data/lib/grpc_kit/rpc_desc.rb +21 -4
- data/lib/grpc_kit/rpcs.rb +4 -0
- data/lib/grpc_kit/rpcs/client_bidi_streamer.rb +20 -1
- data/lib/grpc_kit/rpcs/client_client_streamer.rb +5 -0
- data/lib/grpc_kit/rpcs/client_request_response.rb +11 -17
- data/lib/grpc_kit/rpcs/client_server_streamer.rb +5 -0
- data/lib/grpc_kit/rpcs/server_bidi_streamer.rb +17 -0
- data/lib/grpc_kit/rpcs/server_client_streamer.rb +3 -0
- data/lib/grpc_kit/rpcs/server_request_response.rb +3 -0
- data/lib/grpc_kit/rpcs/server_server_streamer.rb +3 -0
- data/lib/grpc_kit/server.rb +12 -4
- data/lib/grpc_kit/session/client_session.rb +7 -2
- data/lib/grpc_kit/session/drain_controller.rb +2 -0
- data/lib/grpc_kit/session/headers.rb +11 -0
- data/lib/grpc_kit/session/io.rb +9 -0
- data/lib/grpc_kit/session/recv_buffer.rb +7 -0
- data/lib/grpc_kit/session/send_buffer.rb +8 -0
- data/lib/grpc_kit/session/server_session.rb +8 -5
- data/lib/grpc_kit/session/stream.rb +17 -3
- data/lib/grpc_kit/session/stream_status.rb +7 -1
- data/lib/grpc_kit/stream/client_stream.rb +55 -9
- data/lib/grpc_kit/stream/server_stream.rb +19 -1
- data/lib/grpc_kit/transport/client_transport.rb +39 -3
- data/lib/grpc_kit/transport/packable.rb +9 -3
- data/lib/grpc_kit/transport/server_transport.rb +15 -2
- data/lib/grpc_kit/version.rb +1 -1
- metadata +6 -3
- data/TODO.md +0 -71
data/lib/grpc_kit/client.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'grpc_kit/grpc_time'
|
4
4
|
require 'grpc_kit/session/io'
|
@@ -8,6 +8,10 @@ require 'grpc_kit/transport/client_transport'
|
|
8
8
|
|
9
9
|
module GrpcKit
|
10
10
|
class Client
|
11
|
+
# @param sock [TCPSocket]
|
12
|
+
# @param authority [nil, String]
|
13
|
+
# @param interceptors [Array<GrpcKit::GRPC::ClientInterceptor>] list of interceptors
|
14
|
+
# @param timeout [nil, Integer, String]
|
11
15
|
def initialize(sock, authority: nil, interceptors: [], timeout: nil)
|
12
16
|
@sock = sock
|
13
17
|
@authority =
|
@@ -23,31 +27,45 @@ module GrpcKit
|
|
23
27
|
build_rpcs(interceptors)
|
24
28
|
end
|
25
29
|
|
30
|
+
# @param rpc [GrpcKit::Rpcs::Client::RequestResponse]
|
31
|
+
# @param request [Object]
|
32
|
+
# @param opts [Hash]
|
26
33
|
def request_response(rpc, request, opts = {})
|
27
34
|
GrpcKit.logger.debug('Calling request_respose')
|
28
35
|
do_request(rpc, request, opts)
|
29
36
|
end
|
30
37
|
|
38
|
+
# @param rpc [GrpcKit::Rpcs::Client::ClientStreamer]
|
39
|
+
# @param opts [Hash]
|
31
40
|
def client_streamer(rpc, opts = {})
|
32
41
|
GrpcKit.logger.debug('Calling client_streamer')
|
33
42
|
do_request(rpc, nil, opts)
|
34
43
|
end
|
35
44
|
|
45
|
+
# @param rpc [GrpcKit::Rpcs::Client::ServerStreamer]
|
46
|
+
# @param request [Object]
|
47
|
+
# @param opts [Hash]
|
36
48
|
def server_streamer(rpc, request, opts = {})
|
37
49
|
GrpcKit.logger.debug('Calling server_streamer')
|
38
50
|
do_request(rpc, request, opts)
|
39
51
|
end
|
40
52
|
|
41
|
-
|
53
|
+
# @param rpc [GrpcKit::Rpcs::Client::ServerStreamer]
|
54
|
+
# @param _requests [Object] it's for compatibility, no use
|
55
|
+
# @param opts [Hash]
|
56
|
+
def bidi_streamer(rpc, _requests, opts = {})
|
42
57
|
GrpcKit.logger.debug('Calling bidi_streamer')
|
58
|
+
do_request(rpc, nil, opts)
|
43
59
|
end
|
44
60
|
|
45
61
|
private
|
46
62
|
|
47
63
|
def do_request(rpc, request, **opts)
|
48
64
|
t = GrpcKit::Transport::ClientTransport.new(session)
|
49
|
-
|
50
|
-
|
65
|
+
timeout = (opts[:timeout] && GrpcKit::GrpcTime.new(opts[:timeout])) || @timeout
|
66
|
+
|
67
|
+
cs = GrpcKit::Stream::ClientStream.new(t, rpc.config, authority: @authority, timeout: timeout)
|
68
|
+
rpc.invoke(cs, request, timeout: timeout, **opts)
|
51
69
|
end
|
52
70
|
|
53
71
|
def session
|
data/lib/grpc_kit/errors.rb
CHANGED
@@ -6,13 +6,22 @@ module GrpcKit
|
|
6
6
|
module Errors
|
7
7
|
# https://github.com/grpc/grpc/blob/23b5b1a5a9c7084c5b64d4998ee15af0f77bd589/doc/statuscodes.md
|
8
8
|
|
9
|
+
# @param code [String] GrpcKit::StatusCodes's value
|
10
|
+
# @param message [String]
|
11
|
+
# @return [GrpcKit::Errors::BadStatus]
|
9
12
|
def self.from_status_code(code, message)
|
10
13
|
CODES.fetch(code).new(message)
|
11
14
|
end
|
12
15
|
|
13
16
|
class BadStatus < StandardError
|
14
|
-
|
17
|
+
# @return [String]
|
18
|
+
attr_reader :code
|
15
19
|
|
20
|
+
# @return [String]
|
21
|
+
attr_reader :reason
|
22
|
+
|
23
|
+
# @param code [String] GrpcKit::StatusCodes's value
|
24
|
+
# @param reason [String]
|
16
25
|
def initialize(code, reason)
|
17
26
|
@code = code
|
18
27
|
@reason = reason
|
@@ -21,32 +30,37 @@ module GrpcKit
|
|
21
30
|
end
|
22
31
|
|
23
32
|
class Unknown < BadStatus
|
24
|
-
|
25
|
-
|
33
|
+
# @param message [String]
|
34
|
+
def initialize(message)
|
35
|
+
super(GrpcKit::StatusCodes::UNKNOWN, message)
|
26
36
|
end
|
27
37
|
end
|
28
38
|
|
29
39
|
class DeadlineExceeded < BadStatus
|
30
|
-
|
31
|
-
|
40
|
+
# @param message [String]
|
41
|
+
def initialize(message)
|
42
|
+
super(GrpcKit::StatusCodes::DEADLINE_EXCEEDED, message)
|
32
43
|
end
|
33
44
|
end
|
34
45
|
|
35
46
|
class Unimplemented < BadStatus
|
36
|
-
|
37
|
-
|
47
|
+
# @param message [String]
|
48
|
+
def initialize(message)
|
49
|
+
super(GrpcKit::StatusCodes::UNIMPLEMENTED, message)
|
38
50
|
end
|
39
51
|
end
|
40
52
|
|
41
53
|
class ResourceExhausted < BadStatus
|
42
|
-
|
43
|
-
|
54
|
+
# @param message [String]
|
55
|
+
def initialize(message)
|
56
|
+
super(GrpcKit::StatusCodes::RESOURCE_EXHAUSTED, message)
|
44
57
|
end
|
45
58
|
end
|
46
59
|
|
47
60
|
class Internal < BadStatus
|
48
|
-
|
49
|
-
|
61
|
+
# @param message [String]
|
62
|
+
def initialize(message)
|
63
|
+
super(GrpcKit::StatusCodes::INTERNAL, message)
|
50
64
|
end
|
51
65
|
end
|
52
66
|
|
data/lib/grpc_kit/grpc/dsl.rb
CHANGED
@@ -8,13 +8,24 @@ require 'grpc_kit/grpc/stream'
|
|
8
8
|
module GrpcKit
|
9
9
|
module GRPC
|
10
10
|
module Dsl
|
11
|
-
|
11
|
+
# @param value [String]
|
12
|
+
attr_writer :service_name
|
13
|
+
|
14
|
+
# @param value [Symbol]
|
15
|
+
attr_writer :marshal_class_method
|
16
|
+
|
17
|
+
# @param value [Symbol]
|
18
|
+
attr_writer :unmarshal_class_method
|
12
19
|
|
13
20
|
def inherited(subclass)
|
14
21
|
subclass.rpc_descs.merge!(rpc_descs)
|
15
22
|
subclass.service_name = @service_name
|
16
23
|
end
|
17
24
|
|
25
|
+
# @param name [Symbol] gRPC method name
|
26
|
+
# @param marshal [Class, GrpcKit::GRPC::Stream] marshaling object
|
27
|
+
# @param unmarshal [Class, GrpcKit::GRPC::Stream] unmarshaling object
|
28
|
+
# @return [void]
|
18
29
|
def rpc(name, marshal, unmarshal)
|
19
30
|
if rpc_descs.key?(name)
|
20
31
|
raise "rpc (#{name}) is already defined"
|
@@ -38,15 +49,18 @@ module GrpcKit
|
|
38
49
|
)
|
39
50
|
rpc_descs[rpc_desc.path] = rpc_desc
|
40
51
|
|
41
|
-
|
52
|
+
# Should use `*` since each rpc's sigunature is different.
|
53
|
+
define_method(rpc_desc.ruby_style_name) do |*|
|
42
54
|
raise GrpcKit::Errors::Unimplemented, "Method not found: #{name}"
|
43
55
|
end
|
44
56
|
end
|
45
57
|
|
58
|
+
# @return [GrpcKit::GRPC::Stream]
|
46
59
|
def stream(cls)
|
47
60
|
GrpcKit::GRPC::Stream.new(cls)
|
48
61
|
end
|
49
62
|
|
63
|
+
# @return [GrpcKit::Client]
|
50
64
|
def rpc_stub_class
|
51
65
|
rpc_descs_ = {}
|
52
66
|
rpc_descs.each_value do |rpc_desc|
|
@@ -90,6 +104,7 @@ module GrpcKit
|
|
90
104
|
end
|
91
105
|
end
|
92
106
|
|
107
|
+
# @return [Hash<String,GrpcKit::RpcDesc>]
|
93
108
|
def rpc_descs
|
94
109
|
@rpc_descs ||= {}
|
95
110
|
end
|
@@ -7,19 +7,6 @@ module GrpcKit
|
|
7
7
|
module GenericService
|
8
8
|
def self.included(obj)
|
9
9
|
obj.extend(GrpcKit::GRPC::Dsl)
|
10
|
-
|
11
|
-
# return unless obj.service_name.nil?
|
12
|
-
# if obj.name.nil?
|
13
|
-
# obj.service_name = 'GenericService'
|
14
|
-
# else
|
15
|
-
# modules = obj.name.split('::')
|
16
|
-
# obj.service_name =
|
17
|
-
# if modules.length > 2
|
18
|
-
# modules[modules.length - 2]
|
19
|
-
# else
|
20
|
-
# modules.first
|
21
|
-
# end
|
22
|
-
# end
|
23
10
|
end
|
24
11
|
end
|
25
12
|
end
|
@@ -13,18 +13,34 @@ module GrpcKit
|
|
13
13
|
class ClientInterceptor < Interceptor
|
14
14
|
# rubocop:disable Lint/UnusedMethodArgument
|
15
15
|
|
16
|
+
# @param request [Object,nil] An object which cliet will send
|
17
|
+
# @param call [GrpcKit::Calls::Client::RequestResponse,nil]
|
18
|
+
# @param metadata [Hash<String,String>,nil]
|
19
|
+
# @param method [GrpcKit::Calls::Call::Name,nil]
|
16
20
|
def request_response(request: nil, call: nil, method: nil, metadata: nil)
|
17
21
|
yield
|
18
22
|
end
|
19
23
|
|
24
|
+
# @param requests [Object,nil] comptibility with grpc gem, no use
|
25
|
+
# @param call [GrpcKit::Calls::Client::ClientStreamer,nil]
|
26
|
+
# @param metadata [Hash<String,String>,nil]
|
27
|
+
# @param method [GrpcKit::Calls::Call::Name,nil]
|
20
28
|
def client_streamer(requests: nil, call: nil, method: nil, metadata: nil)
|
21
29
|
yield
|
22
30
|
end
|
23
31
|
|
32
|
+
# @param request [Object,nil] An object which cliet will send
|
33
|
+
# @param call [GrpcKit::Calls::Client::ServerStreamer,nil]
|
34
|
+
# @param metadata [Hash<String,String>,nil]
|
35
|
+
# @param method [GrpcKit::Calls::Call::Name,nil]
|
24
36
|
def server_streamer(request: nil, call: nil, method: nil, metadata: nil)
|
25
37
|
yield
|
26
38
|
end
|
27
39
|
|
40
|
+
# @param requests [Object,nil] comptibility with grpc gem, no use
|
41
|
+
# @param call [GrpcKit::Calls::Client::BidiStreamer,nil]
|
42
|
+
# @param metadata [Hash<String,String>,nil]
|
43
|
+
# @param method [GrpcKit::Calls::Call::Name,nil]
|
28
44
|
def bidi_streamer(requests: nil, call: nil, method: nil, metadata: nil)
|
29
45
|
yield
|
30
46
|
end
|
@@ -35,18 +51,29 @@ module GrpcKit
|
|
35
51
|
class ServerInterceptor < Interceptor
|
36
52
|
# rubocop:disable Lint/UnusedMethodArgument
|
37
53
|
|
54
|
+
# @param request [Object] An object which server received
|
55
|
+
# @param call [GrpcKit::Calls::Server::RequestResponse,nil]
|
56
|
+
# @param method [GrpcKit::Calls::Call::Name,nil]
|
38
57
|
def request_response(request: nil, call: nil, method: nil)
|
39
58
|
yield
|
40
59
|
end
|
41
60
|
|
61
|
+
# @param call [GrpcKit::Calls::Server::ClientStreamer,nil]
|
62
|
+
# @param method [GrpcKit::Calls::Call::Name,nil]
|
42
63
|
def client_streamer(call: nil, method: nil)
|
43
64
|
yield
|
44
65
|
end
|
45
66
|
|
67
|
+
# @param request [Object] An object which server received
|
68
|
+
# @param call [GrpcKit::Calls::Server::ServerStreamer,nil]
|
69
|
+
# @param method [GrpcKit::Calls::Call::Name,nil]
|
46
70
|
def server_streamer(request: nil, call: nil, method: nil)
|
47
71
|
yield
|
48
72
|
end
|
49
73
|
|
74
|
+
# @param requests [Object,nil] comptibility with grpc gem, no use
|
75
|
+
# @param call [GrpcKit::Calls::Server::BidiStreamer,nil]
|
76
|
+
# @param method [GrpcKit::Calls::Call::Name,nil]
|
50
77
|
def bidi_streamer(requests: nil, call: nil, method: nil)
|
51
78
|
yield
|
52
79
|
end
|
data/lib/grpc_kit/grpc/logger.rb
CHANGED
data/lib/grpc_kit/grpc_time.rb
CHANGED
@@ -4,7 +4,7 @@ module GrpcKit
|
|
4
4
|
class GrpcTime
|
5
5
|
MAX = 10**9 - 1
|
6
6
|
|
7
|
-
# @
|
7
|
+
# @param value [String,Integer]
|
8
8
|
def initialize(value)
|
9
9
|
@unit = nil
|
10
10
|
@value = nil
|
@@ -38,10 +38,12 @@ module GrpcKit
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
+
# @return [String]
|
41
42
|
def to_s
|
42
43
|
"#{@value}#{@unit}"
|
43
44
|
end
|
44
45
|
|
46
|
+
# @return [Time]
|
45
47
|
def to_absolute_time
|
46
48
|
case @unit
|
47
49
|
when 'S'
|
@@ -4,10 +4,12 @@ module GrpcKit
|
|
4
4
|
module Interceptors
|
5
5
|
module Client
|
6
6
|
class Streaming
|
7
|
+
# @param interceptors [Array<GrpcKit::GRPC::ClientInterceptor>]
|
7
8
|
def initialize(interceptors)
|
8
9
|
@interceptors = interceptors
|
9
10
|
end
|
10
11
|
|
12
|
+
# @param metadata [Hash<String,String>]
|
11
13
|
def intercept(call, metadata, &block)
|
12
14
|
if @interceptors && !@interceptors.empty?
|
13
15
|
do_intercept(@interceptors.dup, call, metadata, &block)
|
@@ -35,6 +37,7 @@ module GrpcKit
|
|
35
37
|
|
36
38
|
module Server
|
37
39
|
class Streaming
|
40
|
+
# @param interceptors [Array<GrpcKit::GRPC::ServerInterceptor>]
|
38
41
|
def initialize(interceptors)
|
39
42
|
@interceptors = interceptors
|
40
43
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'grpc_kit/interceptors'
|
4
|
+
|
5
|
+
module GrpcKit
|
6
|
+
module Interceptors::Client
|
7
|
+
class BidiStreamer < Streaming
|
8
|
+
private
|
9
|
+
|
10
|
+
# @param interceptor [GrpcKit::GRPC::ClientInterceptor]
|
11
|
+
# @param call [GrpcKit::Calls::Client::BidiStreamer]
|
12
|
+
# @param metadata [Hash<String,String>]
|
13
|
+
def invoke(interceptor, call, metadata)
|
14
|
+
interceptor.bidi_streamer(requests: nil, call: call, method: call.method, metadata: metadata) do
|
15
|
+
yield(call, metadata)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -7,6 +7,9 @@ module GrpcKit
|
|
7
7
|
class ClientStreamer < Streaming
|
8
8
|
private
|
9
9
|
|
10
|
+
# @param interceptor [GrpcKit::GRPC::ClientInterceptor]
|
11
|
+
# @param call [GrpcKit::Calls::Client::ClientStreamer]
|
12
|
+
# @param metadata [Hash<String,String>]
|
10
13
|
def invoke(interceptor, call, metadata)
|
11
14
|
# We don't need a `:requests` parameter but,
|
12
15
|
# it shuoldn't remove from paramters due to having a compatibility of grpc gem.
|
@@ -5,10 +5,13 @@ require 'grpc_kit/interceptors'
|
|
5
5
|
module GrpcKit
|
6
6
|
module Interceptors::Client
|
7
7
|
class RequestResponse
|
8
|
+
# @param interceptors [Array<GrpcKit::GRPC::ClientInterceptor>]
|
8
9
|
def initialize(interceptors)
|
9
10
|
@interceptors = interceptors
|
10
11
|
end
|
11
12
|
|
13
|
+
# @param call [GrpcKit::Calls::Client::RequestResponse]
|
14
|
+
# @param metadata [Hash<String,String>]
|
12
15
|
def intercept(request, call, metadata, &block)
|
13
16
|
if @interceptors && !@interceptors.empty?
|
14
17
|
do_intercept(@interceptors.dup, request, call, metadata, &block)
|
@@ -7,6 +7,9 @@ module GrpcKit
|
|
7
7
|
class ServerStreamer < Streaming
|
8
8
|
private
|
9
9
|
|
10
|
+
# @param interceptor [GrpcKit::GRPC::ClientInterceptor]
|
11
|
+
# @param call [GrpcKit::Calls::Client::ServerStreamer]
|
12
|
+
# @param metadata [Hash<String,String>]
|
10
13
|
def invoke(interceptor, call, metadata)
|
11
14
|
# We don't need a `:request` parameter but,
|
12
15
|
# it shuoldn't remove from paramters due to having a compatibility of grpc gem.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'grpc_kit/interceptors'
|
4
|
+
|
5
|
+
module GrpcKit
|
6
|
+
module Interceptors::Server
|
7
|
+
class BidiStreamer < Streaming
|
8
|
+
# @param interceptor [GrpcKit::GRPC::ServerInterceptor]
|
9
|
+
# @param call [GrpcKit::Calls::Client::BidiStreamer]
|
10
|
+
def invoke(interceptor, call)
|
11
|
+
interceptor.bidi_streamer(call: call, method: call.method) do
|
12
|
+
yield(call)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -5,6 +5,8 @@ require 'grpc_kit/interceptors'
|
|
5
5
|
module GrpcKit
|
6
6
|
module Interceptors::Server
|
7
7
|
class ClientStreamer < Streaming
|
8
|
+
# @param interceptor [GrpcKit::GRPC::ServerInterceptor]
|
9
|
+
# @param call [GrpcKit::Calls::Client::ClientStreamer]
|
8
10
|
def invoke(interceptor, call)
|
9
11
|
interceptor.client_streamer(call: call, method: call.method) do
|
10
12
|
yield(call)
|
@@ -5,10 +5,12 @@ require 'grpc_kit/interceptors'
|
|
5
5
|
module GrpcKit
|
6
6
|
module Interceptors::Server
|
7
7
|
class RequestResponse
|
8
|
+
# @param interceptors [Array<GrpcKit::GRPC::ServerInterceptor>]
|
8
9
|
def initialize(interceptors)
|
9
10
|
@interceptors = interceptors
|
10
11
|
end
|
11
12
|
|
13
|
+
# @param call [GrpcKit::Calls::Client::RequestResponse]
|
12
14
|
def intercept(request, call, &block)
|
13
15
|
if @interceptors && !@interceptors.empty?
|
14
16
|
do_intercept(@interceptors.dup, request, call, &block)
|
@@ -5,6 +5,8 @@ require 'grpc_kit/interceptors'
|
|
5
5
|
module GrpcKit
|
6
6
|
module Interceptors::Server
|
7
7
|
class ServerStreamer < Streaming
|
8
|
+
# @param interceptor [GrpcKit::GRPC::ServerInterceptor]
|
9
|
+
# @param call [GrpcKit::Calls::Client::ServerStreamer]
|
8
10
|
def invoke(interceptor, call)
|
9
11
|
# We don't need a `:request` parameter but,
|
10
12
|
# it shuoldn't remove from paramters due to having a compatibility of grpc gem.
|