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

org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.SdkMeterProviderUtil 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.metrics.internal;

import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.ViewBuilder;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarFilter;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.view.AttributesProcessor;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.view.StringPredicates;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.time.Duration;
import java.util.function.Predicate;

/**
 * This class is internal and is hence not for public use. Its APIs are unstable and can change at
 * any time.
 */
public final class SdkMeterProviderUtil {

  private SdkMeterProviderUtil() {}

  /**
   * Reflectively assign the {@link ExemplarFilter} to the {@link SdkMeterProviderBuilder}.
   *
   * @param sdkMeterProviderBuilder the
   */
  public static void setExemplarFilter(
      SdkMeterProviderBuilder sdkMeterProviderBuilder, ExemplarFilter exemplarFilter) {
    try {
      Method method =
          SdkMeterProviderBuilder.class.getDeclaredMethod(
              "setExemplarFilter", ExemplarFilter.class);
      method.setAccessible(true);
      method.invoke(sdkMeterProviderBuilder, exemplarFilter);
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
      throw new IllegalStateException(
          "Error calling setExemplarFilter on SdkMeterProviderBuilder", e);
    }
  }

  /**
   * Reflectively set the minimum duration between synchronous collections for the {@link
   * SdkMeterProviderBuilder}. If collections occur more frequently than this, synchronous
   * collection will be suppressed.
   *
   * @param duration The duration.
   */
  public static void setMinimumCollectionInterval(
      SdkMeterProviderBuilder sdkMeterProviderBuilder, Duration duration) {
    try {
      Method method =
          SdkMeterProviderBuilder.class.getDeclaredMethod(
              "setMinimumCollectionInterval", Duration.class);
      method.setAccessible(true);
      method.invoke(sdkMeterProviderBuilder, duration);
    } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
      throw new IllegalStateException(
          "Error calling setMinimumCollectionInterval on SdkMeterProviderBuilder", e);
    }
  }

  /**
   * Reflectively add an {@link AttributesProcessor} to the {@link ViewBuilder} which appends
   * key-values from baggage to all measurements.
   *
   * 

Note: This runs after all other attribute processing added so far. * * @param viewBuilder the builder * @param keyFilter Only baggage key values pairs where the key matches this predicate will be * appended. */ public static void appendFilteredBaggageAttributes( ViewBuilder viewBuilder, Predicate keyFilter) { addAttributesProcessor(viewBuilder, AttributesProcessor.appendBaggageByKeyName(keyFilter)); } /** * Reflectively add an {@link AttributesProcessor} to the {@link ViewBuilder} which appends all * key-values from baggage to all measurements. * *

Note: This runs after all other attribute processing added so far. * * @param viewBuilder the builder */ public static void appendAllBaggageAttributes(ViewBuilder viewBuilder) { appendFilteredBaggageAttributes(viewBuilder, StringPredicates.ALL); } private static void addAttributesProcessor( ViewBuilder viewBuilder, AttributesProcessor attributesProcessor) { try { Method method = ViewBuilder.class.getDeclaredMethod("addAttributesProcessor", AttributesProcessor.class); method.setAccessible(true); method.invoke(viewBuilder, attributesProcessor); } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { throw new IllegalStateException("Error adding AttributesProcessor to ViewBuilder", e); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy