startServer method

Future<void> startServer()

start dox server

await Dox().startServer();

Implementation

Future<void> startServer() async {
  checkAppKey();
  addServices(config.services);
  _totalIsolate ??= Dox().config.totalIsolate;
  int isolatesToSpawn = _totalIsolate!;

  /// Windows has no SO_REUSEPORT: one isolate owns the native listener.
  if (Platform.isWindows && isolatesToSpawn > 1 && DoxServer.usesNative()) {
    Logger.info('Windows: the native server runs on one isolate');
    isolatesToSpawn = 1;
  }

  if (isolatesToSpawn > 1) {
    await DoxIsolate().spawn(isolatesToSpawn);
  }

  await startServices();
  DoxServer().setResponseHandler(config.responseHandler);
  HttpServer server = await DoxServer().listen(
    DoxServer.portFor(config.serverPort),
    address: DoxServer.hostFor(config.host),
    isolateId: 1,
  );

  String backend = server is NativeHttpServer ? 'native' : 'dart:io';
  Logger.info(
    'Server started at ${serverUrl(server)} with $isolatesToSpawn isolate '
    '($backend)',
  );
  _watchSignals();
}