ServeMe<C extends ServeMeClient> constructor
ServeMe<C extends ServeMeClient> ({
- String configFile = 'config.yaml',
- ServeMeType type = ServeMeType.ws,
- Config configFactory(
- String filename
- C clientFactory()?,
- Map<
String, Module< ? modules,C> > - 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))
);
}