From 68440ee17889c70a1df50a56063da13da01f937d Mon Sep 17 00:00:00 2001 From: Alexander Hudek Date: Mon, 10 Aug 2015 19:37:25 -0400 Subject: [PATCH] Ensure order of messages is preserved. --- clj-browserchannel-jetty-adapter/project.clj | 4 ++-- clj-browserchannel-server/project.clj | 2 +- clj-browserchannel-server/src/net/thegeez/browserchannel.clj | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/clj-browserchannel-jetty-adapter/project.clj b/clj-browserchannel-jetty-adapter/project.clj index 9180b4e..caf8cab 100644 --- a/clj-browserchannel-jetty-adapter/project.clj +++ b/clj-browserchannel-jetty-adapter/project.clj @@ -1,10 +1,10 @@ -(defproject net.thegeez/clj-browserchannel-jetty-adapter "0.0.6" +(defproject net.thegeez/clj-browserchannel-jetty-adapter "0.0.7" :description "Jetty async adapter for BrowserChannel" :url "" :dependencies [[ring/ring-core "1.3.1"] [ring/ring-servlet "1.3.1"] [org.eclipse.jetty/jetty-server "8.1.16.v20140903"];; includes ssl - [net.thegeez/clj-browserchannel-server "0.1.0"]] + [net.thegeez/clj-browserchannel-server "0.2.0"]] :profiles {:provided {:dependencies [[org.clojure/clojure "1.6.0"]]}}) diff --git a/clj-browserchannel-server/project.clj b/clj-browserchannel-server/project.clj index 5748f2a..abd1d3d 100644 --- a/clj-browserchannel-server/project.clj +++ b/clj-browserchannel-server/project.clj @@ -1,4 +1,4 @@ -(defproject net.thegeez/clj-browserchannel-server "0.1.0" +(defproject net.thegeez/clj-browserchannel-server "0.2.0" :description "BrowserChannel server implementation in Clojure" :dependencies [[ring/ring-core "1.3.1"] [org.clojure/data.json "0.2.5"]] diff --git a/clj-browserchannel-server/src/net/thegeez/browserchannel.clj b/clj-browserchannel-server/src/net/thegeez/browserchannel.clj index e97507a..cd7c75a 100644 --- a/clj-browserchannel-server/src/net/thegeez/browserchannel.clj +++ b/clj-browserchannel-server/src/net/thegeez/browserchannel.clj @@ -89,8 +89,9 @@ {:ofs (Long/parseLong ofs) :maps (->> (for [[k v] pieces] (let [[_ n k] (re-find #"req(\d+)_(\w+)" k)] - [n {k v}])) + [(Long/parseLong n) {k v}])) (group-by first) ; {0 [[0 [k1 v2]] [0 [k2 v2]]],1 [[1 [k1 v1]] [1 [k2 v2]]]} + (sort-by first) ;; order by request number so that messages are recieved on server in same order (map #(into {} (map second (val %)))))})) (assert (= {:ofs 0 :maps [{"x" "3" "y" "10"} {"abc" "def"}]}