* I think io-loop function can be improved/simplified.
* I usually don't like duplication (.readLine in) is being repeated in
io-loop.
* any other comments/links/reference to some other idiomatic code are
welcome.
(ns echo.server
[:use clojure.contrib.server-socket clojure.java.io
clojure.contrib.logging])
(defn line-received [line out]
(info line)
(doto out (.write line) (.newLine))
(.flush out))
(defn connection-closed [out]
(info "Client connection closed."))
(def running (ref true))
(defn io-loop [in out]
(loop [line (.readLine in)]
(when @running
(if (= line nil)
(connection-closed out)
(do
(line-received line out)
(recur (.readLine in)))
))))
(defn client-handler [in-stream out-stream]
(try
(io-loop (reader in-stream) (writer out-stream))
(catch Throwable e (.printStackTrace e)))
)
(info "starting server ...")
(create-server 8080 client-handler)
(info "server started")
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en