class Rex::Java::Serialization::Model::Reference

This class provides a Java Reference representation.

Attributes

handle[RW]

@!attribute contents

@return [Fixnum] The stream handle being referenced

Public Class Methods

new(stream = nil) click to toggle source

@param stream [Rex::Java::Serialization::Model::Stream] the stream where it belongs to

# File lib/rex/java/serialization/model/reference.rb, line 14
def initialize(stream = nil)
  super(stream)
  self.handle = 0
end

Public Instance Methods

decode(io) click to toggle source

Deserializes a Rex::Java::Serialization::Model::Reference

@param io [IO] the io to read from @return [self] if deserialization succeeds @raise [Rex::Java::Serialization::DecodeError] if deserialization doesn't succeed

# File lib/rex/java/serialization/model/reference.rb, line 24
def decode(io)
  handle_raw = io.read(4)
  unless handle_raw && handle_raw.length == 4
    raise Rex::Java::Serialization::DecodeError, 'Failed to unserialize Reference'
  end

  self.handle = handle_raw.unpack('N')[0]

  self
end
encode() click to toggle source

Serializes the Rex::Java::Serialization::Model::Reference

@return [String] if serialization succeeds @raise [Rex::Java::Serialization::EncodeError] if serialization doesn't succeed

# File lib/rex/java/serialization/model/reference.rb, line 39
def encode
  if handle < BASE_WIRE_HANDLE
    raise Rex::Java::Serialization::EncodeError, 'Failed to serialize Reference'
  end

  encoded = ''
  encoded << [handle].pack('N')

  encoded
end
to_s() click to toggle source

Creates a print-friendly string representation

@return [String]

# File lib/rex/java/serialization/model/reference.rb, line 53
def to_s
  "0x#{handle.to_s(16)}"
end