Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: sdk/lib/io/file_impl.dart

Issue 1974043002: Revert "Fix remaining strong-mode warnings and errors in dart:io." (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sdk/lib/io/directory_impl.dart ('k') | sdk/lib/io/http_impl.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.io; 5 part of dart.io;
6 6
7 // Read the file in blocks of size 64k. 7 // Read the file in blocks of size 64k.
8 const int _BLOCK_SIZE = 64 * 1024; 8 const int _BLOCK_SIZE = 64 * 1024;
9 9
10 10
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 completer.complete(_file); 206 completer.complete(_file);
207 }, 207 },
208 onError: error, 208 onError: error,
209 cancelOnError: true); 209 cancelOnError: true);
210 }) 210 })
211 .catchError(completer.completeError); 211 .catchError(completer.completeError);
212 return completer.future; 212 return completer.future;
213 } 213 }
214 214
215 Future<File> close() => 215 Future<File> close() =>
216 _openFuture.then/*<File>*/((openedFile) => openedFile.close()); 216 _openFuture.then((openedFile) => openedFile.close());
217 } 217 }
218 218
219 219
220 // Class for encapsulating the native implementation of files. 220 // Class for encapsulating the native implementation of files.
221 class _File extends FileSystemEntity implements File { 221 class _File extends FileSystemEntity implements File {
222 final String path; 222 final String path;
223 223
224 // Constructor for file. 224 // Constructor for file.
225 _File(this.path) { 225 _File(this.path) {
226 if (path is! String) { 226 if (path is! String) {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 mode != FileMode.APPEND && 434 mode != FileMode.APPEND &&
435 mode != FileMode.WRITE_ONLY && 435 mode != FileMode.WRITE_ONLY &&
436 mode != FileMode.WRITE_ONLY_APPEND) { 436 mode != FileMode.WRITE_ONLY_APPEND) {
437 throw new ArgumentError('Invalid file mode for this operation'); 437 throw new ArgumentError('Invalid file mode for this operation');
438 } 438 }
439 var consumer = new _FileStreamConsumer(this, mode); 439 var consumer = new _FileStreamConsumer(this, mode);
440 return new IOSink(consumer, encoding: encoding); 440 return new IOSink(consumer, encoding: encoding);
441 } 441 }
442 442
443 Future<List<int>> readAsBytes() { 443 Future<List<int>> readAsBytes() {
444 Future<List<int>> readDataChunked(RandomAccessFile file) { 444 Future<List<int>> readDataChunked(file) {
445 var builder = new BytesBuilder(copy: false); 445 var builder = new BytesBuilder(copy: false);
446 var completer = new Completer<List<int>>(); 446 var completer = new Completer();
447 void read() { 447 void read() {
448 file.read(_BLOCK_SIZE).then((data) { 448 file.read(_BLOCK_SIZE).then((data) {
449 if (data.length > 0) { 449 if (data.length > 0) {
450 builder.add(data); 450 builder.add(data);
451 read(); 451 read();
452 } else { 452 } else {
453 completer.complete(builder.takeBytes()); 453 completer.complete(builder.takeBytes());
454 } 454 }
455 }, onError: completer.completeError); 455 }, onError: completer.completeError);
456 } 456 }
457 read(); 457 read();
458 return completer.future; 458 return completer.future;
459 } 459 }
460 460
461 return open().then((file) { 461 return open().then((file) {
462 return file.length().then((length) { 462 return file.length().then((length) {
463 if (length == 0) { 463 if (length == 0) {
464 // May be character device, try to read it in chunks. 464 // May be character device, try to read it in chunks.
465 return readDataChunked(file); 465 return readDataChunked(file);
466 } 466 }
467 return file.read(length); 467 return file.read(length);
468 }).whenComplete(file.close); 468 }).whenComplete(file.close);
469 }); 469 });
470 } 470 }
471 471
472 List<int> readAsBytesSync() { 472 List<int> readAsBytesSync() {
473 var opened = openSync(); 473 var opened = openSync();
474 try { 474 try {
475 List<int> data; 475 var data;
476 var length = opened.lengthSync(); 476 var length = opened.lengthSync();
477 if (length == 0) { 477 if (length == 0) {
478 // May be character device, try to read it in chunks. 478 // May be character device, try to read it in chunks.
479 var builder = new BytesBuilder(copy: false); 479 var builder = new BytesBuilder(copy: false);
480 do { 480 do {
481 data = opened.readSync(_BLOCK_SIZE); 481 data = opened.readSync(_BLOCK_SIZE);
482 if (data.length > 0) builder.add(data); 482 if (data.length > 0) builder.add(data);
483 } while (data.length > 0); 483 } while (data.length > 0);
484 data = builder.takeBytes(); 484 data = builder.takeBytes();
485 } else { 485 } else {
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 663
664 Future<List<int>> read(int bytes) { 664 Future<List<int>> read(int bytes) {
665 if (bytes is !int) { 665 if (bytes is !int) {
666 throw new ArgumentError(bytes); 666 throw new ArgumentError(bytes);
667 } 667 }
668 return _dispatch(_FILE_READ, [null, bytes]).then((response) { 668 return _dispatch(_FILE_READ, [null, bytes]).then((response) {
669 if (_isErrorResponse(response)) { 669 if (_isErrorResponse(response)) {
670 throw _exceptionFromResponse(response, "read failed", path); 670 throw _exceptionFromResponse(response, "read failed", path);
671 } 671 }
672 _resourceInfo.addRead(response[1].length); 672 _resourceInfo.addRead(response[1].length);
673 return response[1] as Object/*=List<int>*/; 673 return response[1];
674 }); 674 });
675 } 675 }
676 676
677 List<int> readSync(int bytes) { 677 List<int> readSync(int bytes) {
678 _checkAvailable(); 678 _checkAvailable();
679 if (bytes is !int) { 679 if (bytes is !int) {
680 throw new ArgumentError(bytes); 680 throw new ArgumentError(bytes);
681 } 681 }
682 var result = _ops.read(bytes); 682 var result = _ops.read(bytes);
683 if (result is OSError) { 683 if (result is OSError) {
684 throw new FileSystemException("readSync failed", path, result); 684 throw new FileSystemException("readSync failed", path, result);
685 } 685 }
686 _resourceInfo.addRead(result.length); 686 _resourceInfo.addRead(result.length);
687 return result as Object/*=List<int>*/; 687 return result;
688 } 688 }
689 689
690 Future<int> readInto(List<int> buffer, [int start = 0, int end]) { 690 Future<int> readInto(List<int> buffer, [int start = 0, int end]) {
691 if ((buffer is !List) || 691 if ((buffer is !List) ||
692 ((start != null) && (start is !int)) || 692 ((start != null) && (start is !int)) ||
693 ((end != null) && (end is !int))) { 693 ((end != null) && (end is !int))) {
694 throw new ArgumentError(); 694 throw new ArgumentError();
695 } 695 }
696 end = RangeError.checkValidRange(start, end, buffer.length); 696 end = RangeError.checkValidRange(start, end, buffer.length);
697 if (end == start) { 697 if (end == start) {
698 return new Future.value(0); 698 return new Future.value(0);
699 } 699 }
700 int length = end - start; 700 int length = end - start;
701 return _dispatch(_FILE_READ_INTO, [null, length]).then((response) { 701 return _dispatch(_FILE_READ_INTO, [null, length]).then((response) {
702 if (_isErrorResponse(response)) { 702 if (_isErrorResponse(response)) {
703 throw _exceptionFromResponse(response, "readInto failed", path); 703 throw _exceptionFromResponse(response, "readInto failed", path);
704 } 704 }
705 var read = response[1]; 705 var read = response[1];
706 var data = response[2] as Object/*=List<int>*/; 706 var data = response[2];
707 buffer.setRange(start, start + read, data); 707 buffer.setRange(start, start + read, data);
708 _resourceInfo.addRead(read); 708 _resourceInfo.addRead(read);
709 return read; 709 return read;
710 }); 710 });
711 } 711 }
712 712
713 int readIntoSync(List<int> buffer, [int start = 0, int end]) { 713 int readIntoSync(List<int> buffer, [int start = 0, int end]) {
714 _checkAvailable(); 714 _checkAvailable();
715 if ((buffer is !List) || 715 if ((buffer is !List) ||
716 ((start != null) && (start is !int)) || 716 ((start != null) && (start is !int)) ||
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 void _checkAvailable() { 1016 void _checkAvailable() {
1017 if (_asyncDispatched) { 1017 if (_asyncDispatched) {
1018 throw new FileSystemException("An async operation is currently pending", 1018 throw new FileSystemException("An async operation is currently pending",
1019 path); 1019 path);
1020 } 1020 }
1021 if (closed) { 1021 if (closed) {
1022 throw new FileSystemException("File closed", path); 1022 throw new FileSystemException("File closed", path);
1023 } 1023 }
1024 } 1024 }
1025 } 1025 }
OLDNEW
« no previous file with comments | « sdk/lib/io/directory_impl.dart ('k') | sdk/lib/io/http_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698