Skip to content

Instantly share code, notes, and snippets.

@shlomiv
Last active August 29, 2015 13:56
Show Gist options
  • Save shlomiv/8878592 to your computer and use it in GitHub Desktop.
Save shlomiv/8878592 to your computer and use it in GitHub Desktop.
(ns client-test
(:use [lamina.core]
[aleph.tcp]
[aleph.netty.core]
[gloss.core]
[gloss.io])
(:gen-class))
(def chopped-codec
(finite-frame
(prefix :int32)
[:uuid :int32 (repeated (finite-frame (prefix :int16) (string :utf8)) :prefix :none)]))
(defn start-client []
(let [client (tcp-client
{:host "127.0.0.1" :port 9997 :encoder chopped-codec :decoder chopped-codec})]
(receive-all @client (fn [msg] (println msg))
client))
(defn -main []
(let [client (start-client)]
(enqueue @client (chopped-codec (encode chopped-codec [:uuid 199 ["first" "second"]))))
(ns server-test
(:use [lamina.core]
[aleph.tcp]
[aleph.netty.core]
[gloss.core]
[gloss.io]
)
(:gen-class))
(def chopped-codec
(finite-frame
(prefix :int32)
[:uuid :int32 (repeated (finite-frame (prefix :int16) (string :utf8)) :prefix :none)]))
;; a simple echo server
(defn response-byte-buffer [msg]
msg)
(defn handler [ch client-info]
"handler for incoming tcp messages"
(siphon (map* response-byte-buffer ch) ch))
(defn start-server [] (start-tcp-server
handler
{:port 9997 :encoder chopped-codec :decoder chopped-codec}))
(defn -main []
(start-server)
(Thread/sleep 100000000))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment