aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/TraceContext.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/trace/TraceContext.scala35
1 files changed, 20 insertions, 15 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
index eee2ec14..6bf82ac1 100644
--- a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
+++ b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
@@ -19,6 +19,7 @@ package kamon.trace
import java.io.ObjectStreamException
import java.util
+import kamon.trace.States.{ Closed, Status }
import kamon.trace.TraceContextAware.DefaultTraceContextAware
import kamon.util.{ Function, RelativeNanoTimestamp, SameThreadExecutionContext, Supplier }
@@ -29,19 +30,16 @@ trait TraceContext {
def token: String
def isEmpty: Boolean
def nonEmpty: Boolean = !isEmpty
- def isOpen: Boolean
- def isClosed: Boolean = !isOpen
-
+ def isClosed: Boolean = !(States.Open == status)
+ def status: Status
def finish(): Unit
+ def finishWithError(cause: Throwable): Unit
def rename(newName: String): Unit
-
def startSegment(segmentName: String, category: String, library: String): Segment
def startSegment(segmentName: String, category: String, library: String, tags: Map[String, String]): Segment
def addMetadata(key: String, value: String)
-
def addTag(key: String, value: String): Unit
def removeTag(key: String, value: String): Boolean
-
def startTimestamp: RelativeNanoTimestamp
def collect[T](f: TraceContext ⇒ T): Option[T] =
@@ -90,13 +88,12 @@ trait Segment {
def library: String
def isEmpty: Boolean
def nonEmpty: Boolean = !isEmpty
- def isOpen: Boolean
- def isClosed: Boolean = !isOpen
-
+ def isClosed: Boolean = !(States.Open == status)
+ def status: Status
def finish(): Unit
+ def finishWithError(cause: Throwable): Unit
def rename(newName: String): Unit
def addMetadata(key: String, value: String): Unit
-
def addTag(key: String, value: String): Unit
def removeTag(key: String, value: String): Boolean
}
@@ -105,9 +102,9 @@ case object EmptyTraceContext extends TraceContext {
def name: String = "empty-trace"
def token: String = ""
def isEmpty: Boolean = true
- def isOpen: Boolean = false
-
+ def status: Status = Closed
def finish(): Unit = {}
+ def finishWithError(cause: Throwable): Unit = {}
def rename(name: String): Unit = {}
def startSegment(segmentName: String, category: String, library: String): Segment = EmptySegment
def startSegment(segmentName: String, category: String, library: String, tags: Map[String, String]): Segment = EmptySegment
@@ -123,9 +120,9 @@ case object EmptyTraceContext extends TraceContext {
val category: String = "empty-category"
val library: String = "empty-library"
def isEmpty: Boolean = true
- def isOpen: Boolean = false
-
- def finish: Unit = {}
+ def status: Status = Closed
+ def finish(): Unit = {}
+ def finishWithError(cause: Throwable): Unit = {}
def rename(newName: String): Unit = {}
def addMetadata(key: String, value: String): Unit = {}
def addTag(key: String, value: String): Unit = {}
@@ -151,6 +148,14 @@ object LevelOfDetail {
case object FullTrace extends LevelOfDetail
}
+object States {
+ sealed trait Status
+ case object Open extends Status
+ case object Closed extends Status
+ case object FinishedWithError extends Status
+ case object FinishedSuccessfully extends Status
+}
+
trait TraceContextAware extends Serializable {
def traceContext: TraceContext
}