class WinRM::PSRP::MessageFragmenter
PowerShell Remoting Protocol message fragmenter.
Constants
- DEFAULT_BLOB_LENGTH
Attributes
Public Class Methods
Source
# File lib/winrm/psrp/message_fragmenter.rb, line 24 def initialize(max_blob_length = DEFAULT_BLOB_LENGTH) @object_id = 0 @max_blob_length = max_blob_length || DEFAULT_BLOB_LENGTH end
Public Instance Methods
Source
# File lib/winrm/psrp/message_fragmenter.rb, line 32 def fragment(message) @object_id += 1 message_bytes = message.bytes bytes_fragmented = 0 fragment_id = 0 fragment = nil while bytes_fragmented < message_bytes.length last_byte = bytes_fragmented + max_blob_length last_byte = message_bytes.length if last_byte > message_bytes.length fragment = Fragment.new( object_id, message.bytes[bytes_fragmented..last_byte - 1], fragment_id, bytes_fragmented.zero?, last_byte == message_bytes.length ) fragment_id += 1 bytes_fragmented = last_byte yield fragment if block_given? end fragment end