Serverpod constructor

Serverpod(
  1. List<String> args,
  2. SerializationManagerServer serializationManager,
  3. EndpointDispatch endpoints, {
  4. AuthenticationHandler? authenticationHandler,
  5. HealthCheckHandler? healthCheckHandler,
  6. Map<String, dynamic> httpResponseHeaders = _defaultHttpResponseHeaders,
  7. Map<String, dynamic> httpOptionsResponseHeaders = _defaultHttpOptionsResponseHeaders,
})

Creates a new Serverpod.

Implementation

Serverpod(
  List<String> args,
  this.serializationManager,
  this.endpoints, {
  this.authenticationHandler,
  this.healthCheckHandler,
  this.httpResponseHeaders = _defaultHttpResponseHeaders,
  this.httpOptionsResponseHeaders = _defaultHttpOptionsResponseHeaders,
}) {
  _internalSerializationManager = internal.Protocol();

  // Create a temporary log manager with default settings, until we have
  // loaded settings from the database.
  _logManager = LogManager(_defaultRuntimeSettings);

  // Read command line arguments.
  commandLineArgs = CommandLineArgs(args);
  _runMode = commandLineArgs.runMode;
  serverId = commandLineArgs.serverId;

  // Load passwords
  _passwords = PasswordManager(runMode: runMode).loadPasswords() ?? {};

  if (_passwords.isEmpty) {
    stderr.writeln('Failed to load passwords. Serverpod cannot not start.');
    exit(1);
  }

  // Load config
  config = ServerpodConfig(_runMode, serverId, _passwords);

  // Setup database
  databaseConfig = DatabasePoolManager(
    serializationManager,
    config.database,
  );

  // Setup Redis
  if (config.redis.enabled) {
    redisController = RedisController(
      host: config.redis.host,
      port: config.redis.port,
      user: config.redis.user,
      password: config.redis.password,
    );
  }

  _caches = Caches(serializationManager, config, serverId, redisController);

  server = Server(
    serverpod: this,
    serverId: serverId,
    port: config.apiServer.port,
    serializationManager: serializationManager,
    databaseConfig: databaseConfig,
    passwords: _passwords,
    runMode: _runMode,
    caches: caches,
    authenticationHandler:
        authenticationHandler ?? defaultAuthenticationHandler,
    whitelistedExternalCalls: whitelistedExternalCalls,
    endpoints: endpoints,
    httpResponseHeaders: httpResponseHeaders,
    httpOptionsResponseHeaders: httpOptionsResponseHeaders,
  );
  endpoints.initializeEndpoints(server);

  // Setup future calls
  _futureCallManager = FutureCallManager(
    server,
    serializationManager,
    _onCompletedFutureCalls,
  );

  _instance = this;

  // Setup health check manager
  _healthCheckManager = HealthCheckManager(
    this,
    _onCompletedHealthChecks,
  );

  // Create web server.
  webServer = WebServer(serverpod: this);

  // Print version and runtime arguments.
  stdout.writeln(
    'SERVERPOD version: $serverpodVersion, dart: ${Platform.version}, time: ${DateTime.now().toUtc()}',
  );
  stdout.writeln(commandLineArgs.toString());
  logVerbose(config.toString());
}