class Protobuf::Rpc::Buffer
Constants
- MODES
- SIZE_REGEX
constantize this so we don’t re-initialize the regex every time we need it
Attributes
data[RW]
mode[RW]
size[RW]
Public Class Methods
new(mode = :read)
click to toggle source
# File lib/protobuf/rpc/buffer.rb, line 12 def initialize(mode = :read) @flush = false @data = "" @size = 0 self.mode = mode end
Public Instance Methods
<<(data)
click to toggle source
# File lib/protobuf/rpc/buffer.rb, line 39 def <<(data) @data << data if reading? get_data_size check_for_flush end end
flushed?()
click to toggle source
# File lib/protobuf/rpc/buffer.rb, line 60 def flushed? @flush end
get_data_size()
click to toggle source
# File lib/protobuf/rpc/buffer.rb, line 64 def get_data_size # rubocop:disable Style/AccessorMethodName if @size == 0 || @data.match(SIZE_REGEX) sliced_size = @data.slice!(SIZE_REGEX) @size = sliced_size.delete('-').to_i unless sliced_size.nil? end end
mode=(mode)
click to toggle source
# File lib/protobuf/rpc/buffer.rb, line 19 def mode=(mode) @mode = if MODES.include?(mode) mode else :read end end
reading?()
click to toggle source
# File lib/protobuf/rpc/buffer.rb, line 52 def reading? mode == :read end
set_data(data)
click to toggle source
# File lib/protobuf/rpc/buffer.rb, line 47 def set_data(data) # rubocop:disable Style/AccessorMethodName @data = data.to_s @size = @data.size end
write(force_mode = true)
click to toggle source
# File lib/protobuf/rpc/buffer.rb, line 28 def write(force_mode = true) if force_mode && reading? self.mode = :write elsif !force_mode && reading? fail 'You chose to write the buffer when in read mode' end @size = @data.length "#{@size}-#{@data}" end
writing?()
click to toggle source
# File lib/protobuf/rpc/buffer.rb, line 56 def writing? mode == :write end
Private Instance Methods
check_for_flush()
click to toggle source
# File lib/protobuf/rpc/buffer.rb, line 73 def check_for_flush @flush = true if !@size.nil? && @data.length == @size end