run method

  1. @override
void run()
override

Run the worker loop. Blocks until connection#readRequest returns null.

Implementation

@override
void run() {
  while (true) {
    late WorkResponse response;
    try {
      var request = connection.readRequest();
      if (request == null) break;
      var printMessages = StringBuffer();
      response = runZoned(() => performRequest(request), zoneSpecification:
          ZoneSpecification(print: (self, parent, zone, message) {
        printMessages.writeln();
        printMessages.write(message);
      }));
      if (printMessages.isNotEmpty) {
        response.output = '${response.output}$printMessages';
      }
    } catch (e, s) {
      response = WorkResponse(
        exitCode: EXIT_CODE_ERROR,
        output: '$e\n$s',
      );
    }

    connection.writeResponse(response);
  }
}