hi, 

I could use some help figuring out why this is working the way it is. It 
seems like a future function call is rebinding *out* so I don't see some 
printlns at the repl. 

I have a couple of functions for a server like this, 

(defn run [handler]
  (let
      [server (create-server)
       selector (:selector server)
       start (fn [] (future (handler server)))
       shutdown (fn []
                  (println "Shutting down...")
                  (doseq [k (.keys selector)]
                    (.close (.channel k)))
                  (.close selector)
                  (println "...done.")
                  )]
    {:server server :start start :shutdown shutdown}))

(defn app [server]
  (let
    [acceptor (:acceptor server)
     selector (:selector server)]
    (println "Starting Ex v Arcis on" (.getLocalAddress acceptor))
    (while (.isOpen selector)       
      (select! selector)
      (echo-all (filter #(and (.isValid %) (.attachment %)) (.keys 
selector)))
      (Thread/sleep 3000))
    (println "after")))


And a repl session looks like this, 

exvarcis.core> (def my-server (run #'app))
#'exvarcis.core/my-server

exvarcis.core> ((:start my-server))
#<core$future_call$reify__6110@1f9c9e3: :pending>
Starting Ex v Arcis on #<InetSocketAddress /127.0.0.1:1325>

exvarcis.core> ((:shutdown my-server))
Shutting down...
...done.
nil

exvarcis.core> 


So I never see the "after" called after the while loop.

If I comment out the while loop, I do see it. 

Anyone have a clue why this is working like it is?


thanks, George

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to