зеркало из https://github.com/microsoft/statsd.git
add clojure client to examples
This commit is contained in:
Родитель
7c9ba1a0b9
Коммит
d77b893da3
|
@ -0,0 +1,49 @@
|
|||
(ns statsd-client
|
||||
"a simple StatsD client written in Clojure
|
||||
|
||||
Usage:
|
||||
statsd-client/increment 'foo
|
||||
statsd-client/decrement 'foo
|
||||
statsd-client/increment 'foo 1
|
||||
statsd-client/decrement 'foo 1
|
||||
statsd-client/gauge 'foo 1
|
||||
statsd-client/timing 'foo 1
|
||||
"
|
||||
(:import (java.net InetAddress DatagramPacket DatagramSocket)))
|
||||
|
||||
(def server-address "127.0.0.1")
|
||||
(def server-port 8125)
|
||||
|
||||
; UDP helper functions
|
||||
(defn make-socket
|
||||
([] (new DatagramSocket))
|
||||
([port] (new DatagramSocket port)))
|
||||
|
||||
(defn send-data [send-socket ip port data]
|
||||
(let [ipaddress (InetAddress/getByName ip),
|
||||
send-packet (new DatagramPacket (.getBytes data) (.length data) ipaddress port)]
|
||||
(.send send-socket send-packet)))
|
||||
|
||||
(defn make-send [ip port]
|
||||
(let [send-socket (make-socket)]
|
||||
(fn [data] (send-data send-socket ip port data))))
|
||||
|
||||
(def send-msg (make-send server-address server-port))
|
||||
|
||||
; statsd client functions
|
||||
(defn increment
|
||||
([metric] (increment metric 1))
|
||||
([metric value]
|
||||
(send-msg (str metric ":" value "|c"))))
|
||||
|
||||
(defn decrement
|
||||
([metric] (increment metric -1))
|
||||
([metric value]
|
||||
(send-msg (str metric ":" value "|c"))))
|
||||
|
||||
(defn timing [metric value]
|
||||
(send-msg (str metric ":" value "|ms")))
|
||||
|
||||
(defn gauge [metric value]
|
||||
(send-msg (str metric ":" value "|g")))
|
||||
|
Загрузка…
Ссылка в новой задаче