process method

  1. @override
Future<void> process(
  1. Job job
)
override

Process a job

Implementation

@override
Future<void> process(Job job) async {
  if (!_isRunning) {
    throw StateError('Worker not started. Call start() first.');
  }

  final completer = Completer<Map<String, dynamic>>();
  _pendingJobs[job.id] = completer;

  // Send job to isolate for processing with response port
  _sendPort.send({
    'type': 'job',
    'data': job.toJson(),
    'responsePort': _responsePort.sendPort,
  });

  // Wait for result
  final result = await completer.future;
  final processedJob = Job.fromJson(result);
  job.status = processedJob.status;
  job.error = processedJob.error;
}