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

org.apache.rocketmq.shaded.io.opentelemetry.sdk.logs.MultiLogProcessor Maven / Gradle / Ivy

There is a newer version: 5.0.7
Show newest version
/*
 * Copyright The OpenTelemetry Authors
 * SPDX-License-Identifier: Apache-2.0
 */

package org.apache.rocketmq.shaded.io.opentelemetry.sdk.logs;

import org.apache.rocketmq.shaded.io.opentelemetry.sdk.common.CompletableResultCode;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.logs.data.LogData;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;

/**
 * Implementation of {@link LogProcessor} that forwards all logs to a list of {@link LogProcessor}s.
 */
final class MultiLogProcessor implements LogProcessor {

  private final List logProcessors;
  private final AtomicBoolean isShutdown = new AtomicBoolean(false);

  /**
   * Create a new {@link MultiLogProcessor}.
   *
   * @param logProcessorsList list of log processors to forward logs to
   * @return a multi log processor instance
   */
  static LogProcessor create(List logProcessorsList) {
    return new MultiLogProcessor(
        new ArrayList<>(Objects.requireNonNull(logProcessorsList, "logProcessorsList")));
  }

  @Override
  public void emit(LogData logData) {
    for (LogProcessor logProcessor : logProcessors) {
      logProcessor.emit(logData);
    }
  }

  @Override
  public CompletableResultCode shutdown() {
    if (isShutdown.getAndSet(true)) {
      return CompletableResultCode.ofSuccess();
    }
    List results = new ArrayList<>(logProcessors.size());
    for (LogProcessor logProcessor : logProcessors) {
      results.add(logProcessor.shutdown());
    }
    return CompletableResultCode.ofAll(results);
  }

  @Override
  public CompletableResultCode forceFlush() {
    List results = new ArrayList<>(logProcessors.size());
    for (LogProcessor logProcessor : logProcessors) {
      results.add(logProcessor.forceFlush());
    }
    return CompletableResultCode.ofAll(results);
  }

  private MultiLogProcessor(List logProcessorsList) {
    this.logProcessors = logProcessorsList;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy