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

Side by Side Diff: mojo/dart/embedder/io/file_patch.dart

Issue 1964193002: Dart: Refactors Proxies (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Address comments 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'dart:_mojo_services/mojo/files/types.mojom.dart' as types; 5 import 'dart:_mojo_services/mojo/files/types.mojom.dart' as types;
6 6
7 // 7 //
8 // Implementation of Directory, File, and RandomAccessFile for Mojo. 8 // Implementation of Directory, File, and RandomAccessFile for Mojo.
9 // 9 //
10 10
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 } else { 105 } else {
106 return create(); 106 return create();
107 } 107 }
108 }); 108 });
109 } 109 }
110 DirectoryProxy rootDirectory = await _getRootDirectory(); 110 DirectoryProxy rootDirectory = await _getRootDirectory();
111 int flags = 111 int flags =
112 types.kOpenFlagRead | types.kOpenFlagWrite | types.kOpenFlagCreate; 112 types.kOpenFlagRead | types.kOpenFlagWrite | types.kOpenFlagCreate;
113 var response = 113 var response =
114 await rootDirectory.responseOrError( 114 await rootDirectory.responseOrError(
115 rootDirectory.ptr.openDirectory(_ensurePathIsRelative(path), 115 rootDirectory.openDirectory(_ensurePathIsRelative(path),
116 null, 116 null,
117 flags)); 117 flags));
118 if (response.error != types.Error.ok) { 118 if (response.error != types.Error.ok) {
119 throw _OSErrorFromError(response.error); 119 throw _OSErrorFromError(response.error);
120 } 120 }
121 return this; 121 return this;
122 } 122 }
123 123
124 /* patch */ void createSync({bool recursive: false}) => _onSyncOperation(); 124 /* patch */ void createSync({bool recursive: false}) => _onSyncOperation();
125 125
126 /* patch */ Future<Directory> createTemp([String prefix]) async { 126 /* patch */ Future<Directory> createTemp([String prefix]) async {
127 DirectoryProxy rootDirectory = await _getRootDirectory(); 127 DirectoryProxy rootDirectory = await _getRootDirectory();
128 // Create directory and fail if it already exists. 128 // Create directory and fail if it already exists.
129 int flags = types.kOpenFlagRead | types.kOpenFlagWrite | 129 int flags = types.kOpenFlagRead | types.kOpenFlagWrite |
130 types.kOpenFlagCreate | types.kOpenFlagExclusive; 130 types.kOpenFlagCreate | types.kOpenFlagExclusive;
131 String tempPath = '$path/$prefix'; 131 String tempPath = '$path/$prefix';
132 while (true) { 132 while (true) {
133 var response = 133 var response =
134 await rootDirectory.responseOrError( 134 await rootDirectory.responseOrError(
135 rootDirectory.ptr.openDirectory(tempPath, null, flags)); 135 rootDirectory.openDirectory(tempPath, null, flags));
136 if (response.error == types.Error.ok) { 136 if (response.error == types.Error.ok) {
137 // Success. 137 // Success.
138 break; 138 break;
139 } 139 }
140 // Alter the path and try again. 140 // Alter the path and try again.
141 // TODO(johnmccutchan): Append a randomly generated character. 141 // TODO(johnmccutchan): Append a randomly generated character.
142 tempPath = tempPath + 'a'; 142 tempPath = tempPath + 'a';
143 } 143 }
144 return new Directory(tempPath); 144 return new Directory(tempPath);
145 } 145 }
146 146
147 /* patch */ Directory createTempSync([String prefix]) => _onSyncOperation(); 147 /* patch */ Directory createTempSync([String prefix]) => _onSyncOperation();
148 148
149 /* patch */ Future<bool> exists() async { 149 /* patch */ Future<bool> exists() async {
150 DirectoryProxy rootDirectory = await _getRootDirectory(); 150 DirectoryProxy rootDirectory = await _getRootDirectory();
151 int flags = types.kOpenFlagRead | types.kOpenFlagWrite; 151 int flags = types.kOpenFlagRead | types.kOpenFlagWrite;
152 var response = 152 var response =
153 await await rootDirectory.responseOrError( 153 await await rootDirectory.responseOrError(
154 rootDirectory.ptr.openDirectory(_ensurePathIsRelative(path), 154 rootDirectory.openDirectory(_ensurePathIsRelative(path),
155 null, 155 null,
156 flags)); 156 flags));
157 // If we can open it, it exists. 157 // If we can open it, it exists.
158 return response.error == types.Error.ok; 158 return response.error == types.Error.ok;
159 } 159 }
160 160
161 /* patch */ bool existsSync() => _onSyncOperation(); 161 /* patch */ bool existsSync() => _onSyncOperation();
162 162
163 /* patch */ Stream<FileSystemEntity> list({bool recursive: false, 163 /* patch */ Stream<FileSystemEntity> list({bool recursive: false,
164 bool followLinks: true}) { 164 bool followLinks: true}) {
165 _DirectoryLister directoryLister = new _DirectoryLister(path, recursive); 165 _DirectoryLister directoryLister = new _DirectoryLister(path, recursive);
166 StreamController streamController = new StreamController(); 166 StreamController streamController = new StreamController();
167 directoryLister.list(streamController); 167 directoryLister.list(streamController);
168 return streamController.stream; 168 return streamController.stream;
169 } 169 }
170 170
171 /* patch */ List listSync({bool recursive: false, 171 /* patch */ List listSync({bool recursive: false,
172 bool followLinks: true}) { 172 bool followLinks: true}) {
173 return _onSyncOperation(); 173 return _onSyncOperation();
174 } 174 }
175 175
176 /* patch */ Future<FileStat> stat() { 176 /* patch */ Future<FileStat> stat() {
177 return FileStat.stat(path); 177 return FileStat.stat(path);
178 } 178 }
179 179
180 /* patch */ FileStat statSync() => _onSyncOperation(); 180 /* patch */ FileStat statSync() => _onSyncOperation();
181 181
182 /* patch */ Future<Directory> rename(String newPath) async { 182 /* patch */ Future<Directory> rename(String newPath) async {
183 DirectoryProxy rootDirectory = await _getRootDirectory(); 183 DirectoryProxy rootDirectory = await _getRootDirectory();
184 var response = await rootDirectory.responseOrError( 184 var response = await rootDirectory.responseOrError(
185 rootDirectory.ptr.rename(_ensurePathIsRelative(path), 185 rootDirectory.rename(_ensurePathIsRelative(path),
186 _ensurePathIsRelative(newPath))); 186 _ensurePathIsRelative(newPath)));
187 if (response.error != types.Error.ok) { 187 if (response.error != types.Error.ok) {
188 throw _OSErrorFromError(response.error); 188 throw _OSErrorFromError(response.error);
189 } 189 }
190 return new Directory(newPath); 190 return new Directory(newPath);
191 } 191 }
192 192
193 /* patch */ Directory renameSync(String newPath) => _onSyncOperation(); 193 /* patch */ Directory renameSync(String newPath) => _onSyncOperation();
194 194
195 /* patch */ static _current() { 195 /* patch */ static _current() {
196 return _currentDirectoryPath; 196 return _currentDirectoryPath;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 DirectoryProxy rootDirectory = await _getRootDirectory(); 243 DirectoryProxy rootDirectory = await _getRootDirectory();
244 int flags = types.kOpenFlagRead | types.kOpenFlagWrite; 244 int flags = types.kOpenFlagRead | types.kOpenFlagWrite;
245 245
246 while (_directoriesToList.length > 0) { 246 while (_directoriesToList.length > 0) {
247 // Remove head. 247 // Remove head.
248 String path = _directoriesToList.removeAt(0); 248 String path = _directoriesToList.removeAt(0);
249 // Open directory. 249 // Open directory.
250 DirectoryProxy directory = new DirectoryProxy.unbound(); 250 DirectoryProxy directory = new DirectoryProxy.unbound();
251 var response = 251 var response =
252 await rootDirectory.responseOrError( 252 await rootDirectory.responseOrError(
253 rootDirectory.ptr.openDirectory(_ensurePathIsRelative(path), 253 rootDirectory.openDirectory(_ensurePathIsRelative(path),
254 directory, 254 directory,
255 flags)); 255 flags));
256 if (response.error != types.Error.ok) { 256 if (response.error != types.Error.ok) {
257 // Skip if we can't open it. 257 // Skip if we can't open it.
258 continue; 258 continue;
259 } 259 }
260 // Read contents. 260 // Read contents.
261 var readResponse = await directory.responseOrError(directory.ptr.read()); 261 var readResponse = await directory.responseOrError(directory.read());
262 // We are done with the directory now. 262 // We are done with the directory now.
263 directory.close(immediate: true); 263 directory.close(immediate: true);
264 if (readResponse.error != types.Error.ok) { 264 if (readResponse.error != types.Error.ok) {
265 // Skip if we can't read it. 265 // Skip if we can't read it.
266 continue; 266 continue;
267 } 267 }
268 List<types.DirectoryEntry> directoryContents = 268 List<types.DirectoryEntry> directoryContents =
269 readResponse.directoryContents; 269 readResponse.directoryContents;
270 for (types.DirectoryEntry entry in directoryContents) { 270 for (types.DirectoryEntry entry in directoryContents) {
271 String childPath = '$path/${entry.name}'; 271 String childPath = '$path/${entry.name}';
(...skipping 12 matching lines...) Expand all
284 streamController.close(); 284 streamController.close();
285 } 285 }
286 } 286 }
287 287
288 patch class _File { 288 patch class _File {
289 /* patch */ Future<bool> exists() async { 289 /* patch */ Future<bool> exists() async {
290 DirectoryProxy rootDirectory = await _getRootDirectory(); 290 DirectoryProxy rootDirectory = await _getRootDirectory();
291 int flags = types.kOpenFlagRead; 291 int flags = types.kOpenFlagRead;
292 var response = 292 var response =
293 await rootDirectory.responseOrError( 293 await rootDirectory.responseOrError(
294 rootDirectory.ptr.openFile(_ensurePathIsRelative(path), 294 rootDirectory.openFile(_ensurePathIsRelative(path),
295 null, 295 null,
296 flags)); 296 flags));
297 // If we can open it, it exists. 297 // If we can open it, it exists.
298 return response.error == types.Error.ok; 298 return response.error == types.Error.ok;
299 } 299 }
300 300
301 /* patch */ bool existsSync() => _onSyncOperation(); 301 /* patch */ bool existsSync() => _onSyncOperation();
302 302
303 /* patch */ FileStat statSync() => _onSyncOperation(); 303 /* patch */ FileStat statSync() => _onSyncOperation();
304 304
305 /* patch */ Future<File> create({bool recursive: false}) async { 305 /* patch */ Future<File> create({bool recursive: false}) async {
306 if (recursive) { 306 if (recursive) {
307 // Create any parent directories. 307 // Create any parent directories.
308 await parent.create(recursive: true); 308 await parent.create(recursive: true);
309 } 309 }
310 DirectoryProxy rootDirectory = await _getRootDirectory(); 310 DirectoryProxy rootDirectory = await _getRootDirectory();
311 int flags = types.kOpenFlagWrite | types.kOpenFlagCreate; 311 int flags = types.kOpenFlagWrite | types.kOpenFlagCreate;
312 var response = 312 var response =
313 await rootDirectory.responseOrError( 313 await rootDirectory.responseOrError(
314 rootDirectory.ptr.openFile(_ensurePathIsRelative(path), 314 rootDirectory.openFile(_ensurePathIsRelative(path),
315 null, 315 null,
316 flags)); 316 flags));
317 if (response.error != types.Error.ok) { 317 if (response.error != types.Error.ok) {
318 throw _OSErrorFromError(response.error); 318 throw _OSErrorFromError(response.error);
319 } 319 }
320 return this; 320 return this;
321 } 321 }
322 322
323 /* patch */ void createSync({bool recursive: false}) => _onSyncOperation(); 323 /* patch */ void createSync({bool recursive: false}) => _onSyncOperation();
324 324
325 /* patch */ Future<File> rename(String newPath) async { 325 /* patch */ Future<File> rename(String newPath) async {
326 DirectoryProxy rootDirectory = await _getRootDirectory(); 326 DirectoryProxy rootDirectory = await _getRootDirectory();
327 var response = await rootDirectory.responseOrError( 327 var response = await rootDirectory.responseOrError(
328 rootDirectory.ptr.rename(_ensurePathIsRelative(path), 328 rootDirectory.rename(_ensurePathIsRelative(path),
329 _ensurePathIsRelative(newPath))); 329 _ensurePathIsRelative(newPath)));
330 if (response.error != types.Error.ok) { 330 if (response.error != types.Error.ok) {
331 throw _OSErrorFromError(response.error); 331 throw _OSErrorFromError(response.error);
332 } 332 }
333 return new File(newPath); 333 return new File(newPath);
334 } 334 }
335 335
336 /* patch */ File renameSync(String newPath) => _onSyncOperation(); 336 /* patch */ File renameSync(String newPath) => _onSyncOperation();
337 337
338 /* patch */ Future<File> copy(String newPath) async { 338 /* patch */ Future<File> copy(String newPath) async {
339 File copyFile = new File(newPath); 339 File copyFile = new File(newPath);
340 Stream<List<int>> input = openRead(); 340 Stream<List<int>> input = openRead();
341 IOSink output = copyFile.openWrite(); 341 IOSink output = copyFile.openWrite();
342 // Copy contents. 342 // Copy contents.
343 await output.addStream(input); 343 await output.addStream(input);
344 // Close. 344 // Close.
345 await output.close(); 345 await output.close();
346 return copyFile; 346 return copyFile;
347 } 347 }
348 348
349 /* patch */ File copySync(String newPath) => _onSyncOperation(); 349 /* patch */ File copySync(String newPath) => _onSyncOperation();
350 350
351 /* patch */ Future<RandomAccessFile> open( 351 /* patch */ Future<RandomAccessFile> open(
352 {FileMode mode: FileMode.READ}) async { 352 {FileMode mode: FileMode.READ}) async {
353 DirectoryProxy rootDirectory = await _getRootDirectory(); 353 DirectoryProxy rootDirectory = await _getRootDirectory();
354 FileProxy file = new FileProxy.unbound(); 354 FileProxy file = new FileProxy.unbound();
355 var response = await rootDirectory.responseOrError( 355 var response = await rootDirectory.responseOrError(
356 rootDirectory.ptr.openFile(_ensurePathIsRelative(path), 356 rootDirectory.openFile(_ensurePathIsRelative(path),
357 file, 357 file,
358 _openFlagsFromFileMode(mode))); 358 _openFlagsFromFileMode(mode)));
359 if (response.error != types.Error.ok) { 359 if (response.error != types.Error.ok) {
360 throw _OSErrorFromError(response.error); 360 throw _OSErrorFromError(response.error);
361 } 361 }
362 // We use the raw mojo handle as our fd. 362 // We use the raw mojo handle as our fd.
363 final int fd = file.impl.endpoint.handle.h; 363 final int fd = file.ctrl.endpoint.handle.h;
364 // Construct the RandomAccessFile using the original constructor. 364 // Construct the RandomAccessFile using the original constructor.
365 _RandomAccessFile raf = new _RandomAccessFile(fd, path); 365 _RandomAccessFile raf = new _RandomAccessFile(fd, path);
366 // Hook up our proxy. 366 // Hook up our proxy.
367 raf._proxy = file; 367 raf._proxy = file;
368 return raf; 368 return raf;
369 } 369 }
370 370
371 /* patch */ Future<int> length() async { 371 /* patch */ Future<int> length() async {
372 FileStat fileStat = await FileStat.stat(path); 372 FileStat fileStat = await FileStat.stat(path);
373 return fileStat.size; 373 return fileStat.size;
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 /* patch */ static FileStat statSync(String path) { 499 /* patch */ static FileStat statSync(String path) {
500 return _onSyncOperation(); 500 return _onSyncOperation();
501 } 501 }
502 502
503 /* patch */ static Future<FileStat> stat(String path) async { 503 /* patch */ static Future<FileStat> stat(String path) async {
504 DirectoryProxy rootDirectory = await _getRootDirectory(); 504 DirectoryProxy rootDirectory = await _getRootDirectory();
505 int flags = types.kOpenFlagRead | types.kOpenFlagWrite; 505 int flags = types.kOpenFlagRead | types.kOpenFlagWrite;
506 DirectoryProxy directory = new DirectoryProxy.unbound(); 506 DirectoryProxy directory = new DirectoryProxy.unbound();
507 var response = 507 var response =
508 await await rootDirectory.responseOrError( 508 await await rootDirectory.responseOrError(
509 rootDirectory.ptr.openDirectory(_ensurePathIsRelative(path), 509 rootDirectory.openDirectory(_ensurePathIsRelative(path),
510 directory, 510 directory,
511 flags)); 511 flags));
512 if (response.error != types.Error.ok) { 512 if (response.error != types.Error.ok) {
513 throw _OSErrorFromError(response.error); 513 throw _OSErrorFromError(response.error);
514 } 514 }
515 var statResponse = await directory.responseOrError(directory.ptr.stat()); 515 var statResponse = await directory.responseOrError(directory.stat());
516 // We are done with the directory now. 516 // We are done with the directory now.
517 directory.close(immediate: true); 517 directory.close(immediate: true);
518 if (statResponse.error != types.Error.ok) { 518 if (statResponse.error != types.Error.ok) {
519 throw _OSErrorFromError(response.error); 519 throw _OSErrorFromError(response.error);
520 } 520 }
521 types.FileInformation fileInformation = statResponse.fileInformation; 521 types.FileInformation fileInformation = statResponse.fileInformation;
522 DateTime modified = _dateTimeFromTimespec(fileInformation.mtime); 522 DateTime modified = _dateTimeFromTimespec(fileInformation.mtime);
523 DateTime accessed = _dateTimeFromTimespec(fileInformation.atime); 523 DateTime accessed = _dateTimeFromTimespec(fileInformation.atime);
524 int size = fileInformation.size; 524 int size = fileInformation.size;
525 const userReadWriteExecutableUnixMode = 0x1c0; 525 const userReadWriteExecutableUnixMode = 0x1c0;
(...skipping 20 matching lines...) Expand all
546 } 546 }
547 547
548 /* patch */ String resolveSymbolicLinksSync() { 548 /* patch */ String resolveSymbolicLinksSync() {
549 return _onSyncOperation(); 549 return _onSyncOperation();
550 } 550 }
551 551
552 /* patch */ Future<FileSystemEntity> delete({bool recursive: false}) async { 552 /* patch */ Future<FileSystemEntity> delete({bool recursive: false}) async {
553 DirectoryProxy rootDirectory = await _getRootDirectory(); 553 DirectoryProxy rootDirectory = await _getRootDirectory();
554 int flags = recursive ? types.kDeleteFlagRecursive : 0; 554 int flags = recursive ? types.kDeleteFlagRecursive : 0;
555 var response = await rootDirectory.responseOrError( 555 var response = await rootDirectory.responseOrError(
556 rootDirectory.ptr.delete(_ensurePathIsRelative(path), flags)); 556 rootDirectory.delete(_ensurePathIsRelative(path), flags));
557 if (response.error != types.Error.ok) { 557 if (response.error != types.Error.ok) {
558 throw _OSErrorFromError(response.error); 558 throw _OSErrorFromError(response.error);
559 } 559 }
560 return this; 560 return this;
561 } 561 }
562 562
563 /* patch */ void deleteSync({bool recursive: false}) { 563 /* patch */ void deleteSync({bool recursive: false}) {
564 _onSyncOperation(); 564 _onSyncOperation();
565 } 565 }
566 566
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 } 641 }
642 642
643 void _handleError(dynamic response) { 643 void _handleError(dynamic response) {
644 if (response.error != types.Error.ok) { 644 if (response.error != types.Error.ok) {
645 throw _OSErrorFromError(response.error); 645 throw _OSErrorFromError(response.error);
646 } 646 }
647 } 647 }
648 648
649 /* patch */ Future<RandomAccessFile> close() async { 649 /* patch */ Future<RandomAccessFile> close() async {
650 _ensureProxy(); 650 _ensureProxy();
651 await _proxy.responseOrError(_proxy.ptr.close()); 651 await _proxy.responseOrError(_proxy.close());
652 await _proxy.close(immediate: true); 652 await _proxy.close(immediate: true);
653 _proxy = null; 653 _proxy = null;
654 closed = true; 654 closed = true;
655 _maybePerformCleanup(); 655 _maybePerformCleanup();
656 return this; 656 return this;
657 } 657 }
658 658
659 /* patch */ void closeSync() { 659 /* patch */ void closeSync() {
660 _onSyncOperation(); 660 _onSyncOperation();
661 } 661 }
662 662
663 /* patch */ Future<int> readByte() async { 663 /* patch */ Future<int> readByte() async {
664 _ensureProxy(); 664 _ensureProxy();
665 var response = await _proxy.responseOrError( 665 var response = await _proxy.responseOrError(
666 _proxy.ptr.read(1, 0, types.Whence.fromCurrent)); 666 _proxy.read(1, 0, types.Whence.fromCurrent));
667 _handleError(response); 667 _handleError(response);
668 _resourceInfo.addRead(response.bytesRead.length); 668 _resourceInfo.addRead(response.bytesRead.length);
669 if (response.bytesRead.length == 0) { 669 if (response.bytesRead.length == 0) {
670 throw new FileSystemException("readByte failed."); 670 throw new FileSystemException("readByte failed.");
671 } 671 }
672 return response.bytesRead[0]; 672 return response.bytesRead[0];
673 } 673 }
674 674
675 /* patch */ int readByteSync() { 675 /* patch */ int readByteSync() {
676 return _onSyncOperation(); 676 return _onSyncOperation();
677 } 677 }
678 678
679 /* patch */ Future<List<int>> read(int bytes) async { 679 /* patch */ Future<List<int>> read(int bytes) async {
680 if (bytes is !int) { 680 if (bytes is !int) {
681 throw new ArgumentError(bytes); 681 throw new ArgumentError(bytes);
682 } 682 }
683 _ensureProxy(); 683 _ensureProxy();
684 var response = await _proxy.responseOrError( 684 var response = await _proxy.responseOrError(
685 _proxy.ptr.read(bytes, 0, types.Whence.fromCurrent)); 685 _proxy.read(bytes, 0, types.Whence.fromCurrent));
686 _handleError(response); 686 _handleError(response);
687 _resourceInfo.addRead(response.bytesRead.length); 687 _resourceInfo.addRead(response.bytesRead.length);
688 return response.bytesRead; 688 return response.bytesRead;
689 } 689 }
690 690
691 /* patch */ List<int> readSync(int bytes) { 691 /* patch */ List<int> readSync(int bytes) {
692 return _onSyncOperation(); 692 return _onSyncOperation();
693 } 693 }
694 694
695 /* patch */ Future<int> readInto(List<int> buffer, 695 /* patch */ Future<int> readInto(List<int> buffer,
696 [int start = 0, int end]) async { 696 [int start = 0, int end]) async {
697 if (buffer is !List || 697 if (buffer is !List ||
698 (start != null && start is !int) || 698 (start != null && start is !int) ||
699 (end != null && end is !int)) { 699 (end != null && end is !int)) {
700 throw new ArgumentError(); 700 throw new ArgumentError();
701 } 701 }
702 end = RangeError.checkValidRange(start, end, buffer.length); 702 end = RangeError.checkValidRange(start, end, buffer.length);
703 _ensureProxy(); 703 _ensureProxy();
704 if (end == start) { 704 if (end == start) {
705 return 0; 705 return 0;
706 } 706 }
707 int length = end - start; 707 int length = end - start;
708 var response = await _proxy.responseOrError( 708 var response = await _proxy.responseOrError(
709 _proxy.ptr.read(length, 0, types.Whence.fromCurrent)); 709 _proxy.read(length, 0, types.Whence.fromCurrent));
710 _handleError(response); 710 _handleError(response);
711 int read = response.bytesRead.length; 711 int read = response.bytesRead.length;
712 _resourceInfo.addRead(read); 712 _resourceInfo.addRead(read);
713 buffer.setRange(start, start + read, response.bytesRead); 713 buffer.setRange(start, start + read, response.bytesRead);
714 return read; 714 return read;
715 } 715 }
716 716
717 /* patch */ int readIntoSync(List<int> buffer, [int start = 0, int end]) { 717 /* patch */ int readIntoSync(List<int> buffer, [int start = 0, int end]) {
718 return _onSyncOperation(); 718 return _onSyncOperation();
719 } 719 }
720 720
721 /* patch */ Future<RandomAccessFile> writeByte(int value) async { 721 /* patch */ Future<RandomAccessFile> writeByte(int value) async {
722 if (value is !int) { 722 if (value is !int) {
723 throw new ArgumentError(value); 723 throw new ArgumentError(value);
724 } 724 }
725 _ensureProxy(); 725 _ensureProxy();
726 var response = await _proxy.responseOrError( 726 var response = await _proxy.responseOrError(
727 _proxy.ptr.write([value], 0, types.Whence.fromCurrent)); 727 _proxy.write([value], 0, types.Whence.fromCurrent));
728 _handleError(response); 728 _handleError(response);
729 assert(response.numBytesWritten == 1); 729 assert(response.numBytesWritten == 1);
730 _resourceInfo.addWrite(response.numBytesWritten); 730 _resourceInfo.addWrite(response.numBytesWritten);
731 return this; 731 return this;
732 } 732 }
733 733
734 /* patch */ int writeByteSync(int value) { 734 /* patch */ int writeByteSync(int value) {
735 return _onSyncOperation(); 735 return _onSyncOperation();
736 } 736 }
737 737
(...skipping 17 matching lines...) Expand all
755 // so that the data we want to write starts at the beginning of the 755 // so that the data we want to write starts at the beginning of the
756 // buffer. 756 // buffer.
757 final buffer = new Uint8List(length); 757 final buffer = new Uint8List(length);
758 buffer.setRange(0, length, result.buffer, start); 758 buffer.setRange(0, length, result.buffer, start);
759 // Replace the buffer in result. 759 // Replace the buffer in result.
760 result.buffer = buffer; 760 result.buffer = buffer;
761 result.start = 0; 761 result.start = 0;
762 } 762 }
763 assert(result.start == 0); 763 assert(result.start == 0);
764 var response = await _proxy.responseOrError( 764 var response = await _proxy.responseOrError(
765 _proxy.ptr.write(result.buffer, 0, types.Whence.fromCurrent)); 765 _proxy.write(result.buffer, 0, types.Whence.fromCurrent));
766 _handleError(response); 766 _handleError(response);
767 _resourceInfo.addWrite(response.numBytesWritten); 767 _resourceInfo.addWrite(response.numBytesWritten);
768 return this; 768 return this;
769 } 769 }
770 770
771 /* patch */ void writeFromSync(List<int> buffer, [int start = 0, int end]) { 771 /* patch */ void writeFromSync(List<int> buffer, [int start = 0, int end]) {
772 _onSyncOperation(); 772 _onSyncOperation();
773 } 773 }
774 774
775 /* patch */ void writeStringSync(String string, {Encoding encoding: UTF8}) { 775 /* patch */ void writeStringSync(String string, {Encoding encoding: UTF8}) {
776 _onSyncOperation(); 776 _onSyncOperation();
777 } 777 }
778 778
779 /* patch */ Future<int> position() async { 779 /* patch */ Future<int> position() async {
780 _ensureProxy(); 780 _ensureProxy();
781 var response = await _proxy.responseOrError(_proxy.ptr.tell()); 781 var response = await _proxy.responseOrError(_proxy.tell());
782 _handleError(response); 782 _handleError(response);
783 return response.position; 783 return response.position;
784 } 784 }
785 785
786 /* patch */ int positionSync() { 786 /* patch */ int positionSync() {
787 _onSyncOperation(); 787 _onSyncOperation();
788 } 788 }
789 789
790 /* patch */ Future<RandomAccessFile> setPosition(int position) async { 790 /* patch */ Future<RandomAccessFile> setPosition(int position) async {
791 if (position is !int) { 791 if (position is !int) {
792 throw new ArgumentError(position); 792 throw new ArgumentError(position);
793 } 793 }
794 _ensureProxy(); 794 _ensureProxy();
795 var response = await _proxy.responseOrError( 795 var response = await _proxy.responseOrError(
796 _proxy.ptr.seek(position, types.Whence.fromStart)); 796 _proxy.seek(position, types.Whence.fromStart));
797 _handleError(response); 797 _handleError(response);
798 return this; 798 return this;
799 } 799 }
800 800
801 /* patch */ void setPositionSync(int position) { 801 /* patch */ void setPositionSync(int position) {
802 _onSyncOperation(); 802 _onSyncOperation();
803 } 803 }
804 804
805 /* patch */ Future<RandomAccessFile> truncate(int length) async { 805 /* patch */ Future<RandomAccessFile> truncate(int length) async {
806 if (length is !int) { 806 if (length is !int) {
807 throw new ArgumentError(length); 807 throw new ArgumentError(length);
808 } 808 }
809 _ensureProxy(); 809 _ensureProxy();
810 var response = await _proxy.responseOrError(_proxy.ptr.truncate(length)); 810 var response = await _proxy.responseOrError(_proxy.truncate(length));
811 _handleError(response); 811 _handleError(response);
812 } 812 }
813 813
814 /* patch */ void truncateSync(int length) { 814 /* patch */ void truncateSync(int length) {
815 _onSyncOperation(); 815 _onSyncOperation();
816 } 816 }
817 817
818 /* patch */ Future<int> length() async { 818 /* patch */ Future<int> length() async {
819 _ensureProxy(); 819 _ensureProxy();
820 var response = await _proxy.responseOrError(_proxy.ptr.stat()); 820 var response = await _proxy.responseOrError(_proxy.stat());
821 _handleError(response); 821 _handleError(response);
822 return response.fileInformation.size; 822 return response.fileInformation.size;
823 } 823 }
824 824
825 /* patch */ int lengthSync() { 825 /* patch */ int lengthSync() {
826 _onSyncOperation(); 826 _onSyncOperation();
827 } 827 }
828 828
829 /* patch */ Future<RandomAccessFile> flush() { 829 /* patch */ Future<RandomAccessFile> flush() {
830 return this; 830 return this;
(...skipping 16 matching lines...) Expand all
847 847
848 /* patch */ void lockSync( 848 /* patch */ void lockSync(
849 [FileLock mode = FileLock.EXCLUSIVE, int start = 0, int end]) { 849 [FileLock mode = FileLock.EXCLUSIVE, int start = 0, int end]) {
850 _onSyncOperation(); 850 _onSyncOperation();
851 } 851 }
852 852
853 /* patch */ void unlockSync([int start = 0, int end]) { 853 /* patch */ void unlockSync([int start = 0, int end]) {
854 _onSyncOperation(); 854 _onSyncOperation();
855 } 855 }
856 } 856 }
OLDNEW
« no previous file with comments | « mojo/dart/apptests/test_apps/pingpong_target/lib/main.dart ('k') | mojo/dart/embedder/io/internet_address_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698