diff --git a/Sources/JSONRPC/DataChannel+StdioPipe.swift b/Sources/JSONRPC/DataChannel+Stdio.swift similarity index 61% rename from Sources/JSONRPC/DataChannel+StdioPipe.swift rename to Sources/JSONRPC/DataChannel+Stdio.swift index 9de2eb5..8157421 100644 --- a/Sources/JSONRPC/DataChannel+StdioPipe.swift +++ b/Sources/JSONRPC/DataChannel+Stdio.swift @@ -1,4 +1,9 @@ import Foundation +#if os(Linux) +import Glibc +#else +import Darwin.C +#endif extension FileHandle { public var dataStream: AsyncStream { @@ -21,10 +26,18 @@ extension FileHandle { } extension DataChannel { + @available(*, deprecated, renamed: "stdio", message: "Use stdio instead") public static func stdioPipe() -> DataChannel { + stdio() + } + + public static func stdio(flushWrites: Bool = true) -> DataChannel { - let writeHandler: DataChannel.WriteHandler = { - FileHandle.standardOutput.write($0) + let writeHandler: DataChannel.WriteHandler = { data in + FileHandle.standardOutput.write(data) + if flushWrites { + fflush(stdout) + } } return DataChannel(writeHandler: writeHandler, dataSequence: FileHandle.standardInput.dataStream)