grpc_kit 0.1.3 → 0.1.4
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/.travis.yml +0 -1
- data/TODO.md +1 -1
- data/examples/helloworld_client.rb +5 -1
- data/examples/routeguide_client.rb +5 -2
- data/lib/grpc_kit/calls/client_client_streamer.rb +29 -0
- data/lib/grpc_kit/calls/client_request_response.rb +25 -0
- data/lib/grpc_kit/calls/client_server_streamer.rb +29 -0
- data/lib/grpc_kit/calls/server_client_streamer.rb +32 -0
- data/lib/grpc_kit/calls/server_request_response.rb +32 -0
- data/lib/grpc_kit/calls/server_server_streamer.rb +32 -0
- data/lib/grpc_kit/calls.rb +39 -0
- data/lib/grpc_kit/client.rb +17 -17
- data/lib/grpc_kit/grpc_time.rb +100 -0
- data/lib/grpc_kit/interceptors/client_client_streamer.rb +19 -0
- data/lib/grpc_kit/interceptors/client_request_response.rb +39 -0
- data/lib/grpc_kit/interceptors/client_server_streamer.rb +19 -0
- data/lib/grpc_kit/interceptors/server_client_streamer.rb +15 -0
- data/lib/grpc_kit/interceptors/server_request_response.rb +36 -0
- data/lib/grpc_kit/interceptors/server_server_streamer.rb +17 -0
- data/lib/grpc_kit/interceptors.rb +64 -5
- data/lib/grpc_kit/rpc_desc.rb +18 -2
- data/lib/grpc_kit/rpcs/client_bidi_streamer.rb +11 -0
- data/lib/grpc_kit/rpcs/client_client_streamer.rb +23 -0
- data/lib/grpc_kit/rpcs/client_request_response.rb +31 -0
- data/lib/grpc_kit/rpcs/client_server_streamer.rb +19 -0
- data/lib/grpc_kit/rpcs/server_bidi_streamer.rb +10 -0
- data/lib/grpc_kit/rpcs/server_client_streamer.rb +24 -0
- data/lib/grpc_kit/rpcs/server_request_response.rb +26 -0
- data/lib/grpc_kit/rpcs/server_server_streamer.rb +26 -0
- data/lib/grpc_kit/rpcs.rb +21 -5
- data/lib/grpc_kit/server.rb +16 -7
- data/lib/grpc_kit/session/headers.rb +2 -2
- data/lib/grpc_kit/session/stream.rb +5 -0
- data/lib/grpc_kit/{session/client.rb → sessions/client_session.rb} +5 -6
- data/lib/grpc_kit/{session/server.rb → sessions/server_session.rb} +21 -8
- data/lib/grpc_kit/streams/client_stream.rb +146 -0
- data/lib/grpc_kit/streams/server_stream.rb +105 -0
- data/lib/grpc_kit/{streams → transport}/packable.rb +2 -2
- data/lib/grpc_kit/{streams → transport}/send_buffer.rb +1 -1
- data/lib/grpc_kit/transports/client_transport.rb +96 -0
- data/lib/grpc_kit/transports/server_transport.rb +68 -0
- data/lib/grpc_kit/version.rb +1 -1
- metadata +32 -21
- data/lib/grpc_kit/interceptors/client_streamer.rb +0 -31
- data/lib/grpc_kit/interceptors/request_response.rb +0 -70
- data/lib/grpc_kit/interceptors/server_streamer.rb +0 -33
- data/lib/grpc_kit/interceptors/streaming.rb +0 -70
- data/lib/grpc_kit/rpcs/base.rb +0 -30
- data/lib/grpc_kit/rpcs/bidi_streamer.rb +0 -18
- data/lib/grpc_kit/rpcs/call.rb +0 -27
- data/lib/grpc_kit/rpcs/client_streamer.rb +0 -38
- data/lib/grpc_kit/rpcs/error.rb +0 -23
- data/lib/grpc_kit/rpcs/request_response.rb +0 -64
- data/lib/grpc_kit/rpcs/server_streamer.rb +0 -42
- data/lib/grpc_kit/session/duration.rb +0 -97
- data/lib/grpc_kit/stream.rb +0 -120
- data/lib/grpc_kit/streams/client.rb +0 -113
- data/lib/grpc_kit/streams/server.rb +0 -54
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module GrpcKit
|
4
|
-
module
|
4
|
+
module Transport
|
5
5
|
module Packable
|
6
6
|
# @params data [String]
|
7
7
|
# @params compress [Boolean]
|
@@ -24,7 +24,7 @@ module GrpcKit
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def unpacker
|
27
|
-
@unpacker ||=
|
27
|
+
@unpacker ||= Unpacker.new
|
28
28
|
end
|
29
29
|
|
30
30
|
class Unpacker
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'grpc_kit/transport/packable'
|
4
|
+
require 'grpc_kit/transport/send_buffer'
|
5
|
+
|
6
|
+
module GrpcKit
|
7
|
+
module Transports
|
8
|
+
class ClientTransport
|
9
|
+
include GrpcKit::Transport::Packable
|
10
|
+
|
11
|
+
# @params session [GrpcKit::Session::Server|GrpcKit::Session::Client]
|
12
|
+
def initialize(session)
|
13
|
+
@session = session
|
14
|
+
@stream = nil # set later
|
15
|
+
@deferred = false
|
16
|
+
end
|
17
|
+
|
18
|
+
def send_request(data, header, last: false)
|
19
|
+
@stream = @session.send_request(GrpcKit::Transport::SendBuffer.new, header)
|
20
|
+
write_data(data, last: last)
|
21
|
+
end
|
22
|
+
|
23
|
+
def close_and_flush
|
24
|
+
resume_if_need
|
25
|
+
|
26
|
+
@stream.end_write
|
27
|
+
@session.start(@stream.stream_id)
|
28
|
+
@stream.end_read
|
29
|
+
@deferred = false
|
30
|
+
end
|
31
|
+
|
32
|
+
def each
|
33
|
+
loop do
|
34
|
+
data = recv
|
35
|
+
return if data.nil?
|
36
|
+
|
37
|
+
yield(data)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def write_data(buf, last: false)
|
42
|
+
resume_if_need
|
43
|
+
|
44
|
+
write(@stream.pending_send_data, pack(buf), last: last)
|
45
|
+
@session.run_once
|
46
|
+
@deferred = true unless last
|
47
|
+
end
|
48
|
+
|
49
|
+
def read_data(last: false)
|
50
|
+
unpack(read(last: last))
|
51
|
+
end
|
52
|
+
|
53
|
+
def recv_headers
|
54
|
+
wait_close
|
55
|
+
@stream.headers
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def resume_if_need
|
61
|
+
if !@stream.end_write? && @deferred
|
62
|
+
@session.resume_data(@stream.stream_id)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def wait_close
|
67
|
+
# XXX: wait until half close (remote) to get grpc-status
|
68
|
+
until @stream.close_remote?
|
69
|
+
@session.run_once
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def write(stream, buf, last: false)
|
74
|
+
stream.write(buf, last: last)
|
75
|
+
end
|
76
|
+
|
77
|
+
def read(last: false)
|
78
|
+
loop do
|
79
|
+
data = @stream.read_recv_data(last: last)
|
80
|
+
return data unless data.empty?
|
81
|
+
|
82
|
+
if @stream.close_remote?
|
83
|
+
# it do not receive data which we need, it may receive invalid grpc-status
|
84
|
+
unless @stream.end_read?
|
85
|
+
return nil
|
86
|
+
end
|
87
|
+
|
88
|
+
return nil
|
89
|
+
end
|
90
|
+
|
91
|
+
@session.run_once
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'grpc_kit/transport/packable'
|
4
|
+
|
5
|
+
module GrpcKit
|
6
|
+
module Transports
|
7
|
+
class ServerTransport
|
8
|
+
include GrpcKit::Transport::Packable
|
9
|
+
|
10
|
+
# @params session [GrpcKit::Sessions::ServerSession]
|
11
|
+
# @params stream [GrpcKit::Session::Stream]
|
12
|
+
def initialize(session, stream)
|
13
|
+
@session = session
|
14
|
+
@stream = stream
|
15
|
+
end
|
16
|
+
|
17
|
+
def each
|
18
|
+
loop do
|
19
|
+
data = recv
|
20
|
+
return if data.nil?
|
21
|
+
|
22
|
+
yield(data)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def send_response(headers)
|
27
|
+
@session.submit_response(@stream.stream_id, headers)
|
28
|
+
end
|
29
|
+
|
30
|
+
def write_data(buf, last: false)
|
31
|
+
@stream.write_send_data(pack(buf), last: last)
|
32
|
+
end
|
33
|
+
|
34
|
+
def read_data(last: false)
|
35
|
+
unpack(read(last: last))
|
36
|
+
end
|
37
|
+
|
38
|
+
def write_trailers_data(trailer)
|
39
|
+
@stream.write_trailers_data(trailer)
|
40
|
+
@stream.end_write
|
41
|
+
end
|
42
|
+
|
43
|
+
def recv_headers
|
44
|
+
@stream.headers
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def read(last: false)
|
50
|
+
loop do
|
51
|
+
data = @stream.read_recv_data(last: last)
|
52
|
+
return data unless data.empty?
|
53
|
+
|
54
|
+
if @stream.close_remote?
|
55
|
+
# it do not receive data which we need, it may receive invalid grpc-status
|
56
|
+
unless @stream.end_read?
|
57
|
+
return nil
|
58
|
+
end
|
59
|
+
|
60
|
+
return nil
|
61
|
+
end
|
62
|
+
|
63
|
+
@session.run_once
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/lib/grpc_kit/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grpc_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ganmacs
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ds9
|
@@ -172,6 +172,13 @@ files:
|
|
172
172
|
- grpc_kit.gemspec
|
173
173
|
- lib/grpc.rb
|
174
174
|
- lib/grpc_kit.rb
|
175
|
+
- lib/grpc_kit/calls.rb
|
176
|
+
- lib/grpc_kit/calls/client_client_streamer.rb
|
177
|
+
- lib/grpc_kit/calls/client_request_response.rb
|
178
|
+
- lib/grpc_kit/calls/client_server_streamer.rb
|
179
|
+
- lib/grpc_kit/calls/server_client_streamer.rb
|
180
|
+
- lib/grpc_kit/calls/server_request_response.rb
|
181
|
+
- lib/grpc_kit/calls/server_server_streamer.rb
|
175
182
|
- lib/grpc_kit/client.rb
|
176
183
|
- lib/grpc_kit/errors.rb
|
177
184
|
- lib/grpc_kit/grpc/dsl.rb
|
@@ -179,37 +186,41 @@ files:
|
|
179
186
|
- lib/grpc_kit/grpc/interceptor.rb
|
180
187
|
- lib/grpc_kit/grpc/logger.rb
|
181
188
|
- lib/grpc_kit/grpc/stream.rb
|
189
|
+
- lib/grpc_kit/grpc_time.rb
|
182
190
|
- lib/grpc_kit/interceptors.rb
|
183
|
-
- lib/grpc_kit/interceptors/
|
184
|
-
- lib/grpc_kit/interceptors/
|
185
|
-
- lib/grpc_kit/interceptors/
|
186
|
-
- lib/grpc_kit/interceptors/
|
191
|
+
- lib/grpc_kit/interceptors/client_client_streamer.rb
|
192
|
+
- lib/grpc_kit/interceptors/client_request_response.rb
|
193
|
+
- lib/grpc_kit/interceptors/client_server_streamer.rb
|
194
|
+
- lib/grpc_kit/interceptors/server_client_streamer.rb
|
195
|
+
- lib/grpc_kit/interceptors/server_request_response.rb
|
196
|
+
- lib/grpc_kit/interceptors/server_server_streamer.rb
|
187
197
|
- lib/grpc_kit/method_config.rb
|
188
198
|
- lib/grpc_kit/protobuffer.rb
|
189
199
|
- lib/grpc_kit/rpc_desc.rb
|
190
200
|
- lib/grpc_kit/rpcs.rb
|
191
|
-
- lib/grpc_kit/rpcs/
|
192
|
-
- lib/grpc_kit/rpcs/
|
193
|
-
- lib/grpc_kit/rpcs/
|
194
|
-
- lib/grpc_kit/rpcs/
|
195
|
-
- lib/grpc_kit/rpcs/
|
196
|
-
- lib/grpc_kit/rpcs/
|
197
|
-
- lib/grpc_kit/rpcs/
|
201
|
+
- lib/grpc_kit/rpcs/client_bidi_streamer.rb
|
202
|
+
- lib/grpc_kit/rpcs/client_client_streamer.rb
|
203
|
+
- lib/grpc_kit/rpcs/client_request_response.rb
|
204
|
+
- lib/grpc_kit/rpcs/client_server_streamer.rb
|
205
|
+
- lib/grpc_kit/rpcs/server_bidi_streamer.rb
|
206
|
+
- lib/grpc_kit/rpcs/server_client_streamer.rb
|
207
|
+
- lib/grpc_kit/rpcs/server_request_response.rb
|
208
|
+
- lib/grpc_kit/rpcs/server_server_streamer.rb
|
198
209
|
- lib/grpc_kit/server.rb
|
199
210
|
- lib/grpc_kit/session/buffer.rb
|
200
|
-
- lib/grpc_kit/session/client.rb
|
201
|
-
- lib/grpc_kit/session/duration.rb
|
202
211
|
- lib/grpc_kit/session/headers.rb
|
203
212
|
- lib/grpc_kit/session/io.rb
|
204
|
-
- lib/grpc_kit/session/server.rb
|
205
213
|
- lib/grpc_kit/session/stream.rb
|
206
214
|
- lib/grpc_kit/session/stream_status.rb
|
215
|
+
- lib/grpc_kit/sessions/client_session.rb
|
216
|
+
- lib/grpc_kit/sessions/server_session.rb
|
207
217
|
- lib/grpc_kit/status_codes.rb
|
208
|
-
- lib/grpc_kit/
|
209
|
-
- lib/grpc_kit/streams/
|
210
|
-
- lib/grpc_kit/
|
211
|
-
- lib/grpc_kit/
|
212
|
-
- lib/grpc_kit/
|
218
|
+
- lib/grpc_kit/streams/client_stream.rb
|
219
|
+
- lib/grpc_kit/streams/server_stream.rb
|
220
|
+
- lib/grpc_kit/transport/packable.rb
|
221
|
+
- lib/grpc_kit/transport/send_buffer.rb
|
222
|
+
- lib/grpc_kit/transports/client_transport.rb
|
223
|
+
- lib/grpc_kit/transports/server_transport.rb
|
213
224
|
- lib/grpc_kit/version.rb
|
214
225
|
homepage: https://github.com/ganmacs/grpc_kit
|
215
226
|
licenses:
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'grpc_kit/interceptors/streaming'
|
4
|
-
|
5
|
-
module GrpcKit
|
6
|
-
module Interceptors
|
7
|
-
module Client
|
8
|
-
class ClientStreamer < Streaming
|
9
|
-
private
|
10
|
-
|
11
|
-
def invoke(interceptor, call, metadata)
|
12
|
-
# We don't need a `:requests` parameter but,
|
13
|
-
# it shuoldn't remove from paramters due to having a compatibility of grpc gem.
|
14
|
-
interceptor.client_streamer(requests: nil, call: call, method: call.method, metadata: metadata) do
|
15
|
-
yield(call, metadata)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
module Server
|
22
|
-
class ClientStreamer < Streaming
|
23
|
-
def invoke(interceptor, call)
|
24
|
-
interceptor.client_streamer(call: call, method: call.method) do
|
25
|
-
yield(call)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module GrpcKit
|
4
|
-
module Interceptors
|
5
|
-
module Client
|
6
|
-
class RequestResponse
|
7
|
-
attr_writer :interceptors
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
# Cant' get interceptor at definition time...
|
11
|
-
@interceptors = nil
|
12
|
-
end
|
13
|
-
|
14
|
-
def intercept(request, call, metadata, &block)
|
15
|
-
if @interceptors && !@interceptors.empty?
|
16
|
-
do_intercept(@interceptors.dup, request, call, metadata, &block)
|
17
|
-
else
|
18
|
-
yield(request, call, metadata)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def do_intercept(interceptors, request, call, metadata)
|
25
|
-
if interceptors.empty?
|
26
|
-
return yield(request, call, metadata)
|
27
|
-
end
|
28
|
-
|
29
|
-
interceptor = interceptors.pop
|
30
|
-
interceptor.request_response(request: request, call: call, method: call.method, metadata: metadata) do
|
31
|
-
do_intercept(interceptors, request, call, metadata) do |r, c, m|
|
32
|
-
yield(r, c, m)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
module Server
|
40
|
-
class RequestResponse
|
41
|
-
def initialize(interceptors)
|
42
|
-
@interceptors = interceptors
|
43
|
-
end
|
44
|
-
|
45
|
-
def intercept(request, call, &block)
|
46
|
-
if @interceptors && !@interceptors.empty?
|
47
|
-
do_intercept(@interceptors.dup, request, call, &block)
|
48
|
-
else
|
49
|
-
yield(request, call)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
def do_intercept(interceptors, request, call)
|
56
|
-
if interceptors.empty?
|
57
|
-
return yield(request, call)
|
58
|
-
end
|
59
|
-
|
60
|
-
interceptor = interceptors.pop
|
61
|
-
interceptor.request_response(request: request, call: call, method: call.method) do
|
62
|
-
do_intercept(interceptors, request, call) do |req, c|
|
63
|
-
yield(req, c)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'grpc_kit/interceptors/streaming'
|
4
|
-
|
5
|
-
module GrpcKit
|
6
|
-
module Interceptors
|
7
|
-
module Client
|
8
|
-
class ServerStreamer < Streaming
|
9
|
-
private
|
10
|
-
|
11
|
-
def invoke(interceptor, call, metadata)
|
12
|
-
# We don't need a `:request` parameter but,
|
13
|
-
# it shuoldn't remove from paramters due to having a compatibility of grpc gem.
|
14
|
-
interceptor.server_streamer(request: nil, call: call, method: call.method, metadata: metadata) do
|
15
|
-
yield(call, metadata)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
module Server
|
22
|
-
class ServerStreamer < Streaming
|
23
|
-
def invoke(interceptor, call)
|
24
|
-
# We don't need a `:request` parameter but,
|
25
|
-
# it shuoldn't remove from paramters due to having a compatibility of grpc gem.
|
26
|
-
interceptor.server_streamer(request: nil, call: call, method: call.method) do
|
27
|
-
yield(call)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module GrpcKit
|
4
|
-
module Interceptors
|
5
|
-
module Client
|
6
|
-
class Streaming
|
7
|
-
attr_writer :interceptors
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
# Cant' get interceptor at definition time...
|
11
|
-
@interceptors = nil
|
12
|
-
end
|
13
|
-
|
14
|
-
def intercept(call, metadata, &block)
|
15
|
-
if @interceptors && !@interceptors.empty?
|
16
|
-
do_intercept(@interceptors.dup, call, metadata, &block)
|
17
|
-
else
|
18
|
-
yield(call, metadata)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def do_intercept(interceptors, call, metadata)
|
25
|
-
if interceptors.empty?
|
26
|
-
return yield(call, metadata)
|
27
|
-
end
|
28
|
-
|
29
|
-
interceptor = interceptors.pop
|
30
|
-
invoke(interceptor, call, metadata) do |inter_call, meta|
|
31
|
-
do_intercept(interceptors, inter_call, meta) do |c, m|
|
32
|
-
yield(c, m)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
module Server
|
40
|
-
class Streaming
|
41
|
-
def initialize(interceptors)
|
42
|
-
@interceptors = interceptors
|
43
|
-
end
|
44
|
-
|
45
|
-
def intercept(call, &block)
|
46
|
-
if @interceptors && !@interceptors.empty?
|
47
|
-
do_intercept(@interceptors.dup, call, &block)
|
48
|
-
else
|
49
|
-
yield(call)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
def do_intercept(interceptors, call)
|
56
|
-
if interceptors.empty?
|
57
|
-
return yield(call)
|
58
|
-
end
|
59
|
-
|
60
|
-
interceptor = interceptors.pop
|
61
|
-
invoke(interceptor, call) do |inter_call|
|
62
|
-
do_intercept(interceptors, inter_call) do |c|
|
63
|
-
yield(c)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
data/lib/grpc_kit/rpcs/base.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'timeout'
|
4
|
-
|
5
|
-
require 'grpc_kit/errors'
|
6
|
-
require 'grpc_kit/rpcs/call'
|
7
|
-
require 'grpc_kit/streams/server'
|
8
|
-
require 'grpc_kit/streams/client'
|
9
|
-
|
10
|
-
module GrpcKit
|
11
|
-
module Rpcs
|
12
|
-
module Client
|
13
|
-
class Base
|
14
|
-
attr_reader :config
|
15
|
-
def initialize(config)
|
16
|
-
@config = config
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
module Server
|
22
|
-
class Base
|
23
|
-
def initialize(handler, config)
|
24
|
-
@handler = handler
|
25
|
-
@config = config
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'grpc_kit/rpcs/base'
|
4
|
-
|
5
|
-
module GrpcKit
|
6
|
-
module Rpcs
|
7
|
-
module Client
|
8
|
-
class BidiStreamer < Base
|
9
|
-
def invoke(session, data, opts = {}); end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
module Server
|
14
|
-
class BidiStreamer < Base
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/grpc_kit/rpcs/call.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'forwardable'
|
4
|
-
|
5
|
-
module GrpcKit
|
6
|
-
module Rpcs
|
7
|
-
# compatible for grpc gem
|
8
|
-
class Call
|
9
|
-
extend Forwardable
|
10
|
-
|
11
|
-
delegate %i[recv send_msg close_and_recv each].freeze => :@stream
|
12
|
-
|
13
|
-
Name = Struct.new(:name, :receiver)
|
14
|
-
Reciver = Struct.new(:class)
|
15
|
-
Klass = Struct.new(:service_name)
|
16
|
-
|
17
|
-
attr_reader :metadata, :method
|
18
|
-
|
19
|
-
def initialize(metadata, method_name, service_name, stream)
|
20
|
-
@metadata = metadata
|
21
|
-
klass = Klass.new(service_name)
|
22
|
-
@method = Name.new(method_name, Reciver.new(klass))
|
23
|
-
@stream = stream
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'grpc_kit/rpcs/base'
|
4
|
-
|
5
|
-
module GrpcKit
|
6
|
-
module Rpcs
|
7
|
-
module Client
|
8
|
-
class ClientStreamer < Base
|
9
|
-
def invoke(session, _request, authority:, metadata: {}, timeout: nil, **opts)
|
10
|
-
cs = GrpcKit::Streams::Client.new(config: @config, session: session, authority: authority)
|
11
|
-
call = GrpcKit::Rpcs::Call.new(metadata, @config.method_name, @config.service_name, cs)
|
12
|
-
@config.interceptor.intercept(call, metadata) do |s|
|
13
|
-
s
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
module Server
|
20
|
-
class ClientStreamer < Base
|
21
|
-
def invoke(stream, session)
|
22
|
-
ss = GrpcKit::Streams::Server.new(stream: stream, session: session, config: @config)
|
23
|
-
call = GrpcKit::Rpcs::Call.new(stream.headers.metadata, @config.method_name, @config.service_name, ss)
|
24
|
-
|
25
|
-
if @config.interceptor
|
26
|
-
@config.interceptor.intercept(call) do |c|
|
27
|
-
resp = @handler.send(@config.ruby_style_method_name, c)
|
28
|
-
c.send_msg(resp, last: true)
|
29
|
-
end
|
30
|
-
else
|
31
|
-
resp = @handler.send(@config.ruby_style_method_name, call)
|
32
|
-
call.send_msg(resp, last: true)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
data/lib/grpc_kit/rpcs/error.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'grpc_kit/status_codes'
|
4
|
-
|
5
|
-
module GrpcKit
|
6
|
-
module Rpcs
|
7
|
-
module Client
|
8
|
-
class Error
|
9
|
-
# def invoke(session, request, authority:, error)
|
10
|
-
# end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
module Server
|
15
|
-
class Error
|
16
|
-
def send_bad_status(stream, session, bad_status)
|
17
|
-
ss = GrpcKit::Streams::Server.new(stream: stream, protobuf: nil, session: session)
|
18
|
-
ss.send_status(status: bad_status.code, msg: bad_status.grpc_message)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|