8d0e6a7
Branches > main > 8d0e6a7 > files
Move server shutdown promise out of TCP logic
Commit: 8d0e6a727fb06d4502a870731be4ce1c8e300fe5
Parent: fc6a193
2 changed files:
src/net/bowmap/minecraft_server.clj view file
@@ -65,11 +65,13 @@ (defn start-server! "Starts the Minecraft server at the specified port. Returns a promise that will deliver when the server closes." [{:keys! [port]}]- (let [{::server/keys! [client-chan shutdown]} (server/start-tcp-server! {:port port})]+ (let [clients (server/start-tcp-server! {:port port})+ shutdown (promise)] ; Loop over the instance? (io-thread (loop []- (when-some [{::server/keys! [packets-in packets-out]} (<!! client-chan)]- (connect! (client) packets-in packets-out)- (recur))))+ (if [{::server/keys! [packets-in packets-out]} (<!! clients)]+ (do (connect! (client) packets-in packets-out)+ (recur))+ (deliver shutdown :shutdown)))) shutdown))src/net/bowmap/network/server.clj view file
@@ -39,8 +39,7 @@ When the server closes, client channel will be closed, and vice versa." [& {:keys! [port]}] (let [server (ServerSocket. port)- clients (chan 64)- shutdown (promise)]+ clients (chan 64)] (io-thread (try (loop []@@ -48,11 +47,8 @@ (let [socket (ServerSocket/.accept server)] (if (>!! clients (new-client socket)) (recur)- (do (Closeable/.close socket)- (deliver shutdown :shutdown)))))+ (Closeable/.close socket)))) (catch Throwable t (close! clients)- (deliver shutdown :shutdown) (throw t))))- {::client-chan clients- ::shutdown shutdown}))+ clients))