responses.clj
Branches > facts > b785a33 > 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.protocol.state :as state]
[net.bowmap.stormbow.response :as response]))
(defmulti handle-response!
(fn [response]
(::response/id response)))
::client/client ::state/connection-state
(defmethod handle-response! ::response/send-server-list [response]
(let [{:keys! [::client/client server-list-response]} response
{:keys! [::client/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))