package org.stagemonitor.tracing;
import java.util.Collections;
import java.util.Map;
import io.opentracing.Span;
import io.opentracing.SpanContext;
import io.opentracing.Tracer;
import io.opentracing.propagation.Format;
public final class NoopTracer implements Tracer {
public static final Tracer INSTANCE = new NoopTracer();
private NoopTracer() {
}
@Override
public SpanBuilder buildSpan(String operationName) {
return NoopSpanBuilder.INSTANCE;
}
@Override
public <C> void inject(SpanContext spanContext, Format<C> format, C carrier) {
}
@Override
public <C> SpanContext extract(Format<C> format, C carrier) {
return NoopSpan.NoopSpanContext.INSTANCE;
}
private final static class NoopSpanBuilder implements SpanBuilder {
private static final NoopSpanBuilder INSTANCE = new NoopSpanBuilder();
@Override
public SpanBuilder asChildOf(SpanContext parent) {
return this;
}
@Override
public SpanBuilder asChildOf(Span parent) {
return this;
}
@Override
public SpanBuilder addReference(String referenceType, SpanContext referencedContext) {
return this;
}
@Override
public SpanBuilder withTag(String key, String value) {
return this;
}
@Override
public SpanBuilder withTag(String key, boolean value) {
return this;
}
@Override
public SpanBuilder withTag(String key, Number value) {
return this;
}
@Override
public SpanBuilder withStartTimestamp(long microseconds) {
return this;
}
@Override
public Span start() {
return NoopSpan.INSTANCE;
}
@Override
public Iterable<Map.Entry<String, String>> baggageItems() {
return Collections.emptyList();
}
}
}