Module: Rumai::IXP::Struct::Field::CounteeField

Defined in:
lib/rumai/ixp/message.rb

Overview

Methods for a field whose length is counted by another field.

Instance Method Summary collapse

Instance Method Details

#load_9p(stream, field_values) ⇒ Object



255
256
257
258
259
260
261
262
263
264
# File 'lib/rumai/ixp/message.rb', line 255

def load_9p stream, field_values
  count = field_values[@counter.name].to_i

  field_values[@name] =
    if @format
      Array.new(count) { value_from_9p stream }
    else
      stream.read(count) # raw byte sequence
    end
end

#to_9p(field_values) ⇒ Object



245
246
247
248
249
250
251
252
253
# File 'lib/rumai/ixp/message.rb', line 245

def to_9p field_values
  value = field_values[@name]

  if @format
    value.map {|v| value_to_9p v}.join
  else
    value.to_s # raw byte sequence
  end
end