| Index: sdk/lib/_internal/pub/lib/src/barback/build_directory.dart
|
| diff --git a/sdk/lib/_internal/pub/lib/src/barback/build_directory.dart b/sdk/lib/_internal/pub/lib/src/barback/build_directory.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2c8cc19059f38cb621385148ee174900c8dc827e
|
| --- /dev/null
|
| +++ b/sdk/lib/_internal/pub/lib/src/barback/build_directory.dart
|
| @@ -0,0 +1,54 @@
|
| +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
| +// 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.
|
| +
|
| +library pub.barback.build_environment;
|
| +
|
| +import 'dart:async';
|
| +
|
| +import 'package:watcher/watcher.dart';
|
| +
|
| +import 'build_environment.dart';
|
| +import 'server.dart';
|
| +
|
| +/// A directory in the entrypoint package whose contents have been made
|
| +/// available to barback and that are bound to a server.
|
| +class BuildDirectory {
|
| + final BuildEnvironment _environment;
|
| +
|
| + /// The relative directory path within the package.
|
| + final String directory;
|
| +
|
| + /// The server bound to this directory.
|
| + BarbackServer get server => _server;
|
| + BarbackServer _server;
|
| +
|
| + /// The subscription to the [DirectoryWatcher] used to watch this directory
|
| + /// for changes.
|
| + ///
|
| + /// If the directory is not being watched, this will be `null`.
|
| + StreamSubscription<WatchEvent> watchSubscription;
|
| +
|
| + BuildDirectory(this._environment, this.directory);
|
| +
|
| + /// Binds a server running on [hostname]:[port] to this directory.
|
| + Future<BarbackServer> serve(String hostname, int port) {
|
| + return BarbackServer.bind(_environment, hostname, port, directory)
|
| + .then((server) => _server = server);
|
| + }
|
| +
|
| + /// Removes the build directory from the build environment.
|
| + ///
|
| + /// Closes the server, removes the assets from barback, and stops watching it.
|
| + Future close() {
|
| + var futures = [server.close()];
|
| +
|
| + // Stop watching the directory.
|
| + if (watchSubscription != null) {
|
| + var cancel = watchSubscription.cancel();
|
| + if (cancel != null) futures.add(cancel);
|
| + }
|
| +
|
| + return Future.wait(futures);
|
| + }
|
| +}
|
|
|