handleRequest method
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]");
}