3079540

Branches > main > 3079540 > files

Remove channel from transport server

Grahp, 2026-08-25

Commit: 30795404d423a733da64fde79b5aceaa0ca86231
Parent: 7815bf5

2 changed files:

src/net/bowmap/protocol/server.clj modified (view file)

@@ -9,30 +9,23 @@    [net.bowmap.transport.connection :as connection]    [net.bowmap.transport.server :as mc])) -(defn connection-lifecycle [connection]-  (let [{::connection/keys! [serverbound-packets clientbound-packets]} connection]-    (loop []-      (let [{:keys [packets events]} (handle/interpret-packet (<!! serverbound-packets))]-        (doseq [packet packets]-          (put! clientbound-packets packet))-        (doseq [event events]-          (execute-effects! (logic/handle-events event))))-      (recur))))+(defn handle-response [clientbound-packets {:keys [packets events]}]+  (doseq [packet packets]+    (put! clientbound-packets packet))+  (doseq [event events]+    (execute-effects! (logic/handle-events event))))  (defn handle-connection [connection]-  (io-thread-    (let [{::connection/keys! [close-fn closed]} connection]-      (io-thread-        (when-let [uuid @closed]-          (execute-effects! (logic/handle-events {::event/id ::event/player-left ::player/uuid uuid}))))-      (try-        (connection-lifecycle connection)-        (finally-          (close-fn))))))+  (let [{::connection/keys! [close-fn serverbound-packets clientbound-packets closed]} connection]+    (io-thread+      (when-let [uuid @closed]+        (execute-effects! (logic/handle-events {::event/id ::event/player-left ::player/uuid uuid}))))+    (try+      (loop []+        (handle-response clientbound-packets (handle/interpret-packet (<!! serverbound-packets)))+        (recur))+      (finally+        (close-fn)))))  (defn start-server! [port]-  (let [connections (mc/start-server! port)]-    (loop []-      (when-let [connection (<!! connections)]-        (handle-connection connection))-      (recur))))+  (mc/start-server! port #'handle-connection))

src/net/bowmap/transport/server.clj modified (view file)

@@ -1,6 +1,6 @@ (ns net.bowmap.transport.server   (:require-   [clojure.core.async :refer [>!! chan close! io-thread]]+   [clojure.core.async :refer [io-thread]]    [net.bowmap.transport.connection :as connection])   (:import    [java.net ServerSocket SocketException]))@@ -13,19 +13,15 @@ (defn start-server!   "Starts a Minecraft server at the specified port.    Subsequent calls to this function will close and replace the old server.-   Returns a channel of connections that will close when the server does."-  [port]+   Connected clients will be passed to 'handler'."+  [port handler]   (when-let [server @server]     (ServerSocket/.close server))-  (let [connections (chan 64)-        server-socket (ServerSocket. port)]+  (let [server-socket (ServerSocket. port)]     (reset! server server-socket)-    (io-thread-      (try-        (loop []-          (>!! connections (accept-connection!! server-socket))-          (recur))-        (catch SocketException _)-        (finally-          (close! connections))))-    connections))+    (try+      (loop []+        (let [connection (accept-connection!! server-socket)]+          (io-thread (handler connection)))+        (recur))+      (catch SocketException _))))