spawnWorker<T extends PersistorWorker<S> , S extends PersistorWorkerConfig> method
Future<void>
spawnWorker<T extends PersistorWorker<S> , S extends PersistorWorkerConfig>(
- T factory(
- S config
- required S config,
Spawns an instance of the worker specified by the factory
on a background isolate
and returns a PersistorWorkerMessenger for communicating with the spawned worker.
Implementation
Future<void> spawnWorker<T extends PersistorWorker<S>,
S extends PersistorWorkerConfig>(
T Function(S config) factory, {
required S config,
}) async {
worker = PersistorWorkerMessenger(logger: logger, onSync: onSync);
final message = InitMessageRequest(sendPort: worker.receivePort.sendPort);
final completer = worker.index[message.id] = Completer();
// The encrypter must be initialized on the main isolate. If it has not been done so yet,
// then initialize it before spawning the worker.
await encrypter.init();
await Isolate.spawn(
_entrypoint<T, S>,
EntrypointArgs(
config: config,
factory: factory,
message: message,
encrypter: encrypter,
),
debugName: 'PersistorWorker',
);
return completer.future;
}