I needed a library  to handle marshaling application defined (C
struct) binary TCP/IP protocol packets in a Clojure client app
replacing a legacy C++ client and there didn't seem to be an existing
library that performed as I needed. So, I've written a Marshal library
that marshals from the network to/from Clojure.

Github: http://github.com/russellc/Marshal
Clojars: https://clojars.org/marshal

//C header file definition
struct packet {
unsigned long type;
unsigned long size;
long data[1];
};

(require '[marshal.core :as m])
(def packet (m/struct :type m/uint32 :size m/uint32 :data (m/array m/
sint32 :size)))
(m/write output-stream packet {:type 1 :size 2 :data [1 -1]})
(m/read input-stream packet)
=> {:type 1 :size 2 :data [1 -1]}

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