private Span spanDataToJaegerThriftSpan(final SpanData spanData) {
final long startTimeInMicros = timestampToMicros(spanData.getStartTimestamp());
final long endTimeInMicros = timestampToMicros(spanData.getEndTimestamp());
final SpanContext context = spanData.getContext();
copyToBuffer(context.getTraceId());
return new com.uber.jaeger.thriftjava.Span(
traceIdLow(),
traceIdHigh(),
spanIdToLong(context.getSpanId()),
spanIdToLong(spanData.getParentSpanId()),
spanData.getName(),
optionsToFlags(context.getTraceOptions()),
startTimeInMicros,
endTimeInMicros - startTimeInMicros)
.setReferences(linksToReferences(spanData.getLinks().getLinks()))
.setTags(
attributesToTags(
spanData.getAttributes().getAttributeMap(), spanKindToTag(spanData.getKind())))
.setLogs(
timedEventsToLogs(
spanData.getAnnotations().getEvents(), spanData.getMessageEvents().getEvents()));
}