Class: Ruflet::Rails::Protocol::WireCodec::ByteReader

Inherits:
Object
  • Object
show all
Defined in:
lib/ruflet/rails/protocol/wire_codec.rb

Instance Method Summary collapse

Constructor Details

#initialize(bytes) ⇒ ByteReader

Returns a new instance of ByteReader.



189
190
191
192
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 189

def initialize(bytes)
  @data = bytes.to_s.b
  @offset = 0
end

Instance Method Details

#read_binary(size) ⇒ Object



220
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 220

def read_binary(size) = read_exact(size)

#read_exact(size) ⇒ Object



202
203
204
205
206
207
208
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 202

def read_exact(size)
  chunk = @data.byteslice(@offset, size)
  raise "Unexpected EOF" if chunk.nil? || chunk.bytesize != size

  @offset += size
  chunk
end

#read_f32Object



217
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 217

def read_f32 = read_exact(4).unpack1("g")

#read_f64Object



218
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 218

def read_f64 = read_exact(8).unpack1("G")

#read_i16Object



214
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 214

def read_i16 = read_exact(2).unpack1("s>")

#read_i32Object



215
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 215

def read_i32 = read_exact(4).unpack1("l>")

#read_i64Object



216
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 216

def read_i64 = read_exact(8).unpack1("q>")

#read_i8Object



213
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 213

def read_i8 = read_exact(1).unpack1("c")

#read_string(size) ⇒ Object



219
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 219

def read_string(size) = read_exact(size).force_encoding("UTF-8")

#read_u16Object



210
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 210

def read_u16 = read_exact(2).unpack1("n")

#read_u32Object



211
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 211

def read_u32 = read_exact(4).unpack1("N")

#read_u64Object



212
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 212

def read_u64 = read_exact(8).unpack1("Q>")

#read_u8Object



194
195
196
197
198
199
200
# File 'lib/ruflet/rails/protocol/wire_codec.rb', line 194

def read_u8
  value = @data.getbyte(@offset)
  raise "Unexpected EOF" if value.nil?

  @offset += 1
  value
end