use cadence::prelude::*;
use cadence::test::UnixServerHarness;
use cadence::{StatsdClient, UnixMetricSink};
use std::os::unix::net::UnixDatagram;
use std::time::Duration;
fn main() {
let harness = UnixServerHarness::new("unix-socket-example");
harness.run(
|s: String| println!("Got {} bytes from socket: {}", s.len(), s),
|path| {
let socket = UnixDatagram::unbound().unwrap();
let sink = UnixMetricSink::from(path, socket);
let client = StatsdClient::from_sink("example.prefix", sink);
client.count("example.counter", 1).unwrap();
client.gauge("example.gauge", 5).unwrap();
client.gauge("example.gauge", 5.0).unwrap();
client.time("example.timer", 32).unwrap();
client.time("example.timer", Duration::from_millis(32)).unwrap();
client.histogram("example.histogram", 22).unwrap();
client.histogram("example.histogram", Duration::from_nanos(22)).unwrap();
client.histogram("example.histogram", 22.0).unwrap();
client.distribution("example.distribution", 33).unwrap();
client.distribution("example.distribution", 33.0).unwrap();
client.meter("example.meter", 8).unwrap();
client.set("example.set", 44).unwrap();
},
);
}