Class: Ruflet::WireCodec::ByteReader

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

Instance Method Summary collapse

Constructor Details

#initialize(bytes) ⇒ ByteReader

Returns a new instance of ByteReader.



230
231
232
233
# File 'lib/ruflet/server/wire_codec.rb', line 230

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

Instance Method Details

#read_binary(size) ⇒ Object



291
292
293
# File 'lib/ruflet/server/wire_codec.rb', line 291

def read_binary(size)
  read_exact(size)
end

#read_exact(size) ⇒ Object



243
244
245
246
247
248
249
# File 'lib/ruflet/server/wire_codec.rb', line 243

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

  @offset += size
  chunk
end

#read_f32Object



279
280
281
# File 'lib/ruflet/server/wire_codec.rb', line 279

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

#read_f64Object



283
284
285
# File 'lib/ruflet/server/wire_codec.rb', line 283

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

#read_i16Object



267
268
269
# File 'lib/ruflet/server/wire_codec.rb', line 267

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

#read_i32Object



271
272
273
# File 'lib/ruflet/server/wire_codec.rb', line 271

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

#read_i64Object



275
276
277
# File 'lib/ruflet/server/wire_codec.rb', line 275

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

#read_i8Object



263
264
265
# File 'lib/ruflet/server/wire_codec.rb', line 263

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

#read_string(size) ⇒ Object



287
288
289
# File 'lib/ruflet/server/wire_codec.rb', line 287

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

#read_u16Object



251
252
253
# File 'lib/ruflet/server/wire_codec.rb', line 251

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

#read_u32Object



255
256
257
# File 'lib/ruflet/server/wire_codec.rb', line 255

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

#read_u64Object



259
260
261
# File 'lib/ruflet/server/wire_codec.rb', line 259

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

#read_u8Object



235
236
237
238
239
240
241
# File 'lib/ruflet/server/wire_codec.rb', line 235

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

  @offset += 1
  value
end