aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-10-25 04:45:21 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2014-10-25 04:46:59 +0200
commit096b35f93a0bafb3b0b6932d75e8d5f087cd4b2e (patch)
tree156f73c7b2145b21930d52275e47cb8b674bb27a /kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
parent30940181424be69e0fd64e945fe5a64b4523457b (diff)
downloadKamon-096b35f93a0bafb3b0b6932d75e8d5f087cd4b2e.tar.gz
Kamon-096b35f93a0bafb3b0b6932d75e8d5f087cd4b2e.tar.bz2
Kamon-096b35f93a0bafb3b0b6932d75e8d5f087cd4b2e.zip
! core: replace Option[TraceContext] by empty object pattern and implement basic segments with renaming.
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/TraceLocal.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/trace/TraceLocal.scala14
1 files changed, 8 insertions, 6 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala b/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
index 3ff074b6..0766af74 100644
--- a/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
+++ b/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
@@ -24,18 +24,20 @@ object TraceLocal {
type ValueType
}
- def store(key: TraceLocalKey)(value: key.ValueType): Unit =
- TraceRecorder.currentContext.map(_.traceLocalStorage.store(key)(value))
-
- def retrieve(key: TraceLocalKey): Option[key.ValueType] =
- TraceRecorder.currentContext.flatMap(_.traceLocalStorage.retrieve(key))
+ def store(key: TraceLocalKey)(value: key.ValueType): Unit = TraceRecorder.currentContext match {
+ case ctx: DefaultTraceContext ⇒ ctx.traceLocalStorage.store(key)(value)
+ case EmptyTraceContext ⇒ // Can't store in the empty context.
+ }
+ def retrieve(key: TraceLocalKey): Option[key.ValueType] = TraceRecorder.currentContext match {
+ case ctx: DefaultTraceContext ⇒ ctx.traceLocalStorage.retrieve(key)
+ case EmptyTraceContext ⇒ None // Can't retrieve anything from the empty context.
+ }
}
class TraceLocalStorage {
val underlyingStorage = TrieMap[TraceLocal.TraceLocalKey, Any]()
def store(key: TraceLocalKey)(value: key.ValueType): Unit = underlyingStorage.put(key, value)
-
def retrieve(key: TraceLocalKey): Option[key.ValueType] = underlyingStorage.get(key).map(_.asInstanceOf[key.ValueType])
}