Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package datadog.opentelemetry.shim.metrics;

import static datadog.opentelemetry.shim.metrics.OtelInstrumentBuilder.ofDoubles;
import static datadog.opentelemetry.shim.metrics.OtelInstrumentType.COUNTER;
import static datadog.opentelemetry.shim.metrics.OtelMeter.NOOP_INSTRUMENT_NAME;
import static datadog.opentelemetry.shim.metrics.OtelMeter.NOOP_METER;

import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.metrics.DoubleCounter;
import io.opentelemetry.api.metrics.DoubleCounterBuilder;
import io.opentelemetry.api.metrics.ObservableDoubleCounter;
import io.opentelemetry.api.metrics.ObservableDoubleMeasurement;
import io.opentelemetry.context.Context;
import java.util.function.Consumer;
import javax.annotation.ParametersAreNonnullByDefault;

@ParametersAreNonnullByDefault
final class OtelDoubleCounter implements DoubleCounter {

@Override
public void add(double value) {
// FIXME: implement recording
}

@Override
public void add(double value, Attributes attributes) {
// FIXME: implement recording
}

@Override
public void add(double value, Attributes attributes, Context context) {
// FIXME: implement recording
}

static final class Builder implements DoubleCounterBuilder {
private final OtelInstrumentBuilder instrumentBuilder;

Builder(OtelInstrumentBuilder builder) {
this.instrumentBuilder = ofDoubles(builder, COUNTER);
}

@Override
public DoubleCounterBuilder setDescription(String description) {
instrumentBuilder.setDescription(description);
return this;
}

@Override
public DoubleCounterBuilder setUnit(String unit) {
instrumentBuilder.setUnit(unit);
return this;
}

@Override
public DoubleCounter build() {
return new OtelDoubleCounter();
}

@Override
public ObservableDoubleCounter buildWithCallback(
Consumer<ObservableDoubleMeasurement> callback) {
// FIXME: implement callback
return NOOP_METER
.counterBuilder(NOOP_INSTRUMENT_NAME)
.ofDoubles()
.buildWithCallback(callback);
}

@Override
public ObservableDoubleMeasurement buildObserver() {
// FIXME: implement observer
return NOOP_METER.counterBuilder(NOOP_INSTRUMENT_NAME).ofDoubles().buildObserver();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package datadog.opentelemetry.shim.metrics;

import static datadog.opentelemetry.shim.metrics.OtelInstrumentBuilder.ofDoubles;
import static datadog.opentelemetry.shim.metrics.OtelInstrumentType.GAUGE;
import static datadog.opentelemetry.shim.metrics.OtelMeter.NOOP_INSTRUMENT_NAME;
import static datadog.opentelemetry.shim.metrics.OtelMeter.NOOP_METER;

import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.metrics.DoubleGauge;
import io.opentelemetry.api.metrics.DoubleGaugeBuilder;
import io.opentelemetry.api.metrics.LongGaugeBuilder;
import io.opentelemetry.api.metrics.ObservableDoubleGauge;
import io.opentelemetry.api.metrics.ObservableDoubleMeasurement;
import io.opentelemetry.context.Context;
import java.util.function.Consumer;
import javax.annotation.ParametersAreNonnullByDefault;

@ParametersAreNonnullByDefault
final class OtelDoubleGauge implements DoubleGauge {

@Override
public void set(double value) {
// FIXME: implement recording
}

@Override
public void set(double value, Attributes attributes) {
// FIXME: implement recording
}

@Override
public void set(double value, Attributes attributes, Context context) {
// FIXME: implement recording
}

static final class Builder implements DoubleGaugeBuilder {
private final OtelInstrumentBuilder instrumentBuilder;

Builder(OtelMeter meter, String instrumentName) {
this.instrumentBuilder = ofDoubles(meter, instrumentName, GAUGE);
}

@Override
public DoubleGaugeBuilder setDescription(String description) {
instrumentBuilder.setDescription(description);
return this;
}

@Override
public DoubleGaugeBuilder setUnit(String unit) {
instrumentBuilder.setUnit(unit);
return this;
}

@Override
public LongGaugeBuilder ofLongs() {
return new OtelLongGauge.Builder(instrumentBuilder);
}

@Override
public DoubleGauge build() {
return new OtelDoubleGauge();
}

@Override
public ObservableDoubleGauge buildWithCallback(Consumer<ObservableDoubleMeasurement> callback) {
// FIXME: implement callback
return NOOP_METER.gaugeBuilder(NOOP_INSTRUMENT_NAME).buildWithCallback(callback);
}

@Override
public ObservableDoubleMeasurement buildObserver() {
// FIXME: implement observer
return NOOP_METER.gaugeBuilder(NOOP_INSTRUMENT_NAME).buildObserver();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package datadog.opentelemetry.shim.metrics;

import static datadog.opentelemetry.shim.metrics.OtelInstrumentBuilder.ofDoubles;
import static datadog.opentelemetry.shim.metrics.OtelInstrumentType.HISTOGRAM;

import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.metrics.DoubleHistogram;
import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
import io.opentelemetry.api.metrics.LongHistogramBuilder;
import io.opentelemetry.context.Context;
import java.util.List;
import javax.annotation.ParametersAreNonnullByDefault;

@ParametersAreNonnullByDefault
final class OtelDoubleHistogram implements DoubleHistogram {

@Override
public void record(double value) {
// FIXME: implement recording
}

@Override
public void record(double value, Attributes attributes) {
// FIXME: implement recording
}

@Override
public void record(double value, Attributes attributes, Context context) {
// FIXME: implement recording
}

static final class Builder implements DoubleHistogramBuilder {
private final OtelInstrumentBuilder instrumentBuilder;

Builder(OtelMeter meter, String instrumentName) {
this.instrumentBuilder = ofDoubles(meter, instrumentName, HISTOGRAM);
}

@Override
public DoubleHistogramBuilder setDescription(String description) {
instrumentBuilder.setDescription(description);
return this;
}

@Override
public DoubleHistogramBuilder setUnit(String unit) {
instrumentBuilder.setUnit(unit);
return this;
}

@Override
public DoubleHistogramBuilder setExplicitBucketBoundariesAdvice(List<Double> bucketBoundaries) {
// FIXME: implement boundary advice
return this;
}

@Override
public LongHistogramBuilder ofLongs() {
return new OtelLongHistogram.Builder(instrumentBuilder);
}

@Override
public DoubleHistogram build() {
return new OtelDoubleHistogram();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package datadog.opentelemetry.shim.metrics;

import static datadog.opentelemetry.shim.metrics.OtelInstrumentBuilder.ofDoubles;
import static datadog.opentelemetry.shim.metrics.OtelInstrumentType.UP_DOWN_COUNTER;
import static datadog.opentelemetry.shim.metrics.OtelMeter.NOOP_INSTRUMENT_NAME;
import static datadog.opentelemetry.shim.metrics.OtelMeter.NOOP_METER;

import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.metrics.DoubleUpDownCounter;
import io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder;
import io.opentelemetry.api.metrics.ObservableDoubleMeasurement;
import io.opentelemetry.api.metrics.ObservableDoubleUpDownCounter;
import io.opentelemetry.context.Context;
import java.util.function.Consumer;
import javax.annotation.ParametersAreNonnullByDefault;

@ParametersAreNonnullByDefault
final class OtelDoubleUpDownCounter implements DoubleUpDownCounter {

@Override
public void add(double value) {
// FIXME: implement recording
}

@Override
public void add(double value, Attributes attributes) {
// FIXME: implement recording
}

@Override
public void add(double value, Attributes attributes, Context context) {
// FIXME: implement recording
}

static final class Builder implements DoubleUpDownCounterBuilder {
private final OtelInstrumentBuilder instrumentBuilder;

Builder(OtelInstrumentBuilder builder) {
this.instrumentBuilder = ofDoubles(builder, UP_DOWN_COUNTER);
}

@Override
public DoubleUpDownCounterBuilder setDescription(String description) {
instrumentBuilder.setDescription(description);
return this;
}

@Override
public DoubleUpDownCounterBuilder setUnit(String unit) {
instrumentBuilder.setUnit(unit);
return this;
}

@Override
public DoubleUpDownCounter build() {
return new OtelDoubleUpDownCounter();
}

@Override
public ObservableDoubleUpDownCounter buildWithCallback(
Consumer<ObservableDoubleMeasurement> callback) {
// FIXME: implement callback
return NOOP_METER
.upDownCounterBuilder(NOOP_INSTRUMENT_NAME)
.ofDoubles()
.buildWithCallback(callback);
}

@Override
public ObservableDoubleMeasurement buildObserver() {
// FIXME: implement observer
return NOOP_METER.upDownCounterBuilder(NOOP_INSTRUMENT_NAME).ofDoubles().buildObserver();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package datadog.opentelemetry.shim.metrics;

import javax.annotation.Nullable;

final class OtelInstrumentBuilder {

private final OtelMeter meter;
private final String instrumentName;
private final OtelInstrumentType instrumentType;
private final boolean longValues;

@Nullable private String description;
@Nullable private String unit;

/**
* Starts building an instrument of long values with the given name and type.
*
* @param meter the owning mete
* @param instrumentName the name of the instrument
* @param instrumentType the type of the instrument
* @return new instrument builder
*/
static OtelInstrumentBuilder ofLongs(
OtelMeter meter, String instrumentName, OtelInstrumentType instrumentType) {
return new OtelInstrumentBuilder(meter, instrumentName, instrumentType, true);
}

/**
* Starts building an instrument of long values based on another builder.
*
* @param builder the builder to copy details from
* @param instrumentType the type of the instrument
* @return new instrument builder
*/
static OtelInstrumentBuilder ofLongs(
OtelInstrumentBuilder builder, OtelInstrumentType instrumentType) {
return new OtelInstrumentBuilder(builder.meter, builder.instrumentName, instrumentType, true);
}

/**
* Starts building an instrument of double values with the given name and type.
*
* @param meter the owning mete
* @param instrumentName the name of the instrument
* @param instrumentType the type of the instrument
* @return new instrument builder
*/
static OtelInstrumentBuilder ofDoubles(
OtelMeter meter, String instrumentName, OtelInstrumentType instrumentType) {
return new OtelInstrumentBuilder(meter, instrumentName, instrumentType, false);
}

/**
* Starts building an instrument of double values based on another builder.
*
* @param builder the builder to copy details from
* @param instrumentType the type of the instrument
* @return new instrument builder
*/
static OtelInstrumentBuilder ofDoubles(
OtelInstrumentBuilder builder, OtelInstrumentType instrumentType) {
return new OtelInstrumentBuilder(builder.meter, builder.instrumentName, instrumentType, false);
}

private OtelInstrumentBuilder(
OtelMeter meter,
String instrumentName,
OtelInstrumentType instrumentType,
boolean longValues) {
this.meter = meter;
this.instrumentName = instrumentName;
this.instrumentType = instrumentType;
this.longValues = longValues;
}

void setDescription(String description) {
this.description = description;
}

void setUnit(String unit) {
this.unit = unit;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package datadog.opentelemetry.shim.metrics;

enum OtelInstrumentType {
COUNTER,
UP_DOWN_COUNTER,
HISTOGRAM,
GAUGE
}
Loading