grpc_kit 0.3.0 → 0.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24da7e7fc87c510f28152d959814121928623f6217da6d46148fa8a83f39446f
4
- data.tar.gz: 792c2414ddffaf2e96abf6e8de8239cbf4a9cd1963675e9af9cf3af2434c7bf5
3
+ metadata.gz: 9c229b35fd09c414d3fc19aeaa1c46dd1e4c99b5046dbbaf33fbe8e418c5a34b
4
+ data.tar.gz: 613b394508932720c519ebc41abaab965e7b8cfb4ba6fcf864729bb027f8ebd8
5
5
  SHA512:
6
- metadata.gz: 8c7194e0e9043f0f984b226b13dee18ee3ff84168061f2c788a8deeeb8e8096c748c83a26635ef4241deaeb283e315e9ffb39d40a54065922daad0bb59152055
7
- data.tar.gz: 0b502f3c1d0606c4bfe514eea8a0d250fbf7a34718d6f5926a9cbc7b0eaae296ba4f1a2f5a33eeebd50e665481927d6711377978d762184e29ec50a666b18b7e
6
+ metadata.gz: 49874a742c974ba015526b8649bb1667b65478e2b533a7cde9020e906e425f47d523d4868ad0c64d944e4f249c9c08ef88c6e592fb3dab774a987f07b54e5a2e
7
+ data.tar.gz: b147ff2d8aa48c6b1cf537b9809939a4344432a265d96543537dd9bd8aa8731681e31ea9989e7f6844a5d60adef173058942dd33120b75bf77088bf22604c28a
@@ -23,6 +23,10 @@ module GrpcKit
23
23
  @deferred_read
24
24
  end
25
25
 
26
+ def no_resume
27
+ @deferred_read = false
28
+ end
29
+
26
30
  # @return [void]
27
31
  def end_write
28
32
  @end_write = true
@@ -41,22 +45,24 @@ module GrpcKit
41
45
  # @return [nil,DS9::ERR_DEFERRED,String]
42
46
  def read(size = nil)
43
47
  buf = do_read(size)
44
- if buf.nil?
45
- if end_write?
46
- # Call again because #write invokes `@buffer << data` before calling #end_write
47
- if (buf = do_read(size))
48
- return buf
49
- end
48
+ if buf
49
+ @deferred_read = false
50
+ return buf
51
+ end
50
52
 
53
+ if end_write?
54
+ # Call again because #write invokes `@buffer << data` before calling #end_write
55
+ if (buf = do_read(size))
51
56
  @deferred_read = false
52
- return nil # EOF
57
+ return buf
53
58
  end
54
59
 
55
- @deferred_read = true
56
- return DS9::ERR_DEFERRED
60
+ @deferred_read = false
61
+ return nil # EOF
57
62
  end
58
63
 
59
- buf
64
+ @deferred_read = true
65
+ DS9::ERR_DEFERRED
60
66
  end
61
67
 
62
68
  private
@@ -107,8 +107,9 @@ module GrpcKit
107
107
  while (event = @control_queue.pop)
108
108
  case event[0]
109
109
  when :submit_response
110
+ stream = @streams[event[1]]
110
111
  # piggybacked previous invokeing #submit_response?
111
- if @streams[event[1]].pending_send_data.empty?
112
+ unless stream && !stream.pending_send_data.empty?
112
113
  next
113
114
  end
114
115
 
@@ -116,7 +117,13 @@ module GrpcKit
116
117
  when :submit_headers
117
118
  submit_headers(event[1], event[2])
118
119
  when :resume_data
120
+ stream = @streams[event[1]]
121
+ unless stream && stream.pending_send_data.need_resume?
122
+ next
123
+ end
124
+
119
125
  resume_data(event[1])
126
+ stream.pending_send_data.no_resume
120
127
  end
121
128
  end
122
129
  end
@@ -18,6 +18,7 @@ module GrpcKit
18
18
  # @return [void]
19
19
  def start_response(headers)
20
20
  @control_queue.submit_response(@stream.stream_id, headers)
21
+ send_data
21
22
  end
22
23
 
23
24
  # @param headers [Hash<String, String>]
@@ -31,6 +32,7 @@ module GrpcKit
31
32
  # @return [void]
32
33
  def write_data(buf, last: false)
33
34
  @stream.write_send_data(pack(buf), last: last)
35
+ send_data
34
36
  end
35
37
 
36
38
  # @param last [Boolean]
@@ -43,6 +45,7 @@ module GrpcKit
43
45
  # @return [void]
44
46
  def write_trailers(trailer)
45
47
  @stream.write_trailers_data(trailer)
48
+ send_data
46
49
  end
47
50
 
48
51
  # @return [void]
@@ -72,11 +75,7 @@ module GrpcKit
72
75
  end
73
76
 
74
77
  def send_data
75
- unless @stream.pending_send_data.need_resume?
76
- return
77
- end
78
-
79
- @session.resume_data(@stream.stream_id)
78
+ @control_queue.resume_data(@stream.stream_id)
80
79
  end
81
80
  end
82
81
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GrpcKit
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grpc_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuta Iwama