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