3079540
Branches > main > 3079540 > files
Remove channel from transport server
Commit: 30795404d423a733da64fde79b5aceaa0ca86231
Parent: 7815bf5
2 changed files:
src/net/bowmap/protocol/server.clj 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 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 _))))