| 1 | | | import 'dart:isolate'; |
| 2 | | | |
| 3 | | | import '../../typedefs.dart'; |
| 4 | | | import '../../worker/worker_request.dart'; |
| 5 | | | import '../xplat/_worker_runner.dart'; |
| 6 | | | import '_worker_runner.dart'; |
| 7 | | | |
| 8 | | 10 | void bootstrap(WorkerInitializer initializer, WorkerRequest? command) { |
| 9 | | 10 | final workerPort = ReceivePort(); |
| 10 | | | |
| 11 | | 20 | final runner = WorkerRunner((r) { |
| 12 | | 20 | r.internalLogger.t('Terminating Isolate'); |
| 13 | | 10 | workerPort.close(); |
| 14 | | 20 | Isolate.current.kill(priority: Isolate.beforeNextEvent); |
| 15 | | | }); |
| 16 | | | |
| 17 | | 20 | workerPort.listen(runner.handle); |
| 18 | | 20 | runner.connect(command, workerPort.sendPort, initializer); |
| 19 | | | } |