server.clj 705 B

123456789101112131415161718192021222324
  1. (ns attendant.server
  2. (:require
  3. [com.stuartsierra.component :as component]
  4. [attendant.handler :refer [make-handler]]
  5. [ring.adapter.jetty :refer [run-jetty]]
  6. [ring.middleware.reload :refer [wrap-reload]]))
  7. (defrecord Server [port dev]
  8. component/Lifecycle
  9. (start [this]
  10. (println "starting web server" (when dev "(in dev mode)"))
  11. (let [handler (make-handler)
  12. hand (if dev
  13. (wrap-reload handler)
  14. handler)]
  15. (assoc this :server
  16. (run-jetty hand {:port port
  17. :join? false}))))
  18. (stop [this]
  19. (println "stopping web server")
  20. (.stop (:server this))
  21. (.destroy (:server this))
  22. this))