Skip to content

Instantly share code, notes, and snippets.

@minimal
Created March 19, 2010 17:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save minimal/337961 to your computer and use it in GitHub Desktop.
Save minimal/337961 to your computer and use it in GitHub Desktop.
(def run-rpc
(fn*
([arg03319 arg13320]
(let*
[args
nil
socket
nil
failuren3322
(fn*
([args socket]
(let*
[args
nil
socket
nil
failuren3332
(fn*
([args socket]
(let*
[]
(let*
[matching3345 arg03319]
(let*
[matching3346 arg13320]
(throw
(new
java.lang.IllegalArgumentException
"Failed to match arguments")))))))]
(let*
[matching3335 arg03319]
(if (map? matching3335)
(let*
[keyn3336 "_action"]
(if (contains? matching3335 keyn3336)
(let*
[valuen3337 (get matching3335 keyn3336)]
(if (= valuen3337 "stop-queue")
(let*
[keyn3338 "args"]
(if (contains? matching3335 keyn3338)
(let*
[valuen3339
(get matching3335 keyn3338)]
(let*
[args valuen3339]
(let*
[matching3340 arg13320]
(let*
[socket matching3340]
(do (stop-queue args socket))))))
(failuren3332 args socket)))
(failuren3332 args socket)))
(failuren3332 args socket)))
(failuren3332 args socket))))))]
(let*
[matching3325 arg03319]
(if (map? matching3325)
(let*
[keyn3326 "_action"]
(if (contains? matching3325 keyn3326)
(let*
[valuen3327 (get matching3325 keyn3326)]
(if (= valuen3327 "start-queue")
(let*
[keyn3328 "args"]
(if (contains? matching3325 keyn3328)
(let*
[valuen3329 (get matching3325 keyn3328)]
(let*
[args valuen3329]
(let*
[matching3330 arg13320]
(let*
[socket matching3330]
(do (start-queue args socket))))))
(failuren3322 args socket)))
(failuren3322 args socket)))
(failuren3322 args socket)))
(failuren3322 args socket)))))))
;; matchure function matching
(defn-match run-rpc
"Use matchure to handle actions
- XXX: on clojure 1.2 read-json uses :keywords instead of strings"
([{"_action" "start-queue", "args" ?args} ?socket]
(start-queue args socket))
([{"_action" "stop-queue", "args" ?args} ?socket]
(stop-queue args socket)))
;; Old
(defn get-stuff
"Get some stuff"
[args websocket])
(def rpc-methods
{"get" get-stuff
"put" put-stuff})
(defn handle-rpc
"Dispatch a websocket message to the correct method"
[action args websocket]
((rpc-methods action) args websocket))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment