FakeWorkerTransport constructor

FakeWorkerTransport({
  1. TaskRegistry? registry,
  2. bool failSpawn = false,
  3. Duration? readyDelay,
  4. Duration? taskLatency,
  5. bool clonePayloads = true,
})

Creates a fake transport.

registry supplies task handlers (an empty registry makes every task fail with UnknownTaskException, which is itself useful to test). failSpawn makes ready fail with WorkerSpawnException. readyDelay postpones readiness. taskLatency delays each reply. clonePayloads routes payloads/results through simulateStructuredClone (default).

Implementation

FakeWorkerTransport({
  TaskRegistry? registry,
  this.failSpawn = false,
  this.readyDelay,
  this.taskLatency,
  bool clonePayloads = true,
})  : registry = registry ?? TaskRegistry(),
      _clonePayloads = clonePayloads {
  _ready = _buildReady();
  // Mirror the real web transport: tasks sent before readiness are
  // buffered; if the spawn fails they are silently dropped (the pool
  // requeues them elsewhere).
  _ready.then<void>((_) {
    _isReady = true;
    final buffered = List.of(_bufferedJobs);
    _bufferedJobs.clear();
    buffered.forEach(_run);
  }).catchError((Object _) {
    _bufferedJobs.clear();
  });
}