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

com.uber.jaeger.context.TracedExecutorService Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2016, Uber Technologies, Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package com.uber.jaeger.context;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class TracedExecutorService implements ExecutorService {
  private final ExecutorService delegate;
  private final TraceContext traceContext;

  public TracedExecutorService(ExecutorService delegate, TraceContext traceContext) {
    this.delegate = delegate;
    this.traceContext = traceContext;
  }

  @Override
  public void shutdown() {
    delegate.shutdown();
  }

  @Override
  public List shutdownNow() {
    return delegate.shutdownNow();
  }

  @Override
  public boolean isShutdown() {
    return delegate.isShutdown();
  }

  @Override
  public boolean isTerminated() {
    return delegate.isTerminated();
  }

  @Override
  public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
    return delegate.awaitTermination(timeout, unit);
  }

  @Override
  public  Future submit(java.util.concurrent.Callable task) {
    return delegate.submit(new Callable(task, traceContext));
  }

  @Override
  public  Future submit(java.lang.Runnable task, T result) {
    return delegate.submit(new Runnable(task, traceContext), result);
  }

  @Override
  public Future submit(java.lang.Runnable task) {
    return delegate.submit(new Runnable(task, traceContext));
  }

  @Override
  public  List> invokeAll(Collection> tasks)
      throws InterruptedException {
    return delegate.invokeAll(wrapJaegerCallableCollection(tasks));
  }

  @Override
  public  List> invokeAll(
      Collection> tasks, long timeout, TimeUnit unit)
      throws InterruptedException {
    return delegate.invokeAll(wrapJaegerCallableCollection(tasks), timeout, unit);
  }

  @Override
  public  T invokeAny(Collection> tasks)
      throws InterruptedException, ExecutionException {
    return delegate.invokeAny(wrapJaegerCallableCollection(tasks));
  }

  @Override
  public  T invokeAny(
      Collection> tasks, long timeout, TimeUnit unit)
      throws InterruptedException, ExecutionException, TimeoutException {
    return delegate.invokeAny(wrapJaegerCallableCollection(tasks), timeout, unit);
  }

  @Override
  public void execute(final java.lang.Runnable command) {
    delegate.execute(new Runnable(command, traceContext));
  }

  private  Collection> wrapJaegerCallableCollection(
      Collection> originalCollection) {
    Collection> collection =
        new ArrayList>(originalCollection.size());
    for (java.util.concurrent.Callable c : originalCollection) {
      collection.add(new Callable(c, traceContext));
    }
    return collection;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy