Skip to content

Commit

Permalink
Add Instrumentation javadocs
Browse files Browse the repository at this point in the history
  • Loading branch information
swallez committed Aug 21, 2023
1 parent 9bf3327 commit b49348c
Showing 1 changed file with 33 additions and 0 deletions.
Expand Up @@ -23,22 +23,55 @@
import co.elastic.clients.transport.TransportOptions;
import co.elastic.clients.transport.http.TransportHttpClient;

/**
* Instrumentation for an Elasticsearch client. It allows creating a {@link Instrumentation.Context} for each request,
* with callbacks for the various stages of request and response processing.
*/
public interface Instrumentation {

/**
* Create a context for a given request and the corresponding endpoint.
*/
<TRequest> Context newContext(TRequest request, Endpoint<TRequest, ?, ?> endpoint);

/**
* A context with lifecycle callbacks for the various stages of request and response processing. Must be {@link #close()}d.
*/
interface Context extends AutoCloseable {

/**
* Sets this context (or the underlying abstraction) as the current thread's scope, so that neste call can
* nest child contexts.
*/
ThreadScope makeCurrent();

/**
* Called once the initial API request has been serialized and the http request has been prepared.
*/
void beforeSendingHttpRequest(TransportHttpClient.Request httpRequest, TransportOptions options);

/**
* Called after the http response has been received, and before analyzing it.
*/
void afterReceivingHttpResponse(TransportHttpClient.Response httpResponse);

/**
* Called after the http response has been deserialized
*/
<TResponse> void afterDecodingApiResponse(TResponse apiResponse);

/**
* Called when any stage of request processing caused a failure.
*/
void recordException(Throwable thr);

@Override
void close();
}

/**
* A thread scope. Closing it will detach the scope from the current thread.
*/
interface ThreadScope extends AutoCloseable {
@Override
void close();
Expand Down

0 comments on commit b49348c

Please sign in to comment.