All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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