From bd79f42e961dc76f74888885dd45465b777f9549 Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Sat, 18 Dec 2021 16:06:39 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8C=20Cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phpmon/Domain/Terminal/Shell.swift | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/phpmon/Domain/Terminal/Shell.swift b/phpmon/Domain/Terminal/Shell.swift index f3e6270..4f26e7c 100644 --- a/phpmon/Domain/Terminal/Shell.swift +++ b/phpmon/Domain/Terminal/Shell.swift @@ -138,18 +138,19 @@ class Shell { task.standardOutput = outputPipe task.standardError = errorPipe - outputPipe.fileHandleForReading.waitForDataInBackgroundAndNotify() - NotificationCenter.default.addObserver(forName: NSNotification.Name.NSFileHandleDataAvailable, object: outputPipe.fileHandleForReading, queue: nil) { notification in - let outputString = String(data: outputPipe.fileHandleForReading.availableData, encoding: String.Encoding.utf8) ?? "" - didReceiveStdOutData(outputString) - outputPipe.fileHandleForReading.waitForDataInBackgroundAndNotify() - } - - errorPipe.fileHandleForReading.waitForDataInBackgroundAndNotify() - NotificationCenter.default.addObserver(forName: NSNotification.Name.NSFileHandleDataAvailable, object: errorPipe.fileHandleForReading, queue: nil) { notification in - let outputString = String(data: errorPipe.fileHandleForReading.availableData, encoding: String.Encoding.utf8) ?? "" - didReceiveStdErrData(outputString) - errorPipe.fileHandleForReading.waitForDataInBackgroundAndNotify() + [(outputPipe, didReceiveStdOutData), (errorPipe, didReceiveStdErrData)].forEach { + (pipe: Pipe, callback: @escaping (String) -> Void) in + pipe.fileHandleForReading.waitForDataInBackgroundAndNotify() + NotificationCenter.default.addObserver( + forName: NSNotification.Name.NSFileHandleDataAvailable, + object: pipe.fileHandleForReading, + queue: nil + ) { notification in + if let outputString = String(data: pipe.fileHandleForReading.availableData, encoding: String.Encoding.utf8) { + callback(outputString) + } + pipe.fileHandleForReading.waitForDataInBackgroundAndNotify() + } } } }