Skip to content

Commit

Permalink
Reworked server.clj
Browse files Browse the repository at this point in the history
  • Loading branch information
zk committed Jun 29, 2011
1 parent 966a63a commit 2252b02
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 11 deletions.
2 changes: 1 addition & 1 deletion project.clj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(defproject nsfw "0.2.2"
(defproject nsfw "0.2.3"
:description "No Such Framework -- Experimental"
:dependencies [[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]
Expand Down
45 changes: 35 additions & 10 deletions src/nsfw/server.clj
Original file line number Diff line number Diff line change
@@ -1,18 +1,43 @@
(ns nsfw.server
"Easily manage jetty instances.
Usage:
;; Create a server
(def s (make my-entry-handler :port 9090))
;; Start server
(start s)
;; Stop server
(stop s)
;; Restart a server
(restart s)"
(:require [ring.adapter.jetty :as jetty]))

(def server nil)
(def opts-defaults
{:port 8080
:join? false})

(defn stop []
(when server
(.stop server)))
(defn make [entry-handler & opts]
(let [opts (->> opts
(apply hash-map)
(merge opts-defaults))]
(atom {:opts opts
:handler entry-handler
:server nil})))

(defn start [entry-handler & [port]]
(stop)
(alter-var-root
(var server)
(fn [val]
(jetty/run-jetty entry-handler {:port (if port port 8080) :join? false}))))
(defn stop [server-atom]
(when-let [server (:server @server-atom)]
(.stop server))
(swap! server-atom assoc :server nil))


(defn restart [server-atom]
(stop server-atom)
(let [handler (:handler @server-atom)
opts (:opts @server-atom)]
(swap! server-atom
assoc :server (jetty/run-jetty handler opts))))

(def start restart)

0 comments on commit 2252b02

Please sign in to comment.