Sha256: c027f7701201eb6ad0262a72f582b803414b6e5c78a44eca88ace190c2541849

Contents?: true

Size: 1.72 KB

Versions: 2

Compression:

Stored size: 1.72 KB

Contents

# -*- coding: binary -*-

module Rex
  module Proto
    module Rmi
      module Model
        # This class provides a representation of an RMI DbgACK stream. It is an acknowledgement
        # directed to a server's distributed garbage collector that indicates that remote objects
        # in a return value from a server have been received by the client.
        class DgcAck < Element

          # @!attribute stream_id
          #   @return [Fixnum] the input stream id
          attr_accessor :stream_id
          # @!attribute unique_identifier
          #   @return [String] the unique identifier
          attr_accessor :unique_identifier

          private

          # Reads the stream id from the IO
          #
          # @param io [IO] the IO to read from
          # @return [String]
          # @raise [RuntimeError] if fails to decode stream id
          def decode_stream_id(io)
            stream_id = read_byte(io)
            unless stream_id == DGC_ACK_MESSAGE
              raise ::RuntimeError, 'Failed to decode DgcAck stream id'
            end

            stream_id
          end

          # Reads the unique identifier from the IO
          #
          # @param io [IO] the IO to read from
          # @return [String]
          def decode_unique_identifier(io)
            unique_identifier = read_string(io, 14)

            unique_identifier
          end

          # Encodes the stream_id field
          #
          # @return [String]
          def encode_stream_id
            [stream_id].pack('C')
          end

          # Encodes the unique_identifier field
          #
          # @return [String]
          def encode_unique_identifier
            unique_identifier
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rex-2.0.8 lib/rex/proto/rmi/model/dgc_ack.rb
rex-2.0.7 lib/rex/proto/rmi/model/dgc_ack.rb