public void doFilter()

in invoker/core/src/main/java/com/google/cloud/functions/invoker/http/TimeoutFilter.java [38:70]


  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws IOException, ServletException {
    Timer timer = new Timer(true);
    TimerTask timeoutTask =
        new TimerTask() {
          @Override
          public void run() {
            if (response instanceof HttpServletResponse) {
              try {
                ((HttpServletResponse) response)
                    .sendError(HttpServletResponse.SC_REQUEST_TIMEOUT, "Request timed out");
              } catch (IOException e) {
                logger.warning("Error while sending HTTP response: " + e.toString());
              }
            } else {
              try {
                response.getWriter().write("Request timed out");
              } catch (IOException e) {
                logger.warning("Error while writing response: " + e.toString());
              }
            }
          }
        };

    timer.schedule(timeoutTask, timeoutMs);

    try {
      chain.doFilter(request, response);
      timeoutTask.cancel();
    } finally {
      timer.purge();
    }
  }