Guest User

Untitled

a guest
Dec 11th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. project.clj
  2.  
  3. (defproject tcp-test "0.1.0-SNAPSHOT"
  4. :dependencies [[org.clojure/clojure "1.4.0"]
  5. [aleph "0.3.0-SNAPSHOT"]
  6. [org.clojure/tools.cli "0.2.1"]]
  7. :main tcp-test.core)
  8.  
  9. core.clj
  10.  
  11. (ns tcp-test.core
  12. (:gen-class)
  13. (:require [clojure.tools.cli :refer :all]
  14. [aleph.tcp :refer :all]
  15. [lamina.core :refer :all]
  16. [gloss.core :refer :all]
  17. [lamina.stats :refer :all]))
  18.  
  19. (def msg (.getBytes "0123456789"))
  20.  
  21. (defn ^:private handler [channel client-info]
  22. (let [rate-channel (rate channel)]
  23. (receive-all rate-channel #(println % "fps")))
  24. (receive-all channel (fn [buffer]
  25. (let [buf (gloss.io/contiguous buffer)
  26. ary (byte-array (.remaining buf))]
  27. (.get buf ary)))))
  28.  
  29. (defn start-server [& port]
  30. (start-tcp-server handler
  31. {:port (or port 5555),
  32. :frame (finite-block :int32)}))
  33.  
  34. (defn start-client [& port]
  35. (wait-for-result
  36. (tcp-client {:host "localhost",
  37. :port (or port 5555),
  38. :frame (finite-block :int32)})))
  39.  
  40. (defn run-test
  41. []
  42. (let [client-channel (start-client)
  43. req-batch-size 100000]
  44. (on-error client-channel #(println %))
  45. (on-closed client-channel #(println "channel closed"))
  46. (future
  47. (while true
  48. ;; (Thread/sleep 1000)
  49. (dotimes [n req-batch-size]
  50. (if (closed? client-channel)
  51. (throw (Exception. "channel_closed"))
  52. (enqueue client-channel msg)))))))
  53.  
  54. (defn -main
  55. [& args]
  56. (let [[options args banner]
  57. (cli args
  58. ["--server" :default false :flag true]
  59. ["--run-test" :default false :flag true])]
  60. (when (:help options)
  61. (println banner)
  62. (System/exit 0))
  63.  
  64. (when (:server options)
  65. (start-server))
  66.  
  67. (when (:run-test options)
  68. (run-test))))
Add Comment
Please, Sign In to add comment