handleIoRequest function

Future<void> handleIoRequest(
  1. HttpsServer server,
  2. HttpRequest request, {
  3. Duration requestTimeout = defaultRequestTimeout,
})

Answer one dart:io request with server — for an application that owns its own HttpServer and routes only some paths here.

Implementation

Future<void> handleIoRequest(
  HttpsServer server,
  HttpRequest request, {
  Duration requestTimeout = defaultRequestTimeout,
}) async {
  final response = request.response;
  try {
    final reply = await _answer(server, request).timeout(requestTimeout);
    response.statusCode = reply.status;
    reply.headers.forEach(response.headers.set);
    final body = reply.body;
    if (body != null) response.add(body);
  } on TimeoutException {
    response.statusCode = HttpStatus.requestTimeout;
  } on Object {
    response.statusCode = HttpStatus.internalServerError;
  }
  try {
    await response.close();
  } on Object {
    // The peer went away; there is nobody left to tell.
  }
}