metrics-clojure / metrics-clojure-core / src / metrics / gauges.clj

Diff from to

metrics-clojure-core/src/metrics/gauges.clj

                      (proxy [Gauge] []
                        (value [] (do ~@body)))))
 
-
-; Read ------------------------------------------------------------------------
 (defn gauge-fn
   "Create a new Gauge metric with the given title.
 
                     (proxy [Gauge] []
                       (value [] (f)))))
 
+(defmacro defgauge [title & body]
+  "Define a new Gauge metric with the given title.
+
+   The rest of the arguments may be a body form or function to call to
+   retrieve the value of the Gauge"
+  (cond (and (= 1 (count body)) (and (symbol? (first body))
+                                     (fn? (eval (first body)))))
+        `(gauge-fn ~(str title) ~(first body))
+        true
+        `(gauge ~(str title) ~@body)))
+
 
 ; Read ------------------------------------------------------------------------
 (defn value
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.