diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2014-04-03 09:21:15 -0300 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-04-03 09:21:15 -0300 |
commit | 0819320d7f20c78ad096c21c6aedb3536758792b (patch) | |
tree | caa0a0a9052663531583d343a7639ef92d335782 /kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala | |
parent | 4026aa0269f6aad0bc1acaf837fc51f4f0da504e (diff) | |
download | Kamon-0819320d7f20c78ad096c21c6aedb3536758792b.tar.gz Kamon-0819320d7f20c78ad096c21c6aedb3536758792b.tar.bz2 Kamon-0819320d7f20c78ad096c21c6aedb3536758792b.zip |
minor reorganization and includes filter
Diffstat (limited to 'kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala')
-rw-r--r-- | kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala | 32 |
1 files changed, 3 insertions, 29 deletions
diff --git a/kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala b/kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala index 96d83eb8..cff7a4a1 100644 --- a/kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala +++ b/kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala @@ -22,7 +22,6 @@ import java.net.InetSocketAddress import akka.util.ByteString class StatsdMetricsSender(statPrefix: String, remote: InetSocketAddress) extends Actor with ActorLogging { - import StatsdMetricsSender._ import context.system IO(Udp) ! Udp.SimpleSender @@ -33,39 +32,14 @@ class StatsdMetricsSender(statPrefix: String, remote: InetSocketAddress) extends } def ready(send: ActorRef): Receive = { - case metric: StatsdMetric ⇒ - send ! Udp.Send(toByteString(statPrefix, metric), remote) + // TODO: batch writes + case metric: StatsD.Metric ⇒ + send ! Udp.Send(metric.toByteString, remote) case _ ⇒ log.error("Unknown Metric") } } object StatsdMetricsSender { - - sealed trait StatsdMetric - - case class Counter(key: String, value: Long = 1, suffix: String = "c", samplingRate: Double = 1.0) extends StatsdMetric - case class Timing(key: String, millis: Long, suffix: String = "ms", samplingRate: Double = 1.0) extends StatsdMetric - case class Gauge(key: String, value: Long, suffix: String = "g", samplingRate: Double = 1.0) extends StatsdMetric - def props(statPrefix: String, remote: InetSocketAddress): Props = Props(new StatsdMetricsSender(statPrefix, remote)) - - def toByteString(statPrefix: String, metric: StatsdMetric): ByteString = metric match { - case Counter(key, value, suffix, samplingRate) ⇒ statFor(statPrefix, key, value, suffix, samplingRate) - case Timing(key, value, suffix, samplingRate) ⇒ statFor(statPrefix, key, value, suffix, samplingRate) - case Gauge(key, value, suffix, samplingRate) ⇒ statFor(statPrefix, key, value, suffix, samplingRate) - } - - /* - * Creates the stat string to send to statsd. - * For counters, it provides something like {@code key:value|c}. - * For timing, it provides something like {@code key:millis|ms}. - * If sampling rate is less than 1, it provides something like {@code key:value|type|@rate} - */ - private[this] def statFor(statPrefix: String, key: String, value: Long, suffix: String, samplingRate: Double): ByteString = { - samplingRate match { - case x if x >= 1.0 ⇒ ByteString(s"$statPrefix.$key:$value|$suffix") - case _ ⇒ ByteString(s"$statPrefix.$key:$value|$suffix|@$samplingRate") - } - } }
\ No newline at end of file |