server.clj
bowmap.git > grahp > f459ce3 > files / src / net / bowmap / server / network / server.clj
(ns net.bowmap.server.network.server
(:require
[net.bowmap.server.network.connection :as connection])
(:import
[java.net ServerSocket]))
(defn accept!! [server]
(try
(connection/connection (ServerSocket/.accept server))
(catch Throwable t
(ServerSocket/.close server)
(throw t))))
(defonce ^:private server nil)
(defn start-server!
"Starts a TCP server at the given port and address, replacing an already
started server if one exists."
[& {:keys [port bind-addr backlog] :or {:backlog 50 :port 0}}]
(let [server-socket (ServerSocket. port backlog bind-addr)]
(when server
(ServerSocket/.close server))
(alter-var-root #'server (constantly server-socket))
server-socket))