Class: GrpcKit::Streams::SendBuffer

Inherits:
Object
  • Object
show all
Defined in:
lib/grpc_kit/streams/send_buffer.rb

Instance Method Summary collapse

Constructor Details

#initializeSendBuffer

Returns a new instance of SendBuffer.



6
7
8
9
10
# File 'lib/grpc_kit/streams/send_buffer.rb', line 6

def initialize
  @buffer = nil
  @pos = 0
  @end_write = false
end

Instance Method Details

#end_writeObject



24
25
26
# File 'lib/grpc_kit/streams/send_buffer.rb', line 24

def end_write
  @end_write = true
end

#end_write?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/grpc_kit/streams/send_buffer.rb', line 28

def end_write?
  @end_write
end

#read(size) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/grpc_kit/streams/send_buffer.rb', line 32

def read(size)
  if @buffer.nil?
    return false
  end

  data = @buffer.slice!(0, size)
  if !data.empty?
    data
  elsif end_write?
    nil # EOF
  else
    false # deferred
  end
end

#write(data, last: false) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/grpc_kit/streams/send_buffer.rb', line 12

def write(data, last: false)
  end_write if last

  if @buffer
    @buffer << data
  else
    @buffer = data
  end

  data.size
end