diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2017-07-14 14:12:47 +0200 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2017-07-14 14:12:47 +0200 |
commit | 34010efc7b273e50d805a277646f14aa96aaa8b2 (patch) | |
tree | 8f7a6f00eac4e0a4cb60c9093b3c5d06ed982662 /kamon-core/src/main/scala/kamon/trace/Sampler.scala | |
parent | 52c4503b6aea2309feeb550b7db2e5fa627dedc8 (diff) | |
download | Kamon-34010efc7b273e50d805a277646f14aa96aaa8b2.tar.gz Kamon-34010efc7b273e50d805a277646f14aa96aaa8b2.tar.bz2 Kamon-34010efc7b273e50d805a277646f14aa96aaa8b2.zip |
wip
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/Sampler.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/Sampler.scala | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/Sampler.scala b/kamon-core/src/main/scala/kamon/trace/Sampler.scala index 0347a151..f478bbd1 100644 --- a/kamon-core/src/main/scala/kamon/trace/Sampler.scala +++ b/kamon-core/src/main/scala/kamon/trace/Sampler.scala @@ -15,13 +15,16 @@ package kamon.trace +import java.util.concurrent.ThreadLocalRandom +import kamon.trace.SpanContext.SamplingDecision + trait Sampler { - def decide(spanID: Long): Boolean + def decide(operationName: String, builderTags: Map[String, String]): SamplingDecision } object Sampler { - val always = new Constant(true) - val never = new Constant(false) + val always = new Constant(SamplingDecision.Sample) + val never = new Constant(SamplingDecision.DoNotSample) def random(chance: Double): Sampler = { assert(chance >= 0D && chance <= 1.0D, "Change should be >= 0 and <= 1.0") @@ -33,8 +36,8 @@ object Sampler { } } - class Constant(decision: Boolean) extends Sampler { - override def decide(spanID: Long): Boolean = decision + class Constant(decision: SamplingDecision) extends Sampler { + override def decide(operationName: String, builderTags: Map[String, String]): SamplingDecision = decision override def toString: String = s"Sampler.Constant(decision = $decision)" @@ -44,8 +47,10 @@ object Sampler { val upperBoundary = Long.MaxValue * chance val lowerBoundary = -upperBoundary - override def decide(spanID: Long): Boolean = - spanID >= lowerBoundary && spanID <= upperBoundary + override def decide(operationName: String, builderTags: Map[String, String]): SamplingDecision = { + val random = ThreadLocalRandom.current().nextLong() + if(random >= lowerBoundary && random <= upperBoundary) SamplingDecision.Sample else SamplingDecision.DoNotSample + } override def toString: String = s"Sampler.Random(chance = $chance)" |