handleRequest method

Future handleRequest(
  1. HttpRequest request
)

Implementation

Future handleRequest(HttpRequest request) async {
  concurrentRequests ++;
  int start = new DateTime.now().millisecondsSinceEpoch;
  int serviceId = config.getRequired<int>('service_id');
  String actionName = 'unknown';
  try {
    HttpAction action = routing.getForRequest(request);
    actionName = action.className;
    await action.handleRequest();
  } on Redirect catch (error) {
    request.response.redirect(new Uri.http(request.uri.authority, error.uri));
  } on HttpException catch (error, stacktrace) {
    writeError(request, error.code, error.message, stacktrace);
  } catch (error, stacktrace) {
    writeError(
        request,
        HttpStatus.internalServerError,
        'unknown error occured',
        stacktrace
    );
    await errorHandler.handleError(serviceId, 'action.' + actionName, error, stacktrace);
  }
  request.response.close();

  int timeMs = new DateTime.now().millisecondsSinceEpoch - start;

  await stats.saveStats(serviceId, 'action.' + actionName, db.getAndResetCounter(), timeMs);

  concurrentRequests --;
  if (concurrentRequests == 0) {
    await db.disconnect();
  }
  print("${request.method} ${request.uri} ${request.response.statusCode} [${timeMs}ms]");
}