All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ratpack.handling.RequestOutcome Maven / Gradle / Ivy

/*
 * Copyright 2013 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package ratpack.handling;

import ratpack.http.Request;
import ratpack.http.SentResponse;

import java.time.Duration;
import java.time.Instant;

/**
 * The outcome of processing a request.
 *
 * @see Context#onClose(ratpack.func.Action)
 */
@SuppressWarnings("UnusedDeclaration")
public interface RequestOutcome {

  /**
   * The request.
   *
   * @return the request
   */
  Request getRequest();

  /**
   * The response.
   *
   * @return the response
   */
  SentResponse getResponse();

  /**
   * The time at when this request was dealt with from the application's point of view.
   * 

* After this instant, it may have taken further time to actually get the response bytes to the client. * That is, this timestamp effectively denotes when application processing of the request finished. * * @return the instant at which the response was sent */ Instant getSentAt(); /** * The amount of elapsed time between {@link Request#getTimestamp()} and {@link #getSentAt()}. *

* This is the wall clock time, not the CPU time. * It does not include the time taken to send the response bytes to the client. * * @return how long it took to process the request */ default Duration getDuration() { return Duration.between(getRequest().getTimestamp(), getSentAt()); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy