package io.vertx.kafka.client.common.tracing;
import io.vertx.core.spi.tracing.TagExtractor;
import java.util.function.Function;
public enum TraceTags {
PEER_ADDRESS("peer.address", q -> q.address),
PEER_HOSTNAME("peer.hostname", q -> q.hostname),
PEER_PORT("peer.port", q -> q.port),
PEER_SERVICE("peer.service", q -> "kafka"),
BUS_DESTINATION("message_bus.destination", q -> q.topic);
static final TagExtractor<TraceContext> = new TagExtractor<TraceContext>() {
private final TraceTags[] TAGS = TraceTags.values();
@Override
public int len(TraceContext obj) {
return TAGS.length;
}
@Override
public String name(TraceContext obj, int index) {
return TAGS[index].name;
}
@Override
public String value(TraceContext obj, int index) {
return TAGS[index].fn.apply(obj);
}
};
final String name;
final Function<TraceContext, String> fn;
TraceTags(String name, Function<TraceContext, String> fn) {
this.name = name;
this.fn = fn;
}
}