| Index: sdk/lib/io/file_impl.dart
|
| diff --git a/sdk/lib/io/file_impl.dart b/sdk/lib/io/file_impl.dart
|
| index a7c145099f8eb3cb6d1eaf38d13d9b5d7a2d806e..fb6b272cf171dc3534bbb84817796f27d740d8a0 100644
|
| --- a/sdk/lib/io/file_impl.dart
|
| +++ b/sdk/lib/io/file_impl.dart
|
| @@ -338,14 +338,10 @@ class _File implements File {
|
|
|
| Future<RandomAccessFile> open({FileMode mode: FileMode.READ}) {
|
| _ensureFileService();
|
| - Completer<RandomAccessFile> completer = new Completer<RandomAccessFile>();
|
| if (mode != FileMode.READ &&
|
| mode != FileMode.WRITE &&
|
| mode != FileMode.APPEND) {
|
| - Timer.run(() {
|
| - completer.completeError(new ArgumentError());
|
| - });
|
| - return completer.future;
|
| + return new Future.error(new ArgumentError());
|
| }
|
| List request = new List(3);
|
| request[0] = _OPEN_REQUEST;
|
| @@ -523,7 +519,6 @@ class _File implements File {
|
|
|
| Future<List<String>> readAsLines({Encoding encoding: Encoding.UTF_8}) {
|
| _ensureFileService();
|
| - Completer<List<String>> completer = new Completer<List<String>>();
|
| return readAsBytes().then((bytes) {
|
| return _decodeLines(bytes, encoding);
|
| });
|
| @@ -557,9 +552,7 @@ class _File implements File {
|
| try {
|
| return writeAsBytes(_encodeString(contents, encoding), mode: mode);
|
| } catch (e) {
|
| - var completer = new Completer();
|
| - Timer.run(() => completer.completeError(e));
|
| - return completer.future;
|
| + return new Future.error(e);
|
| }
|
| }
|
|
|
| @@ -595,8 +588,7 @@ class _RandomAccessFile implements RandomAccessFile {
|
| _RandomAccessFile(int this._id, String this._path);
|
|
|
| Future<RandomAccessFile> close() {
|
| - Completer<RandomAccessFile> completer = new Completer<RandomAccessFile>();
|
| - if (closed) return _completeWithClosedException(completer);
|
| + if (closed) return _closedException();
|
| _ensureFileService();
|
| List request = new List(2);
|
| request[0] = _CLOSE_REQUEST;
|
| @@ -627,8 +619,7 @@ class _RandomAccessFile implements RandomAccessFile {
|
|
|
| Future<int> readByte() {
|
| _ensureFileService();
|
| - Completer<int> completer = new Completer<int>();
|
| - if (closed) return _completeWithClosedException(completer);
|
| + if (closed) return _closedException();
|
| List request = new List(2);
|
| request[0] = _READ_BYTE_REQUEST;
|
| request[1] = _id;
|
| @@ -654,18 +645,11 @@ class _RandomAccessFile implements RandomAccessFile {
|
|
|
| Future<List<int>> read(int bytes) {
|
| _ensureFileService();
|
| - Completer<List<int>> completer = new Completer<List<int>>();
|
| if (bytes is !int) {
|
| - // Complete asynchronously so the user has a chance to setup
|
| - // handlers without getting exceptions when registering the
|
| - // then handler.
|
| - Timer.run(() {
|
| - completer.completeError(new FileIOException(
|
| - "Invalid arguments to read for file '$_path'"));
|
| - });
|
| - return completer.future;
|
| - };
|
| - if (closed) return _completeWithClosedException(completer);
|
| + return new Future.error(new FileIOException(
|
| + "Invalid arguments to read for file '$_path'"));
|
| + }
|
| + if (closed) return _closedException();
|
| List request = new List(3);
|
| request[0] = _READ_REQUEST;
|
| request[1] = _id;
|
| @@ -703,8 +687,7 @@ class _RandomAccessFile implements RandomAccessFile {
|
| return new Future.error(new FileIOException(
|
| "Invalid arguments to readInto for file '$_path'"));
|
| };
|
| - Completer<int> completer = new Completer<int>();
|
| - if (closed) return _completeWithClosedException(completer);
|
| + if (closed) return _closedException();
|
| List request = new List(3);
|
| if (start == null) start = 0;
|
| if (end == null) end = buffer.length;
|
| @@ -755,18 +738,11 @@ class _RandomAccessFile implements RandomAccessFile {
|
|
|
| Future<RandomAccessFile> writeByte(int value) {
|
| _ensureFileService();
|
| - Completer<RandomAccessFile> completer = new Completer<RandomAccessFile>();
|
| if (value is !int) {
|
| - // Complete asynchronously so the user has a chance to setup
|
| - // handlers without getting exceptions when registering the
|
| - // then handler.
|
| - Timer.run(() {
|
| - completer.completeError(new FileIOException(
|
| - "Invalid argument to writeByte for file '$_path'"));
|
| - });
|
| - return completer.future;
|
| + return new Future.error(new FileIOException(
|
| + "Invalid argument to writeByte for file '$_path'"));
|
| }
|
| - if (closed) return _completeWithClosedException(completer);
|
| + if (closed) return _closedException();
|
| List request = new List(3);
|
| request[0] = _WRITE_BYTE_REQUEST;
|
| request[1] = _id;
|
| @@ -804,9 +780,8 @@ class _RandomAccessFile implements RandomAccessFile {
|
| return new Future.error(new FileIOException(
|
| "Invalid arguments to writeFrom for file '$_path'"));
|
| }
|
| - Completer<RandomAccessFile> completer = new Completer<RandomAccessFile>();
|
|
|
| - if (closed) return _completeWithClosedException(completer);
|
| + if (closed) return _closedException();
|
|
|
| _BufferAndStart result;
|
| try {
|
| @@ -858,12 +833,8 @@ class _RandomAccessFile implements RandomAccessFile {
|
| Future<RandomAccessFile> writeString(String string,
|
| {Encoding encoding: Encoding.UTF_8}) {
|
| if (encoding is! Encoding) {
|
| - var completer = new Completer();
|
| - Timer.run(() {
|
| - completer.completeError(new FileIOException(
|
| - "Invalid encoding in writeString: $encoding"));
|
| - });
|
| - return completer.future;
|
| + return new Future.error(new FileIOException(
|
| + "Invalid encoding in writeString: $encoding"));
|
| }
|
| var data = _encodeString(string, encoding);
|
| return writeFrom(data, 0, data.length);
|
| @@ -880,8 +851,7 @@ class _RandomAccessFile implements RandomAccessFile {
|
|
|
| Future<int> position() {
|
| _ensureFileService();
|
| - Completer<int> completer = new Completer<int>();
|
| - if (closed) return _completeWithClosedException(completer);
|
| + if (closed) return _closedException();
|
| List request = new List(2);
|
| request[0] = _POSITION_REQUEST;
|
| request[1] = _id;
|
| @@ -907,8 +877,7 @@ class _RandomAccessFile implements RandomAccessFile {
|
|
|
| Future<RandomAccessFile> setPosition(int position) {
|
| _ensureFileService();
|
| - Completer<RandomAccessFile> completer = new Completer<RandomAccessFile>();
|
| - if (closed) return _completeWithClosedException(completer);
|
| + if (closed) return _closedException();
|
| List request = new List(3);
|
| request[0] = _SET_POSITION_REQUEST;
|
| request[1] = _id;
|
| @@ -934,8 +903,7 @@ class _RandomAccessFile implements RandomAccessFile {
|
|
|
| Future<RandomAccessFile> truncate(int length) {
|
| _ensureFileService();
|
| - Completer<RandomAccessFile> completer = new Completer<RandomAccessFile>();
|
| - if (closed) return _completeWithClosedException(completer);
|
| + if (closed) return _closedException();
|
| List request = new List(3);
|
| request[0] = _TRUNCATE_REQUEST;
|
| request[1] = _id;
|
| @@ -961,8 +929,7 @@ class _RandomAccessFile implements RandomAccessFile {
|
|
|
| Future<int> length() {
|
| _ensureFileService();
|
| - Completer<int> completer = new Completer<int>();
|
| - if (closed) return _completeWithClosedException(completer);
|
| + if (closed) return _closedException();
|
| List request = new List(2);
|
| request[0] = _LENGTH_REQUEST;
|
| request[1] = _id;
|
| @@ -988,8 +955,7 @@ class _RandomAccessFile implements RandomAccessFile {
|
|
|
| Future<RandomAccessFile> flush() {
|
| _ensureFileService();
|
| - Completer<RandomAccessFile> completer = new Completer<RandomAccessFile>();
|
| - if (closed) return _completeWithClosedException(completer);
|
| + if (closed) return _closedException();
|
| List request = new List(2);
|
| request[0] = _FLUSH_REQUEST;
|
| request[1] = _id;
|
| @@ -1028,12 +994,8 @@ class _RandomAccessFile implements RandomAccessFile {
|
| }
|
| }
|
|
|
| - Future _completeWithClosedException(Completer completer) {
|
| - Timer.run(() {
|
| - completer.completeError(
|
| - new FileIOException("File closed '$_path'"));
|
| - });
|
| - return completer.future;
|
| + Future _closedException() {
|
| + return new Future.error(new FileIOException("File closed '$_path'"));
|
| }
|
|
|
| final String _path;
|
|
|