From f1ad7289ff38f3b1c1987307845de373fc9af499 Mon Sep 17 00:00:00 2001 From: Ivan Yonchovski Date: Tue, 1 Mar 2022 13:35:42 +0200 Subject: [PATCH] Allow creating pipe with non-blocking input --- asynctools/asyncpipe.nim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/asynctools/asyncpipe.nim b/asynctools/asyncpipe.nim index d038998..94995d7 100644 --- a/asynctools/asyncpipe.nim +++ b/asynctools/asyncpipe.nim @@ -157,7 +157,7 @@ else: result = "AsyncPipe [read = " & $(cast[uint](pipe.readPipe)) & ", write = " & $(cast[int](pipe.writePipe)) & "]" - proc createPipe*(register = true): AsyncPipe = + proc createPipe*(register = true, nonBlockingWrite = true): AsyncPipe = var number = 0'i64 var pipeName: WideCString @@ -333,12 +333,13 @@ else: result = "AsyncPipe [read = " & $(cast[uint](pipe.readPipe)) & ", write = " & $(cast[uint](pipe.writePipe)) & "]" - proc createPipe*(size = 65536, register = true): AsyncPipe = + proc createPipe*(size = 65536, register = true, nonBlockingWrite = true): AsyncPipe = var fds: array[2, cint] if posix.pipe(fds) == -1: raiseOSError(osLastError()) setNonBlocking(fds[0]) - setNonBlocking(fds[1]) + if nonBlockingWrite: + setNonBlocking(fds[1]) result = AsyncPipe(readPipe: fds[0], writePipe: fds[1]) @@ -533,4 +534,3 @@ when isMainModule: let res = waitFor(receiver(o)) doAssert(res.count == testsCount) doAssert(res.sum == testsCount * (1 + testsCount) div 2) -