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
@@ -3,14 +3,16 @@
|
|
3
3
|
module GrpcKit
|
4
4
|
module Transport
|
5
5
|
module Packable
|
6
|
-
# @
|
7
|
-
# @
|
6
|
+
# @param data [String]
|
7
|
+
# @param compress [Boolean]
|
8
|
+
# @return [String] packed value
|
8
9
|
def pack(data, compress = false)
|
9
10
|
c = compress ? 1 : 0
|
10
11
|
[c, data.bytesize, data].pack('CNa*')
|
11
12
|
end
|
12
13
|
|
13
|
-
# @
|
14
|
+
# @param data [String]
|
15
|
+
# @return [String]
|
14
16
|
def unpack(data)
|
15
17
|
unpacker.feed(data) if data
|
16
18
|
|
@@ -29,14 +31,18 @@ module GrpcKit
|
|
29
31
|
@data = +''.b
|
30
32
|
end
|
31
33
|
|
34
|
+
# @return [Boolean]
|
32
35
|
def data_exist?
|
33
36
|
!@data.empty?
|
34
37
|
end
|
35
38
|
|
39
|
+
# @param data [String]
|
40
|
+
# @return [void]
|
36
41
|
def feed(data)
|
37
42
|
@data << data
|
38
43
|
end
|
39
44
|
|
45
|
+
# @return [nil, Array<Boolean, Integer, String>]
|
40
46
|
def read
|
41
47
|
return nil if @data.empty?
|
42
48
|
|
@@ -7,40 +7,53 @@ module GrpcKit
|
|
7
7
|
class ServerTransport
|
8
8
|
include GrpcKit::Transport::Packable
|
9
9
|
|
10
|
-
# @
|
11
|
-
# @
|
10
|
+
# @param session [GrpcKit::Session::ServerSession]
|
11
|
+
# @param stream [GrpcKit::Session::Stream]
|
12
12
|
def initialize(session, stream)
|
13
13
|
@session = session
|
14
14
|
@stream = stream
|
15
15
|
end
|
16
16
|
|
17
|
+
# @param headers [Hash<String, String>]
|
18
|
+
# @return [void]
|
17
19
|
def start_response(headers)
|
18
20
|
@session.submit_response(@stream.stream_id, headers)
|
19
21
|
send_data
|
20
22
|
end
|
21
23
|
|
24
|
+
# @param headers [Hash<String, String>]
|
25
|
+
# @return [void]
|
22
26
|
def submit_headers(headers)
|
23
27
|
@session.submit_headers(@stream.stream_id, headers)
|
24
28
|
end
|
25
29
|
|
30
|
+
# @param buf [String]
|
31
|
+
# @param last [Boolean]
|
32
|
+
# @return [void]
|
26
33
|
def write_data(buf, last: false)
|
27
34
|
@stream.write_send_data(pack(buf), last: last)
|
28
35
|
send_data(last: last)
|
29
36
|
end
|
30
37
|
|
38
|
+
# @param last [Boolean]
|
39
|
+
# @return [nil,String]
|
31
40
|
def read_data(last: false)
|
32
41
|
unpack(recv_data(last: last))
|
33
42
|
end
|
34
43
|
|
44
|
+
# @param trailer [Hash<String, String>]
|
45
|
+
# @return [void]
|
35
46
|
def write_trailers(trailer)
|
36
47
|
@stream.write_trailers_data(trailer)
|
37
48
|
send_data(last: true)
|
38
49
|
end
|
39
50
|
|
51
|
+
# @return [void]
|
40
52
|
def end_write
|
41
53
|
@stream.end_write
|
42
54
|
end
|
43
55
|
|
56
|
+
# @return [Hash<String,String>]
|
44
57
|
def recv_headers
|
45
58
|
@stream.headers
|
46
59
|
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.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ganmacs
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ds9
|
@@ -152,7 +152,6 @@ files:
|
|
152
152
|
- LICENSE.txt
|
153
153
|
- README.md
|
154
154
|
- Rakefile
|
155
|
-
- TODO.md
|
156
155
|
- bin/console
|
157
156
|
- bin/nghttp2
|
158
157
|
- bin/setup
|
@@ -173,9 +172,11 @@ files:
|
|
173
172
|
- lib/grpc.rb
|
174
173
|
- lib/grpc_kit.rb
|
175
174
|
- lib/grpc_kit/calls.rb
|
175
|
+
- lib/grpc_kit/calls/client_bidi_streamer.rb
|
176
176
|
- lib/grpc_kit/calls/client_client_streamer.rb
|
177
177
|
- lib/grpc_kit/calls/client_request_response.rb
|
178
178
|
- lib/grpc_kit/calls/client_server_streamer.rb
|
179
|
+
- lib/grpc_kit/calls/server_bidi_streamer.rb
|
179
180
|
- lib/grpc_kit/calls/server_client_streamer.rb
|
180
181
|
- lib/grpc_kit/calls/server_request_response.rb
|
181
182
|
- lib/grpc_kit/calls/server_server_streamer.rb
|
@@ -188,9 +189,11 @@ files:
|
|
188
189
|
- lib/grpc_kit/grpc/stream.rb
|
189
190
|
- lib/grpc_kit/grpc_time.rb
|
190
191
|
- lib/grpc_kit/interceptors.rb
|
192
|
+
- lib/grpc_kit/interceptors/client_bidi_streamer.rb
|
191
193
|
- lib/grpc_kit/interceptors/client_client_streamer.rb
|
192
194
|
- lib/grpc_kit/interceptors/client_request_response.rb
|
193
195
|
- lib/grpc_kit/interceptors/client_server_streamer.rb
|
196
|
+
- lib/grpc_kit/interceptors/server_bidi_streamer.rb
|
194
197
|
- lib/grpc_kit/interceptors/server_client_streamer.rb
|
195
198
|
- lib/grpc_kit/interceptors/server_request_response.rb
|
196
199
|
- lib/grpc_kit/interceptors/server_server_streamer.rb
|
data/TODO.md
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
## Features
|
2
|
-
|
3
|
-
### request response
|
4
|
-
|
5
|
-
- [x] recv/send msg
|
6
|
-
- [x] metadata (client)
|
7
|
-
- [x] metadata (server)
|
8
|
-
- [x] interceptor (client)
|
9
|
-
- [x] interceptor (server)
|
10
|
-
- [x] deadline (client)
|
11
|
-
- [x] deadline (server)
|
12
|
-
|
13
|
-
### server streamer
|
14
|
-
|
15
|
-
- [x] recv/send msg
|
16
|
-
- [x] metadata (client)
|
17
|
-
- [x] metadata (server)
|
18
|
-
- [x] interceptor (client)
|
19
|
-
- [x] interceptor (server)
|
20
|
-
- [ ] deadline (client)
|
21
|
-
- [ ] deadline (server)
|
22
|
-
|
23
|
-
### client streamer
|
24
|
-
|
25
|
-
- [x] recv/send msg
|
26
|
-
- [x] metadata (client)
|
27
|
-
- [x] metadata (server)
|
28
|
-
- [x] interceptor (client)
|
29
|
-
- [x] interceptor (server)
|
30
|
-
- [ ] deadline (client)
|
31
|
-
- [ ] deadline (server)
|
32
|
-
|
33
|
-
### bidi_streamer
|
34
|
-
|
35
|
-
- [ ] recv/send msg
|
36
|
-
- [ ] metadata (client)
|
37
|
-
- [ ] metadata (server)
|
38
|
-
- [ ] interceptor (client)
|
39
|
-
- [ ] interceptor (server)
|
40
|
-
- [ ] deadline (client)
|
41
|
-
- [ ] deadline (server)
|
42
|
-
|
43
|
-
## Error handling
|
44
|
-
|
45
|
-
- [x] resouce exhausted (body size is to large)
|
46
|
-
- [x] internal
|
47
|
-
- [ ] resouce exhausted (worker is exhausted)
|
48
|
-
- [x] duration parse in header
|
49
|
-
- [x] send `grpc-status` along with header frame if possible
|
50
|
-
- need to support https://nghttp2.org/documentation/nghttp2_submit_response.html, data_prd is not NULL
|
51
|
-
- [x] unimplemented error
|
52
|
-
- [ ] goaway
|
53
|
-
- [ ] cancel
|
54
|
-
- [ ] support h2's header continuation
|
55
|
-
|
56
|
-
## Others
|
57
|
-
|
58
|
-
- [x] multi thread (griffin)
|
59
|
-
- [x] mutli process (griffin)
|
60
|
-
- [ ] connection persistent (client, griffin)
|
61
|
-
- [ ] send metadata in trailrs frame
|
62
|
-
- [ ] add server request spec
|
63
|
-
- [ ] add client request spec
|
64
|
-
- [ ] handle RST FRAME
|
65
|
-
|
66
|
-
## bugs
|
67
|
-
|
68
|
-
- [x] status_check is invoked twice
|
69
|
-
- [x] undefined local variable or method `finish' for #<GrpcKit::Sessions::ClientSession:0x00007f9ae3abf970> (NameError)
|
70
|
-
- [x] clients don't use same object even if thier connections alive
|
71
|
-
|