/*
 * Copyright (c) 2011-2019 Contributors to the Eclipse Foundation
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 * which is available at https://www.apache.org/licenses/LICENSE-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 */
package io.vertx.core.spi.tracing;

import io.vertx.core.Context;
import io.vertx.core.tracing.TracingPolicy;

import java.util.Map;
import java.util.function.BiConsumer;

The tracer SPI used by Vert.x components to report activities.
Author:Julien Viet
/** * The tracer SPI used by Vert.x components to report activities. * * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */
public interface VertxTracer<I, O> {
Signal a request has been received and will be processed.
Params:
  • context – the context data attached to the request
  • kind – the span kind
  • policy – the policy to apply
  • request – the request object
  • operation – the request operation
  • headers – a read-only view of the request headers
  • tagExtractor – the request tag extractor
Returns:the request trace
/** * Signal a request has been received and will be processed. * * @param context the context data attached to the request * @param kind the span kind * @param policy the policy to apply * @param request the request object * @param operation the request operation * @param headers a read-only view of the request headers * @param tagExtractor the request tag extractor * @return the request trace */
default <R> I receiveRequest(Context context, SpanKind kind, TracingPolicy policy, R request, String operation, Iterable<Map.Entry<String, String>> headers, TagExtractor<R> tagExtractor) { return null; }
Signal the response is sent.
Params:
  • context – the context data attached to the request
  • response – the response sent
  • payload – the payload returned by receiveRequest
  • failure – the failure when not null
  • tagExtractor – the response tag extractor
/** * Signal the response is sent. * * @param context the context data attached to the request * @param response the response sent * @param payload the payload returned by {@link #receiveRequest} * @param failure the failure when not {@code null} * @param tagExtractor the response tag extractor */
default <R> void sendResponse(Context context, R response, I payload, Throwable failure, TagExtractor<R> tagExtractor) { }
Signal a request is sent.

When the method returns null, no propagation happens and the client shall not call receiveResponse.

Params:
  • context – the context data attached to the request
  • kind – the span kind
  • policy – the policy to apply
  • request – the request object
  • operation – the request operation
  • headers – a write only-view of the request headers
  • tagExtractor – the request tag extractor
Returns:the request trace
/** * Signal a request is sent. * * <p> When the method returns {@code null}, no propagation happens and the client * shall not call {@link #receiveResponse}. * * @param context the context data attached to the request * @param kind the span kind * @param policy the policy to apply * @param request the request object * @param operation the request operation * @param headers a write only-view of the request headers * @param tagExtractor the request tag extractor * @return the request trace */
default <R> O sendRequest(Context context, SpanKind kind, TracingPolicy policy, R request, String operation, BiConsumer<String, String> headers, TagExtractor<R> tagExtractor) { return null; }
Signal a response has been received.
Params:
  • context – the context data attached to the request
  • response – the response sent
  • payload – the payload returned by sendRequest
  • failure – the failure when not null
  • tagExtractor – the response tag extractor
/** * Signal a response has been received. * * @param context the context data attached to the request * @param response the response sent * @param payload the payload returned by {@link #sendRequest} * @param failure the failure when not {@code null} * @param tagExtractor the response tag extractor */
default <R> void receiveResponse(Context context, R response, O payload, Throwable failure, TagExtractor<R> tagExtractor) { }
Close the tracer.
/** * Close the tracer. */
default void close() { } }