1- package datadog .trace .api .datastreams ;
1+ package datadog .trace .api .experimental ;
2+
3+ import datadog .trace .api .GlobalTracer ;
4+ import datadog .trace .api .Tracer ;
5+ import datadog .trace .api .internal .InternalTracer ;
26
37/** An interface to Data Streams checkpointer, allowing passing the context manually. */
48public interface DataStreamsCheckpointer {
9+ static DataStreamsCheckpointer get () {
10+ Tracer tracer = GlobalTracer .get ();
11+ if (tracer instanceof InternalTracer ) {
12+ return ((InternalTracer ) tracer ).getDataStreamsCheckpointer ();
13+ }
14+
15+ return NoOp .INSTANCE ;
16+ }
17+
518 /**
619 * @param type The type of the checkpoint, usually the streaming technology being used. Examples:
720 * kafka, kinesis, sns etc.
@@ -21,3 +34,18 @@ public interface DataStreamsCheckpointer {
2134 */
2235 void setProduceCheckpoint (String type , String target , DataStreamsContextCarrier carrier );
2336}
37+
38+ final class NoOp implements DataStreamsCheckpointer {
39+
40+ public static final DataStreamsCheckpointer INSTANCE = new NoOp ();
41+
42+ @ Override
43+ public void setConsumeCheckpoint (String type , String source , DataStreamsContextCarrier carrier ) {
44+
45+ }
46+
47+ @ Override
48+ public void setProduceCheckpoint (String type , String target , DataStreamsContextCarrier carrier ) {
49+
50+ }
51+ }
0 commit comments