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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/examples/helloworld_client.rb +1 -1
  3. data/examples/routeguide_client.rb +33 -0
  4. data/examples/routeguide_server.rb +17 -0
  5. data/lib/grpc.rb +2 -1
  6. data/lib/grpc_kit.rb +4 -1
  7. data/lib/grpc_kit/calls.rb +17 -3
  8. data/lib/grpc_kit/calls/client_bidi_streamer.rb +63 -0
  9. data/lib/grpc_kit/calls/client_client_streamer.rb +8 -4
  10. data/lib/grpc_kit/calls/client_request_response.rb +7 -4
  11. data/lib/grpc_kit/calls/client_server_streamer.rb +7 -4
  12. data/lib/grpc_kit/calls/server_bidi_streamer.rb +43 -0
  13. data/lib/grpc_kit/calls/server_client_streamer.rb +5 -1
  14. data/lib/grpc_kit/calls/server_request_response.rb +5 -1
  15. data/lib/grpc_kit/calls/server_server_streamer.rb +5 -1
  16. data/lib/grpc_kit/client.rb +22 -4
  17. data/lib/grpc_kit/errors.rb +25 -11
  18. data/lib/grpc_kit/grpc/dsl.rb +17 -2
  19. data/lib/grpc_kit/grpc/generic_service.rb +0 -13
  20. data/lib/grpc_kit/grpc/interceptor.rb +27 -0
  21. data/lib/grpc_kit/grpc/logger.rb +4 -1
  22. data/lib/grpc_kit/grpc_time.rb +3 -1
  23. data/lib/grpc_kit/interceptors.rb +3 -0
  24. data/lib/grpc_kit/interceptors/client_bidi_streamer.rb +20 -0
  25. data/lib/grpc_kit/interceptors/client_client_streamer.rb +3 -0
  26. data/lib/grpc_kit/interceptors/client_request_response.rb +3 -0
  27. data/lib/grpc_kit/interceptors/client_server_streamer.rb +3 -0
  28. data/lib/grpc_kit/interceptors/server_bidi_streamer.rb +17 -0
  29. data/lib/grpc_kit/interceptors/server_client_streamer.rb +2 -0
  30. data/lib/grpc_kit/interceptors/server_request_response.rb +2 -0
  31. data/lib/grpc_kit/interceptors/server_server_streamer.rb +2 -0
  32. data/lib/grpc_kit/protobuffer.rb +8 -0
  33. data/lib/grpc_kit/rpc_desc.rb +21 -4
  34. data/lib/grpc_kit/rpcs.rb +4 -0
  35. data/lib/grpc_kit/rpcs/client_bidi_streamer.rb +20 -1
  36. data/lib/grpc_kit/rpcs/client_client_streamer.rb +5 -0
  37. data/lib/grpc_kit/rpcs/client_request_response.rb +11 -17
  38. data/lib/grpc_kit/rpcs/client_server_streamer.rb +5 -0
  39. data/lib/grpc_kit/rpcs/server_bidi_streamer.rb +17 -0
  40. data/lib/grpc_kit/rpcs/server_client_streamer.rb +3 -0
  41. data/lib/grpc_kit/rpcs/server_request_response.rb +3 -0
  42. data/lib/grpc_kit/rpcs/server_server_streamer.rb +3 -0
  43. data/lib/grpc_kit/server.rb +12 -4
  44. data/lib/grpc_kit/session/client_session.rb +7 -2
  45. data/lib/grpc_kit/session/drain_controller.rb +2 -0
  46. data/lib/grpc_kit/session/headers.rb +11 -0
  47. data/lib/grpc_kit/session/io.rb +9 -0
  48. data/lib/grpc_kit/session/recv_buffer.rb +7 -0
  49. data/lib/grpc_kit/session/send_buffer.rb +8 -0
  50. data/lib/grpc_kit/session/server_session.rb +8 -5
  51. data/lib/grpc_kit/session/stream.rb +17 -3
  52. data/lib/grpc_kit/session/stream_status.rb +7 -1
  53. data/lib/grpc_kit/stream/client_stream.rb +55 -9
  54. data/lib/grpc_kit/stream/server_stream.rb +19 -1
  55. data/lib/grpc_kit/transport/client_transport.rb +39 -3
  56. data/lib/grpc_kit/transport/packable.rb +9 -3
  57. data/lib/grpc_kit/transport/server_transport.rb +15 -2
  58. data/lib/grpc_kit/version.rb +1 -1
  59. metadata +6 -3
  60. data/TODO.md +0 -71
@@ -3,14 +3,16 @@
3
3
  module GrpcKit
4
4
  module Transport
5
5
  module Packable
6
- # @params data [String]
7
- # @params compress [Boolean]
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
- # @params data [String]
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
- # @params session [GrpcKit::Session::ServerSession]
11
- # @params stream [GrpcKit::Session::Stream]
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GrpcKit
4
- VERSION = '0.1.8'
4
+ VERSION = '0.1.9'
5
5
  end
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.8
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-12 00:00:00.000000000 Z
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
-