32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# 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
|