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.
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
-