diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2014-11-09 22:55:43 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-11-09 22:56:03 +0100 |
commit | 447605e612d5bbea9765ede288ba19b1a69af48c (patch) | |
tree | 9777130efb47e31bbf262c047cb875d1cdc4724c /kamon-core/src/main | |
parent | 0bb57412690b8694f742d479213bda6f7f090630 (diff) | |
download | Kamon-447605e612d5bbea9765ede288ba19b1a69af48c.tar.gz Kamon-447605e612d5bbea9765ede288ba19b1a69af48c.tar.bz2 Kamon-447605e612d5bbea9765ede288ba19b1a69af48c.zip |
+ core,play,spray: allow segments to identify the library they belong to.
Diffstat (limited to 'kamon-core/src/main')
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/TraceContext.scala | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala index 9555daba..5b74e6b2 100644 --- a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala +++ b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala @@ -37,14 +37,15 @@ sealed trait TraceContext { def isClosed: Boolean = !isOpen def isEmpty: Boolean def nonEmpty: Boolean = !isEmpty - def startSegment(segmentName: String, label: String): Segment + def startSegment(segmentName: String, category: String, library: String): Segment def nanoTimestamp: Long } sealed trait Segment { def name: String def rename(newName: String): Unit - def label: String + def category: String + def library: String def finish(): Unit def isEmpty: Boolean } @@ -57,12 +58,13 @@ case object EmptyTraceContext extends TraceContext { def origin: TraceContextOrigin = TraceContextOrigin.Local def isOpen: Boolean = false def isEmpty: Boolean = true - def startSegment(segmentName: String, label: String): Segment = EmptySegment + def startSegment(segmentName: String, category: String, library: String): Segment = EmptySegment def nanoTimestamp: Long = 0L case object EmptySegment extends Segment { val name: String = "empty-segment" - val label: String = "empty-label" + val category: String = "empty-category" + val library: String = "empty-library" def isEmpty: Boolean = true def rename(newName: String): Unit = {} def finish: Unit = {} @@ -99,7 +101,7 @@ class DefaultTraceContext(traceName: String, val token: String, izOpen: Boolean, } } - def startSegment(segmentName: String, segmentLabel: String): Segment = new DefaultSegment(segmentName, segmentLabel) + def startSegment(segmentName: String, category: String, library: String): Segment = new DefaultSegment(segmentName, category, library) @tailrec private def drainFinishedSegments(metricRecorder: TraceMetricRecorder): Unit = { val segment = finishedSegments.poll() @@ -109,8 +111,8 @@ class DefaultTraceContext(traceName: String, val token: String, izOpen: Boolean, } } - private def finishSegment(segmentName: String, label: String, duration: Long): Unit = { - finishedSegments.add(SegmentData(SegmentMetricIdentity(segmentName, label), duration)) + private def finishSegment(segmentName: String, category: String, library: String, duration: Long): Unit = { + finishedSegments.add(SegmentData(SegmentMetricIdentity(segmentName, category, library), duration)) if (isClosed) { metricsExtension.register(TraceMetrics(name), TraceMetrics.Factory).map { traceMetrics ⇒ @@ -119,7 +121,7 @@ class DefaultTraceContext(traceName: String, val token: String, izOpen: Boolean, } } - class DefaultSegment(segmentName: String, val label: String) extends Segment { + class DefaultSegment(segmentName: String, val category: String, val library: String) extends Segment { private val _segmentStartNanoTime = System.nanoTime() @volatile private var _segmentName = segmentName @volatile private var _isOpen = true @@ -130,15 +132,15 @@ class DefaultTraceContext(traceName: String, val token: String, izOpen: Boolean, def finish: Unit = { val segmentFinishNanoTime = System.nanoTime() - finishSegment(name, label, (segmentFinishNanoTime - _segmentStartNanoTime)) + finishSegment(name, category, library, (segmentFinishNanoTime - _segmentStartNanoTime)) } } } -case class SegmentMetricIdentity(name: String, label: String) extends MetricIdentity +case class SegmentMetricIdentity(name: String, category: String, library: String) extends MetricIdentity case class SegmentData(identity: SegmentMetricIdentity, duration: Long) -object SegmentMetricIdentityLabel { +object SegmentCategory { val HttpClient = "http-client" } |