Class: Rex::Java::Serialization::Model::ProxyClassDesc
- Includes:
- Rex::Java::Serialization
- Defined in:
- lib/rex/java/serialization/model/proxy_class_desc.rb
Overview
This class provides a ProxyClassDesc representation
Constant Summary
Constants included from Rex::Java::Serialization
BASE_WIRE_HANDLE, OBJECT_TYPE_CODES, PRIMITIVE_TYPE_CODES, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, STREAM_MAGIC, STREAM_VERSION, TC_ARRAY, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING, TYPE_CODES
Instance Attribute Summary collapse
-
#class_annotation ⇒ Rex::Java::Serialization::Model::Annotation
The java class annotations.
-
#interfaces ⇒ Array
An array of interface names.
-
#super_class ⇒ Rex::Java::Serialization::Model::ClassDesc
The java class superclass description.
Attributes inherited from Element
Instance Method Summary collapse
-
#decode(io) ⇒ self
Deserializes a Rex::Java::Serialization::Model::ProxyClassDesc.
-
#encode ⇒ String
Serializes the Rex::Java::Serialization::Model::ProxyClassDesc.
-
#initialize(stream = nil) ⇒ ProxyClassDesc
constructor
A new instance of ProxyClassDesc.
-
#to_s ⇒ String
Creates a print-friendly string representation.
Methods inherited from Element
Constructor Details
#initialize(stream = nil) ⇒ ProxyClassDesc
Returns a new instance of ProxyClassDesc.
23 24 25 26 27 28 |
# File 'lib/rex/java/serialization/model/proxy_class_desc.rb', line 23 def initialize(stream = nil) super(stream) self.interfaces = [] self.class_annotation = nil self.super_class = nil end |
Instance Attribute Details
#class_annotation ⇒ Rex::Java::Serialization::Model::Annotation
Returns The java class annotations.
17 18 19 |
# File 'lib/rex/java/serialization/model/proxy_class_desc.rb', line 17 def class_annotation @class_annotation end |
#interfaces ⇒ Array
Returns An array of interface names.
14 15 16 |
# File 'lib/rex/java/serialization/model/proxy_class_desc.rb', line 14 def interfaces @interfaces end |
#super_class ⇒ Rex::Java::Serialization::Model::ClassDesc
Returns The java class superclass description.
20 21 22 |
# File 'lib/rex/java/serialization/model/proxy_class_desc.rb', line 20 def super_class @super_class end |
Instance Method Details
#decode(io) ⇒ self
Deserializes a Rex::Java::Serialization::Model::ProxyClassDesc
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/rex/java/serialization/model/proxy_class_desc.rb', line 35 def decode(io) stream.add_reference(self) unless stream.nil? interfaces_length = decode_interfaces_length(io) interfaces_length.times do interface = Utf.decode(io, stream) self.interfaces << interface end self.class_annotation = Annotation.decode(io, stream) self.super_class = ClassDesc.decode(io, stream) self end |
#encode ⇒ String
Serializes the Rex::Java::Serialization::Model::ProxyClassDesc
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rex/java/serialization/model/proxy_class_desc.rb', line 53 def encode unless class_annotation.class == Rex::Java::Serialization::Model::Annotation || super_class.class == Rex::Java::Serialization::Model::ClassDesc raise Rex::Java::Serialization::EncodeError, 'Failed to serialize ProxyClassDesc' end encoded = '' encoded << [interfaces.length].pack('N') interfaces.each do |interface| encoded << interface.encode end encoded << class_annotation.encode encoded << super_class.encode encoded end |
#to_s ⇒ String
Creates a print-friendly string representation
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/rex/java/serialization/model/proxy_class_desc.rb', line 72 def to_s str = '[ ' interfaces_str = [] interfaces.each do |interface| interfaces_str << interface.to_s end str << "#{interfaces_str.join(', ')} ]" case super_class.description when NewClassDesc str << ", @super_class: #{super_class.description.class_name.to_s}" when Reference str << ", @super_class: #{super_class.description.to_s}" end str end |