Class: Rex::Java::Serialization::Model::NewClassDesc
- Includes:
- Rex::Java::Serialization
- Defined in:
- lib/rex/java/serialization/model/new_class_desc.rb
Overview
This class provides a newClassDesc 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 ⇒ Object
Returns the value of attribute class_annotation.
-
#class_name ⇒ Rex::Java::Serialization::Model::Utf
The name of the class.
-
#fields ⇒ Rex::Java::Serialization::Model::Annotation
The java class annotations.
-
#flags ⇒ Integer
The java class flags.
-
#name ⇒ Integer
The java class serial version.
-
#serial_version ⇒ Object
Returns the value of attribute serial_version.
-
#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::ClassDescription.
-
#encode ⇒ String
Serializes the Rex::Java::Serialization::Model::ClassDescription.
-
#initialize(stream = nil) ⇒ NewClassDesc
constructor
A new instance of NewClassDesc.
-
#to_s ⇒ String
Creates a print-friendly string representation.
Methods inherited from Element
Constructor Details
#initialize(stream = nil) ⇒ NewClassDesc
Returns a new instance of NewClassDesc.
32 33 34 35 36 37 38 39 40 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 32 def initialize(stream = nil) super(stream) self.class_name = nil self.serial_version = 0 self.flags = 0 self.fields = [] self.class_annotation = nil self.super_class = nil end |
Instance Attribute Details
#class_annotation ⇒ Object
Returns the value of attribute class_annotation.
26 27 28 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 26 def class_annotation @class_annotation end |
#class_name ⇒ Rex::Java::Serialization::Model::Utf
Returns The name of the class.
14 15 16 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 14 def class_name @class_name end |
#fields ⇒ Rex::Java::Serialization::Model::Annotation
Returns The java class annotations.
23 24 25 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 23 def fields @fields end |
#flags ⇒ Integer
Returns The java class flags.
20 21 22 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 20 def flags @flags end |
#name ⇒ Integer
Returns The java class serial version.
17 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 17 attr_accessor :serial_version |
#serial_version ⇒ Object
Returns the value of attribute serial_version.
17 18 19 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 17 def serial_version @serial_version end |
#super_class ⇒ Rex::Java::Serialization::Model::ClassDesc
Returns The java class superclass description.
29 30 31 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 29 def super_class @super_class end |
Instance Method Details
#decode(io) ⇒ self
Deserializes a Rex::Java::Serialization::Model::ClassDescription
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 47 def decode(io) self.class_name = Utf.decode(io, stream) self.serial_version = decode_serial_version(io) stream.add_reference(self) unless stream.nil? self.flags = decode_flags(io) fields_length = decode_fields_length(io) fields_length.times do field = Field.decode(io, stream) self.fields << field 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::ClassDescription
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 68 def encode unless class_name.class == Rex::Java::Serialization::Model::Utf && class_annotation.class == Rex::Java::Serialization::Model::Annotation && super_class.class == Rex::Java::Serialization::Model::ClassDesc raise ::RuntimeError, 'Filed to serialize NewClassDesc' end encoded = '' encoded << class_name.encode encoded << [serial_version].pack('Q>') stream.add_reference(self) unless stream.nil? encoded << [flags].pack('C') encoded << [fields.length].pack('n') fields.each do |field| encoded << field.encode end encoded << class_annotation.encode encoded << super_class.encode encoded end |
#to_s ⇒ String
Creates a print-friendly string representation
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 92 def to_s str = "#{class_name}, [ " fields_str = [] fields.each do |field| fields_str << field.to_s end str << "#{fields_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 |