TM-SGNL-iOS/SignalServiceKit/Util/StreamTransform/Output/ChunkedOutputStreamTransform.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

28 lines
731 B
Swift

//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
public class ChunkedOutputStreamTransform: StreamTransform {
public func transform(data: Data) throws -> Data {
let byteLength = UInt32(data.count)
var result = Data()
result.append(writeVariableLengthUInt32(byteLength))
result.append(data)
return result
}
public func writeVariableLengthUInt32(_ value: UInt32) -> Data {
var result = Data()
var v = value
while v > 0x7F {
result.append(contentsOf: [(UInt8(v & 0x7f | 0x80))])
v >>= 7
}
result.append(contentsOf: [UInt8(v)])
return result
}
}