package study.ready;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.sdk.trace.export.SpanExporter;

/** Real SDK sink in this process; no external Collector claim. */
public final class RecordingExporter implements SpanExporter {
  private final List<Map<String,Object>> spans=new CopyOnWriteArrayList<>();
  public CompletableResultCode export(Collection<SpanData> data){
    for(var span:data)spans.add(Map.of("name",span.getName(),"traceId",span.getTraceId(),"spanId",span.getSpanId(),"parentId",span.getParentSpanId(),"kind",span.getKind().name(),"ended",span.hasEnded()));
    return CompletableResultCode.ofSuccess();
  }
  public List<Map<String,Object>> snapshot(){return List.copyOf(spans);}
  public CompletableResultCode flush(){return CompletableResultCode.ofSuccess();}
  public CompletableResultCode shutdown(){return CompletableResultCode.ofSuccess();}
}
