@@ -3,14 +3,17 @@ package scribe.mdc
3
3
import scribe .util .Time
4
4
import perfolation ._
5
5
6
+ import java .util .concurrent .ConcurrentHashMap
7
+ import scala .jdk .CollectionConverters ._
8
+
6
9
class MDCMap (parent : Option [MDC ]) extends MDC {
7
- private var _map : Map [String , () => Any ] = Map .empty
10
+ private val _map = new ConcurrentHashMap [String , () => Any ]
8
11
9
- override def map : Map [String , () => Any ] = _map
12
+ override def map : Map [String , () => Any ] = _map.asScala.toMap
10
13
11
- override def get (key : String ): Option [() => Any ] = _map.get(key).orElse(parent.flatMap(_.get(key)))
14
+ override def get (key : String ): Option [() => Any ] = Option ( _map.get(key) ).orElse(parent.flatMap(_.get(key)))
12
15
13
- override def update (key : String , value : => Any ): Unit = _map = _map + (key -> (( ) => value) )
16
+ override def update (key : String , value : => Any ): Unit = _map.put (key, ( ) => value)
14
17
15
18
override def contextualize [Return ](key : String , value : => Any )(f : => Return ): Return = {
16
19
update(key, value)
@@ -26,9 +29,9 @@ class MDCMap(parent: Option[MDC]) extends MDC {
26
29
update(key, s " ${((timeFunction() - start) / 1000.0 ).f()}s " )
27
30
}
28
31
29
- override def remove (key : String ): Unit = _map = _map - key
32
+ override def remove (key : String ): Unit = _map.remove( key)
30
33
31
34
override def contains (key : String ): Boolean = map.contains(key)
32
35
33
- override def clear (): Unit = _map = Map .empty
36
+ override def clear (): Unit = _map.clear()
34
37
}
0 commit comments