| commit | ffdecd3db3af498acd14a41c7aeda3f8a09675da | [log] [tgz] |
|---|---|---|
| author | Kevin Moore <[email protected]> | Tue Oct 29 14:13:32 2024 |
| committer | GitHub <[email protected]> | Tue Oct 29 14:13:32 2024 |
| tree | 6b1eb106fc646929bdab46b78306e7940355b9bd | |
| parent | aa3cc9e826350b960e0c5a67e6065bcedba8b0ac [diff] |
blast repo changes: drop-lint (#96) This PR contains changes created by the blast repo tool. - `drop-lint`
Tools for creating a persistent worker loop for bazel.
There are two abstract classes provided by this package, AsyncWorkerLoop and SyncWorkerLoop. These each have a performRequest method which you must implement.
Lets look at a simple example of a SyncWorkerLoop implementation:
import 'dart:io'; import 'package:bazel_worker/bazel_worker.dart'; void main() { // Blocks until it gets an EOF from stdin. SyncSimpleWorker().run(); } class SyncSimpleWorker extends SyncWorkerLoop { /// Must synchronously return a [WorkResponse], since this is a /// [SyncWorkerLoop]. WorkResponse performRequest(WorkRequest request) { File('hello.txt').writeAsStringSync('hello world!'); return WorkResponse()..exitCode = EXIT_CODE_OK; } }
And now the same thing, implemented as an AsyncWorkerLoop:
import 'dart:io'; import 'package:bazel_worker/bazel_worker.dart'; void main() { // Doesn't block, runs tasks async as they are received on stdin. AsyncSimpleWorker().run(); } class AsyncSimpleWorker extends AsyncWorkerLoop { /// Must return a [Future<WorkResponse>], since this is an /// [AsyncWorkerLoop]. Future<WorkResponse> performRequest(WorkRequest request) async { await File('hello.txt').writeAsString('hello world!'); return WorkResponse()..exitCode = EXIT_CODE_OK; } }
As you can see, these are nearly identical, it mostly comes down to the constraints on your package and personal preference which one you choose to implement.
A package:bazel_worker/testing.dart file is also provided, which can greatly assist with writing unit tests for your worker. See the test/worker_loop_test.dart test included in this package for an example of how the helpers can be used.
Please file feature requests and bugs at the issue tracker.