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!;

  /// stop here, before any isolate starts, when the native server can
  /// not run. The error says why and how to fix it.
  NativeHttpServer.ensureAvailable();

  /// Windows has no SO_REUSEPORT: one isolate owns the native listener.
  if (Platform.isWindows && isolatesToSpawn > 1) {
    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),
  );

  Logger.info(
    'Server started at ${serverUrl(server)} with $isolatesToSpawn isolate '
    '(native)',
  );
  _watchSignals();
}