ServeMe<C extends ServeMeClient> constructor

ServeMe<C extends ServeMeClient>({
  1. String configFile = 'config.yaml',
  2. ServeMeType type = ServeMeType.ws,
  3. Config configFactory(
    1. String filename
    )?,
  4. C clientFactory(
    1. ServeMeSocket
    )?,
  5. Map<String, Module<C>>? modules,
  6. Map<String, CollectionDescriptor>? dbIntegrityDescriptor,
})

Implementation

ServeMe({
	String configFile = 'config.yaml',
	ServeMeType type = ServeMeType.ws,
	Config Function(String filename)? configFactory,
	C Function(ServeMeSocket)? clientFactory,
	Map<String, Module<C>>? modules,
	Map<String, CollectionDescriptor>? dbIntegrityDescriptor,
}) : _type = type, _clientFactory = clientFactory, _dbIntegrityDescriptor = dbIntegrityDescriptor {
	config = Config._instantiate(configFile, factory: configFactory);
	console = Console(this);
	_logger = Logger(this);
	_events = Events(this);
	_scheduler = Scheduler(this);
	if (config != null && modules != null) {
		_modules.addEntries(modules.entries.where((MapEntry<String, Module<C>> entry) {
			if (!config.modules.contains(entry.key)) return false;
			entry.value.server = this;
			return true;
		}));
	}
	final InternetAddress address = _unixSocketsAvailable && config._socket != null
		? InternetAddress(config._socket!, type: InternetAddressType.unix)
		: InternetAddress(config._host ?? '127.0.0.1', type: InternetAddressType.IPv4);
	_cmServer = ConnectMe.server(address,
		port: config._port ?? 0,
		type: _type,
		clientFactory: _clientFactory,
		onLog: log,
		onError: error,
		onConnect: (C client) => _events.dispatch(ConnectEvent<C>(client)),
		onDisconnect: (C client) => _events.dispatch(DisconnectEvent<C>(client))
	);
}