-
Notifications
You must be signed in to change notification settings - Fork 11
/
core.clj
35 lines (32 loc) · 996 Bytes
/
core.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
(ns framework.webserver.core
"Lifecycle management of the webserver"
(:require
[clojure.tools.logging :as logger]
[framework.handler.core :refer [handler-fn]]
[org.httpkit.server :as server])
(:import
(java.lang
AutoCloseable)))
(defrecord webserver
[options server]
AutoCloseable
(close [this]
(logger/info "Stop webserver" (:options this))
((:server this))))
(defn- make
"Web server instance."
[dependencies]
(let [options (:webserver dependencies (:framework.app/web-server dependencies))]
(map->webserver
{:options options
:server (server/run-server (handler-fn dependencies) options)})))
(defn start
"Start web server."
[dependencies]
;; stop the server
(when-let [webserver (get-in dependencies [:webserver :server])]
(webserver))
;; get server options
(when-let [server (make dependencies)]
(logger/info "Server started with options: " (:options server))
(assoc dependencies :webserver server)))