diff options
author | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-07 18:41:33 -0300 |
---|---|---|
committer | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-07 18:41:33 -0300 |
commit | bf86900669d649308f4914c54e6fe076510506a6 (patch) | |
tree | d8bf9af9f5c8a946d757137a303f6956c05edb03 /kamon-newrelic/src/main/scala/kamon/newrelic/AgentJsonProtocol.scala | |
parent | 2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1 (diff) | |
download | Kamon-bf86900669d649308f4914c54e6fe076510506a6.tar.gz Kamon-bf86900669d649308f4914c54e6fe076510506a6.tar.bz2 Kamon-bf86900669d649308f4914c54e6fe076510506a6.zip |
halfway to our own NewRelic Agent
Diffstat (limited to 'kamon-newrelic/src/main/scala/kamon/newrelic/AgentJsonProtocol.scala')
-rw-r--r-- | kamon-newrelic/src/main/scala/kamon/newrelic/AgentJsonProtocol.scala | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/kamon-newrelic/src/main/scala/kamon/newrelic/AgentJsonProtocol.scala b/kamon-newrelic/src/main/scala/kamon/newrelic/AgentJsonProtocol.scala new file mode 100644 index 00000000..30e17e77 --- /dev/null +++ b/kamon-newrelic/src/main/scala/kamon/newrelic/AgentJsonProtocol.scala @@ -0,0 +1,56 @@ +package kamon.newrelic + +import spray.json._ +import kamon.newrelic.Agent._ + +object AgentJsonProtocol extends DefaultJsonProtocol { + + implicit object ConnectJsonWriter extends RootJsonWriter[AgentInfo] { + def write(obj: AgentInfo): JsValue = + JsArray( + JsObject( + "agent_version" -> JsString("3.1.0"), + "app_name" -> JsArray(JsString(obj.appName)), + "host" -> JsString(obj.host), + "identifier" -> JsString(s"java:${obj.appName}"), + "language" -> JsString("java"), + "pid" -> JsNumber(obj.pid) + ) + ) + } + + import NewRelicMetric._ + + implicit def listWriter[T : JsonWriter] = new JsonWriter[List[T]] { + def write(list: List[T]) = JsArray(list.map(_.toJson)) + } + + implicit object MetricDetailWriter extends JsonWriter[(ID, Data)] { + def write(obj: (ID, Data)): JsValue = { + val (id, data) = obj + JsArray( + JsObject( + "name" -> JsString(id.name) // TODO Include scope + ), + JsArray( + JsNumber(data.total), + JsNumber(data.totalExclusive), + JsNumber(data.min), + JsNumber(data.max), + JsNumber(data.sumOfSquares), + JsNumber(data.callCount) + ) + ) + } + } + + implicit object MetricDataWriter extends RootJsonWriter[MetricData] { + def write(obj: MetricData): JsValue = + JsArray( + JsNumber(obj.runId), + JsNumber(obj.start), + JsNumber(obj.end), + obj.metrics.toJson + ) + } +} |