Sha256: ff4a804041bc6b44f0aa3ec50486475f73346bdf741457e9de8dbb83efe84215

Contents?: true

Size: 610 Bytes

Versions: 3

Compression:

Stored size: 610 Bytes

Contents

class XDR::Opaque
  include XDR::Concerns::ConvertsToXDR
  include XDR::Concerns::StringConverter

  singleton_class.send(:alias_method, :[], :new)

  def initialize(length)
    @length = length
    @padding = padding_for length
  end

  def read(io)
    # read and return @length bytes
    # throw away @padding bytes
    read_bytes(io, @length).tap{ read_zeros(io, @padding) }
  end

  def write(val,io)
    length = val.bytesize
    
    if val.length != @length
      raise XDR::WriteError, "Value length is #{length}, must be #{@length}" 
    end

    io.write val
    io.write "\x00" * @padding
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
xdr-3.0.2 lib/xdr/opaque.rb
xdr-3.0.1 lib/xdr/opaque.rb
xdr-3.0.0 lib/xdr/opaque.rb