class XDR::Struct

Public Class Methods

read(io) click to toggle source
# File lib/xdr/struct.rb, line 15
def self.read(io)
  new.tap do |result|
    fields.each do |name, type|
      result.public_send("#{name}=", type.read(io))
    end
  end
end
valid?(val) click to toggle source
# File lib/xdr/struct.rb, line 30
def self.valid?(val)
  val.is_a?(self)
end
write(val, io) click to toggle source
# File lib/xdr/struct.rb, line 23
def self.write(val, io)
  fields.each do |name, type|
    field_val = val.public_send(name)
    type.write(field_val, io)
  end
end

Public Instance Methods

to_xdr(format=:raw) click to toggle source

Serializes struct to xdr, return a string of bytes

@param format=:raw [Symbol] The encoding used for the bytes produces, one of (:raw, :hex, :base64)

@return [String] The encoded bytes of this struct

# File lib/xdr/struct.rb, line 40
def to_xdr(format=:raw)
  raw = self.class.to_xdr(self)

  case format
  when :raw ;     raw
  when :hex ;     raw.unpack("H*").first
  when :base64 ;  Base64.strict_encode64(raw)
  else ; 
    raise ArgumentError, "Invalid format #{format.inspect}; must be :raw, :hex, or :base64"
  end
end