So a common counter to "the VM startup time is so bad" problem is to use
Nailgun for a long-running server process. I've gotten this working in
some respects, but I get a "Unexpected chunk type 83 ('S')" error quite
often when I'm trying to read from the stdin that the nailgun context
provides.

(ns nailgun.example
  (:use [clojure.contrib.duck-streams])
  (:import [com.martiansoftware.nailgun NGServer NGContext]
           [java.io BufferedReader InputStreamReader
            OutputStreamWriter PrintWriter])
  (:gen-class))

(gen-class :name nailgun.Example
           :prefix "Example-"
           :methods [#^{:static true}
                     [nailMain [com.martiansoftware.nailgun.NGContext] void]]
           :main false)

(defn Example-nailMain
  [#^NGContext context]
  (let [out (writer (-> context .out))]
    (copy (-> context .in) out)
    (.flush out)))

(defn -main []
  (.start (Thread. (NGServer.))))

I compile this, and then run the nailgun.example class. Then I try to
connect via the ng client:

p...@dynabook ~ $ echo "hello" | ng nailgun.Example
Unexpected chunk type 83 ('S')
bash: echo: write error: Broken pipe
p...@dynabook ~ $ echo "hello" | ng nailgun.Example
p...@dynabook ~ $ echo "hello" | ng nailgun.Example
p...@dynabook ~ $ echo "hello" | ng nailgun.Example
Unexpected chunk type 83 ('S')
bash: echo: write error: Broken pipe
p...@dynabook ~ $ echo "hello" | ng nailgun.Example
p...@dynabook ~ $ echo "hello" | ng nailgun.Example
Unexpected chunk type 83 ('S')

I've taken a look at the "nails.clj" file in vimclojure since I know
that it uses nailgun. The only difference seems to be that it wraps the
context's input stream in a LineNumberingPushbackReader as well as an
InputStreamReader, but that doesn't seem to make a difference.

Any ideas what I'm doing wrong? How is this supposed to be used?

thanks,
Phil

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to