From c25ee919fe5ff9c5d8c99b11a8a15b64c2e37eee Mon Sep 17 00:00:00 2001 From: Asaduzzaman Anik <69783767+anik-appnap@users.noreply.github.com> Date: Sun, 6 Apr 2025 02:13:05 +0600 Subject: [PATCH] feature: completion added to start function --- SwifterExample/main.swift | 2 +- Xcode/Sources/HttpServerIO.swift | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/SwifterExample/main.swift b/SwifterExample/main.swift index 31c8bcbd..2cbb2aea 100644 --- a/SwifterExample/main.swift +++ b/SwifterExample/main.swift @@ -15,7 +15,7 @@ server["/files/:path"] = directoryBrowser("/") let semaphore = DispatchSemaphore(value: 0) do { - try server.start(9080, forceIPv4: true) + try server.start(9080, forceIPv4: true){_ in} print("Server has started ( port = \(try server.port()) ). Try to connect now...") semaphore.wait() } catch { diff --git a/Xcode/Sources/HttpServerIO.swift b/Xcode/Sources/HttpServerIO.swift index 65c6e95a..307aa0da 100644 --- a/Xcode/Sources/HttpServerIO.swift +++ b/Xcode/Sources/HttpServerIO.swift @@ -68,13 +68,14 @@ open class HttpServerIO { } @available(macOS 10.10, *) - public func start(_ port: in_port_t = 8080, forceIPv4: Bool = false, priority: DispatchQoS.QoSClass = DispatchQoS.QoSClass.background) throws { + public func start(_ port: in_port_t = 8080, forceIPv4: Bool = false, priority: DispatchQoS.QoSClass = DispatchQoS.QoSClass.background, completion: (Bool) -> ()) throws { guard !self.operating else { return } stop() self.state = .starting let address = forceIPv4 ? listenAddressIPv4 : listenAddressIPv6 self.socket = try Socket.tcpSocketForListen(port, forceIPv4, SOMAXCONN, address) self.state = .running + completion(true) DispatchQueue.global(qos: priority).async { [weak self] in guard let strongSelf = self else { return } guard strongSelf.operating else { return }