OLD | NEW |
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 29 matching lines...) Expand all Loading... |
40 {void onError(error), | 40 {void onError(error), |
41 void onDone(), | 41 void onDone(), |
42 bool cancelOnError}) { | 42 bool cancelOnError}) { |
43 return _controller.stream.listen(onData, | 43 return _controller.stream.listen(onData, |
44 onError: onError, | 44 onError: onError, |
45 onDone: onDone, | 45 onDone: onDone, |
46 cancelOnError: cancelOnError); | 46 cancelOnError: cancelOnError); |
47 } | 47 } |
48 | 48 |
49 void _setupController() { | 49 void _setupController() { |
50 _controller = new StreamController<List<int>>( | 50 _controller = new StreamController<List<int>>(sync: true, |
51 onListen: _start, | 51 onListen: _start, |
52 onPause: () => _paused = true, | 52 onPause: () => _paused = true, |
53 onResume: _resume, | 53 onResume: _resume, |
54 onCancel: () { | 54 onCancel: () { |
55 _unsubscribed = true; | 55 _unsubscribed = true; |
56 _closeFile(); | 56 _closeFile(); |
57 }); | 57 }); |
58 } | 58 } |
59 | 59 |
60 Future _closeFile() { | 60 Future _closeFile() { |
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 } | 481 } |
482 | 482 |
483 String readAsStringSync({Encoding encoding: Encoding.UTF_8}) { | 483 String readAsStringSync({Encoding encoding: Encoding.UTF_8}) { |
484 List<int> bytes = readAsBytesSync(); | 484 List<int> bytes = readAsBytesSync(); |
485 return _decodeString(bytes, encoding); | 485 return _decodeString(bytes, encoding); |
486 } | 486 } |
487 | 487 |
488 static List<String> _decodeLines(List<int> bytes, Encoding encoding) { | 488 static List<String> _decodeLines(List<int> bytes, Encoding encoding) { |
489 if (bytes.length == 0) return []; | 489 if (bytes.length == 0) return []; |
490 var list = []; | 490 var list = []; |
491 var controller = new StreamController(); | 491 var controller = new StreamController(sync: true); |
492 controller.stream | 492 controller.stream |
493 .transform(new StringDecoder(encoding)) | 493 .transform(new StringDecoder(encoding)) |
494 .transform(new LineTransformer()) | 494 .transform(new LineTransformer()) |
495 .listen((line) => list.add(line)); | 495 .listen((line) => list.add(line)); |
496 controller.add(bytes); | 496 controller.add(bytes); |
497 controller.close(); | 497 controller.close(); |
498 return list; | 498 return list; |
499 } | 499 } |
500 | 500 |
501 Future<List<String>> readAsLines({Encoding encoding: Encoding.UTF_8}) { | 501 Future<List<String>> readAsLines({Encoding encoding: Encoding.UTF_8}) { |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
977 | 977 |
978 Future _closedException() { | 978 Future _closedException() { |
979 return new Future.error(new FileIOException("File closed '$_path'")); | 979 return new Future.error(new FileIOException("File closed '$_path'")); |
980 } | 980 } |
981 | 981 |
982 final String _path; | 982 final String _path; |
983 int _id; | 983 int _id; |
984 | 984 |
985 SendPort _fileService; | 985 SendPort _fileService; |
986 } | 986 } |
OLD | NEW |