
com.undefinedlabs.scope.scopemanager.DistributedContextScope Maven / Gradle / Ivy
package com.undefinedlabs.scope.scopemanager;
import com.undefinedlabs.scope.context.ImmutableContext;
import io.opentracing.Scope;
import io.opentracing.Span;
import java.util.UUID;
public class DistributedContextScope implements Scope {
private final String scopeId;
private final ImmutableContext origContext;
private final Span span;
private final boolean finishOnClose;
DistributedContextScope(final Span span) {
this(span, false);
}
DistributedContextScope(final Span span, final boolean finishOnClose) {
scopeId = UUID.randomUUID().toString();
this.span = span;
this.finishOnClose = finishOnClose;
final ImmutableContext context =
DistributedContextScopeUtils.withValue(ImmutableContext.current(), this);
origContext = context.attach();
}
@Override
public void close() {
ImmutableContext.current().detach(origContext);
if (finishOnClose) {
span.finish();
}
}
Span span() {
return span;
}
@Override
public String toString() {
return "ScopeSpan[" + scopeId + "]";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy