grpc_kit 0.3.0 → 0.3.1

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