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