Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@raek
Created July 22, 2010 22:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raek/486687 to your computer and use it in GitHub Desktop.
Save raek/486687 to your computer and use it in GitHub Desktop.
(ns se.raek.pipes.examples
(:use se.raek.pipes
clojure.contrib.server-socket
clojure.test))
(with-test
(defn upper-responses [seq]
(->> seq
(filter #(.startsWith % "to-upper: "))
(map #(.toUpperCase %))))
(is (= ["TO-UPPER: FOO"]
(upper-responses ["ignore this..."
"to-upper: foo"
"...and this"]))))
(with-test
(defn lower-responses [seq]
(->> seq
(filter #(.startsWith % "to-lower: "))
(map #(.toLowerCase %))))
(is (= ["to-lower: foo"]
(lower-responses ["ignore this..."
"to-lower: FOO"
"...and this"]))))
(defn handle-connection [is os]
(let [in-seq (source-seq (line-source is))
out-sink (line-sink os)
upper-feeder (feed! out-sink (upper-responses in-seq))
lower-feeder (feed! out-sink (lower-responses in-seq))]
((:wait upper-feeder))
((:wait lower-feeder))))
(def server (create-server 9001 #'handle-connection))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment