Ensure order of messages is preserved.

This commit is contained in:
Alexander Hudek 2015-08-10 19:37:25 -04:00
parent 34a961658b
commit 68440ee178
3 changed files with 5 additions and 4 deletions

View file

@ -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" :description "Jetty async adapter for BrowserChannel"
:url "" :url ""
:dependencies [[ring/ring-core "1.3.1"] :dependencies [[ring/ring-core "1.3.1"]
[ring/ring-servlet "1.3.1"] [ring/ring-servlet "1.3.1"]
[org.eclipse.jetty/jetty-server "8.1.16.v20140903"];; includes ssl [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 :profiles {:provided
{:dependencies {:dependencies
[[org.clojure/clojure "1.6.0"]]}}) [[org.clojure/clojure "1.6.0"]]}})

View file

@ -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" :description "BrowserChannel server implementation in Clojure"
:dependencies [[ring/ring-core "1.3.1"] :dependencies [[ring/ring-core "1.3.1"]
[org.clojure/data.json "0.2.5"]] [org.clojure/data.json "0.2.5"]]

View file

@ -89,8 +89,9 @@
{:ofs (Long/parseLong ofs) {:ofs (Long/parseLong ofs)
:maps (->> (for [[k v] pieces] :maps (->> (for [[k v] pieces]
(let [[_ n k] (re-find #"req(\d+)_(\w+)" k)] (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]]]} (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 %)))))})) (map #(into {} (map second (val %)))))}))
(assert (= {:ofs 0 :maps [{"x" "3" "y" "10"} {"abc" "def"}]} (assert (= {:ofs 0 :maps [{"x" "3" "y" "10"} {"abc" "def"}]}