move files under a worker dir, change WorkerConnection#readRequest to return a FutureOr<WorkRequest>
diff --git a/lib/bazel_worker.dart b/lib/bazel_worker.dart
index 8d42fb6..0b00408 100644
--- a/lib/bazel_worker.dart
+++ b/lib/bazel_worker.dart
@@ -2,10 +2,10 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-export 'src/async_worker_loop.dart';
+export 'src/worker/async_worker_loop.dart';
export 'src/constants.dart';
export 'src/message_grouper.dart';
-export 'src/sync_worker_loop.dart';
-export 'src/worker_connection.dart';
-export 'src/worker_loop.dart';
+export 'src/worker/sync_worker_loop.dart';
+export 'src/worker/worker_connection.dart';
+export 'src/worker/worker_loop.dart';
export 'src/worker_protocol.pb.dart';
diff --git a/lib/src/async_worker_loop.dart b/lib/src/worker/async_worker_loop.dart
similarity index 95%
rename from lib/src/async_worker_loop.dart
rename to lib/src/worker/async_worker_loop.dart
index bf6c893..fa0007b 100644
--- a/lib/src/async_worker_loop.dart
+++ b/lib/src/worker/async_worker_loop.dart
@@ -5,12 +5,12 @@
import 'dart:async';
import 'dart:io';
-import 'constants.dart';
-import 'async_message_grouper.dart';
-import 'utils.dart';
+import '../constants.dart';
+import '../async_message_grouper.dart';
+import '../utils.dart';
+import '../worker_protocol.pb.dart';
import 'worker_connection.dart';
import 'worker_loop.dart';
-import 'worker_protocol.pb.dart';
/// Connection between a worker and input / output.
abstract class AsyncWorkerConnection implements WorkerConnection {
diff --git a/lib/src/sync_worker_loop.dart b/lib/src/worker/sync_worker_loop.dart
similarity index 95%
rename from lib/src/sync_worker_loop.dart
rename to lib/src/worker/sync_worker_loop.dart
index a3528a5..f0e94c6 100644
--- a/lib/src/sync_worker_loop.dart
+++ b/lib/src/worker/sync_worker_loop.dart
@@ -4,12 +4,12 @@
import 'dart:async';
import 'dart:io';
-import 'constants.dart';
-import 'sync_message_grouper.dart';
-import 'utils.dart';
+import '../constants.dart';
+import '../sync_message_grouper.dart';
+import '../utils.dart';
+import '../worker_protocol.pb.dart';
import 'worker_connection.dart';
import 'worker_loop.dart';
-import 'worker_protocol.pb.dart';
/// Connection between a worker and input / output.
abstract class SyncWorkerConnection implements WorkerConnection {
diff --git a/lib/src/worker_connection.dart b/lib/src/worker/worker_connection.dart
similarity index 84%
rename from lib/src/worker_connection.dart
rename to lib/src/worker/worker_connection.dart
index c39bc3f..cbe6e3b 100644
--- a/lib/src/worker_connection.dart
+++ b/lib/src/worker/worker_connection.dart
@@ -2,7 +2,9 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'worker_protocol.pb.dart';
+import 'dart:async';
+
+import '../worker_protocol.pb.dart';
/// Interface for a [WorkerConnection].
///
@@ -10,7 +12,7 @@
abstract class WorkerConnection {
/// Read a [WorkRequest]. Returns either [Future<WorkRequest>] or
/// [WorkRequest].
- dynamic readRequest();
+ FutureOr<WorkRequest> readRequest();
/// Writes a [WorkResponse].
void writeResponse(WorkResponse response);
diff --git a/lib/src/worker_loop.dart b/lib/src/worker/worker_loop.dart
similarity index 94%
rename from lib/src/worker_loop.dart
rename to lib/src/worker/worker_loop.dart
index 8eb7008..2e4a023 100644
--- a/lib/src/worker_loop.dart
+++ b/lib/src/worker/worker_loop.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'worker_protocol.pb.dart';
+import '../worker_protocol.pb.dart';
/// Interface for a [WorkerLoop].
///