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

27 lines
856 B
Swift

//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
/// Simple protocol for writing chunks of data. This is effectively a protocol
/// wrapper around OutputStream, but allows for easier testing and
/// proxying of the OutputStream class itself.
public protocol OutputStreamable: Streamable {
func write(data: Data) throws
}
extension OutputStream: OutputStreamable {
public func write(data: Data) throws {
let writeLen = data.withUnsafeBytes {
guard let bytes = $0.baseAddress?.assumingMemoryBound(to: Int8.self) else {
return 0
}
return self.write(bytes, maxLength: data.count)
}
if writeLen != data.count {
owsFailDebug("The amount written doesn't match amount that was attempted.")
}
}
}