Class MetricCollectingHttpResponseHandler<T>

java.lang.Object
software.amazon.awssdk.core.http.MetricCollectingHttpResponseHandler<T>
All Implemented Interfaces:
HttpResponseHandler<T>

public final class MetricCollectingHttpResponseHandler<T> extends Object implements HttpResponseHandler<T>
An implementation of HttpResponseHandler that publishes the time it took to execute {
  • Field Details

  • Method Details

    • create

      public static <T> MetricCollectingHttpResponseHandler<T> create(SdkMetric<? super Duration> durationMetric, HttpResponseHandler<T> delegateToTime)
    • handle

      public T handle(SdkHttpFullResponse response, ExecutionAttributes executionAttributes) throws Exception
      Description copied from interface: HttpResponseHandler
      Accepts an HTTP response object, and returns an object of type T. Individual implementations may choose to handle the response however they need to, and return any type that they need to.
      Specified by:
      handle in interface HttpResponseHandler<T>
      Parameters:
      response - The HTTP response to handle, as received from an AWS service.
      executionAttributes - The attributes attached to this particular execution.
      Returns:
      An object of type T, as defined by individual implementations.
      Throws:
      Exception - If any problems are encountered handling the response.
    • needsConnectionLeftOpen

      public boolean needsConnectionLeftOpen()
      Description copied from interface: HttpResponseHandler
      Indicates if this response handler requires that the underlying HTTP connection not be closed automatically after the response is handled.

      For example, if the object returned by this response handler manually manages the stream of data from the HTTP connection, and doesn't read all the data from the connection in the HttpResponseHandler.handle(SdkHttpFullResponse, ExecutionAttributes) method, this method can be used to prevent the underlying connection from being prematurely closed.

      Response handlers should use this option very carefully, since it means that resource cleanup is no longer handled automatically, and if neglected, can result in the client runtime running out of resources for new HTTP connections.

      Specified by:
      needsConnectionLeftOpen in interface HttpResponseHandler<T>
      Returns:
      True if this response handler requires that the underlying HTTP connection be left open, and not automatically closed, otherwise false.