30ddf0a

Branches > client-handling-rewrite > 30ddf0a > files / deps.edn

Idk man it's still bad

Grahp, 2026-03-09

Commit: 30ddf0a3f7a6e95ae9cf62707760c43a5b7185c9
Parent: 9ccccc9

1 changed file:

src/net/bowmap/core.clj modified (view file)

@@ -51,42 +51,45 @@    packets that handling the serverbound packet it was given returned.    Should only be used synchronously as serialization depends on client state!"   [client msg]-  (case (:type msg)-    :server-    (let [{:keys [client response]} (handle-packet client (:bytes msg))]-      (reduce (fn [client pk]-                (handle-message client {:type :client :pk pk}))-              client response))+  (let [{:keys [stream val]} msg]+    (case stream+      :serverbound-packets+      (let [{:keys [client response]} (handle-packet client val)]+        (reduce (fn [client pk]+                  (handle-message client {:stream :clientbound-packets :val pk}))+                client response)) -    :client-    (let [pk (cp/encode-packet (:pk msg) (::state/state client))]-      @(s/put! (::stream client) pk)-      client)))+      :clientbound-packets+      (let [pk (cp/encode-packet val (::state/state client))]+        @(s/put! (::stream client) pk)+        client))))++(defn feed+  "Sends all messages from the source to the sink with a transducer."+  [source xform sink]+  (let [stream (s/stream 1 xform)]+    (s/connect source stream)+    (s/connect stream sink {:upstream? false})))++(defn alt-onto+  "Takes a map of keywords to streams and returns a stream with vals {:stream keyword :val val-from-stream}."+  [chans]+  (let [out-stream (s/stream)]+    (doseq [[kw s] chans]+      (feed s+            (map (fn [x] {:stream kw :val x}))+            out-stream))+    out-stream))  (defn client-handler [stream _]   (let [client-packet-stream (s/stream)         client {::state/state ::state/handshaking                 ::stream stream-                ::packet-stream client-packet-stream}-        message-stream (s/stream)]--    (-> (s/transform-          (comp-            packet-framer-xf-            (map (fn [buf] {:type :server-                            :bytes buf})))-          stream)-        (s/connect message-stream {:upstream? false}))--    (-> (s/transform-          (map (fn [pk] {:type :client-                         :pk pk}))-          client-packet-stream)-        (s/connect message-stream {:upstream? false}))--    (d/catch (s/reduce #'handle-message client message-stream)-      (fn [e]-        (println "Exception in client packets:\n" e)))))+                ::packet-stream client-packet-stream}]+    (-> (s/reduce #'handle-message client (alt-onto {:serverbound-packets (s/transform packet-framer-xf stream)+                                                     :clientbound-packets client-packet-stream}))+        (d/catch (fn [e]+                   (println "Exception in client packets:\n" e))))))  (defn start-server []   (server/start-server! {:handler #'client-handler