client.clj

Branches > facts > 3059662 > files / src / net / bowmap / network / client.clj

(ns net.bowmap.network.client
  (:require
   [net.bowmap.network.packets.clientbound :refer [encode-packet!]]
   [net.bowmap.network.state :as state]
   [net.bowmap.network.streams :as streams])
  (:import
   [java.net Socket]))

(defn send-clientbound-packet [client packet]
  (println "sending packet out: " packet)
  (streams/write-frame!! (encode-packet! packet (req! client ::state/connection-state))
                         (Socket/.getOutputStream (req! client ::socket)))
  client)

(defn client [socket]
  (agent {::socket socket
          ::state/connection-state ::state/handshaking}
         :error-handler (fn [a ex]
                          (Throwable/.printStackTrace ex *err*)
                          (Socket/.close socket))))