spawnedMain function
Helper to executed a spawned Dart script by DartSpawner.
Implementation
Future<void> spawnedMain(
List<String> args, SendPort parentPort, int id, Function run,
[FutureOr<bool> Function()? stop]) async {
final messagePort = ReceivePort();
var debugName = Isolate.current.debugName;
var isolateId = debugName != null ? 'Isolate#$id($debugName)' : 'Isolate#$id';
messagePort.listen((msg) {
if (msg['cmd'] == 'stop') {
_stopSpawned(isolateId, messagePort, stop, parentPort);
}
});
print('[$isolateId] Running: $run');
FutureOr ret;
if (run is Function()) {
ret = run();
} else if (run is Function(List<String> a)) {
ret = run(args);
}
print('[$isolateId] Return: $ret');
parentPort.send({'status': 'ok', 'port': messagePort.sendPort});
if (ret is Future) {
print('[$isolateId] Waiting return: $ret');
await ret;
}
_stopSpawned(isolateId, messagePort, stop, parentPort);
}