Class: GrpcKit::Session::RecvBuffer
- Inherits:
-
Object
- Object
- GrpcKit::Session::RecvBuffer
- Defined in:
- lib/grpc_kit/session/recv_buffer.rb
Instance Method Summary collapse
- #end_read ⇒ void
- #end_read? ⇒ Boolean
-
#initialize ⇒ RecvBuffer
constructor
A new instance of RecvBuffer.
- #read(size = nil, last: false) ⇒ String?
- #write(data) ⇒ void
Constructor Details
#initialize ⇒ RecvBuffer
Returns a new instance of RecvBuffer.
6 7 8 9 10 |
# File 'lib/grpc_kit/session/recv_buffer.rb', line 6 def initialize @buffer = +''.b @end = false @mutex = Mutex.new end |
Instance Method Details
#end_read ⇒ void
This method returns an undefined value.
47 48 49 |
# File 'lib/grpc_kit/session/recv_buffer.rb', line 47 def end_read @end = true end |
#end_read? ⇒ Boolean
42 43 44 |
# File 'lib/grpc_kit/session/recv_buffer.rb', line 42 def end_read? @end end |
#read(size = nil, last: false) ⇒ String?
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/grpc_kit/session/recv_buffer.rb', line 21 def read(size = nil, last: false) buf = @mutex.synchronize do return nil if @buffer.empty? if size.nil? || @buffer.bytesize < size buf = @buffer @buffer = ''.b buf else @buffer.freeze rbuf = @buffer.byteslice(0, size) @buffer = @buffer.byteslice(size, @buffer.bytesize) rbuf end end end_read if last buf end |
#write(data) ⇒ void
This method returns an undefined value.
14 15 16 |
# File 'lib/grpc_kit/session/recv_buffer.rb', line 14 def write(data) @mutex.synchronize { @buffer << data } end |