responses.clj

Branches > main > 61fdd79 > files / src / net / bowmap / stormbow / responses.clj

(ns net.bowmap.stormbow.responses
  (:require
   [clojure.core.async :refer [put!]]
   [net.bowmap.protocol.client :as client]
   [net.bowmap.protocol.packet :as pk]
   [net.bowmap.protocol.packet.clientbound :as clientbound]
   [net.bowmap.stormbow.response :as response]))

(defmulti handle-response!
  (fn [response]
    (::response/id response)))

(defmethod handle-response! ::response/send-server-list [response]
  (let [{:keys! [::client/client server-list-response]} response
        {::client/keys! [clientbound-packets]} client
        packet {::pk/id ::clientbound/status-response
                :response server-list-response}]
    (put! clientbound-packets packet)))

(defn handle-responses! [responses]
  (run! handle-response! responses))