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

Side by Side Diff: runtime/bin/file_impl.dart

Issue 9773018: Add error handling to directory (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments Created 8 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « runtime/bin/directory_win.cc ('k') | tests/standalone/src/io/DirectoryErrorTest.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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 class _FileInputStream extends _BaseDataInputStream implements InputStream { 5 class _FileInputStream extends _BaseDataInputStream implements InputStream {
6 _FileInputStream(String name) { 6 _FileInputStream(String name) {
7 _file = new File(name); 7 _file = new File(name);
8 _data = []; 8 _data = [];
9 _position = 0; 9 _position = 0;
10 _file.onError = (e) { 10 _file.onError = (e) {
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 static final kWriteByteRequest = 13; 222 static final kWriteByteRequest = 13;
223 static final kReadListRequest = 14; 223 static final kReadListRequest = 14;
224 static final kWriteListRequest = 15; 224 static final kWriteListRequest = 15;
225 static final kWriteStringRequest = 16; 225 static final kWriteStringRequest = 16;
226 226
227 static final kSuccessResponse = 0; 227 static final kSuccessResponse = 0;
228 static final kIllegalArgumentResponse = 1; 228 static final kIllegalArgumentResponse = 1;
229 static final kOSErrorResponse = 2; 229 static final kOSErrorResponse = 2;
230 static final kFileClosedResponse = 3; 230 static final kFileClosedResponse = 3;
231 231
232 static final kErrorResponseErrorType = 0;
233 static final kOSErrorResponseErrorCode = 1;
234 static final kOSErrorResponseMessage = 2;
235
232 static List ensureFastAndSerializableBuffer( 236 static List ensureFastAndSerializableBuffer(
233 List buffer, int offset, int bytes) { 237 List buffer, int offset, int bytes) {
234 // When using the Dart C API to access raw data, using a ByteArray is 238 // When using the Dart C API to access raw data, using a ByteArray is
235 // currently much faster. This function will make a copy of the 239 // currently much faster. This function will make a copy of the
236 // supplied List to a ByteArray if it isn't already. 240 // supplied List to a ByteArray if it isn't already.
237 List outBuffer; 241 List outBuffer;
238 int outOffset = offset; 242 int outOffset = offset;
239 if (buffer is ByteArray || buffer is ObjectArray) { 243 if (buffer is ByteArray || buffer is ObjectArray) {
240 outBuffer = buffer; 244 outBuffer = buffer;
241 } else { 245 } else {
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 370
367 // Base class for _File and _RandomAccessFile with shared functions. 371 // Base class for _File and _RandomAccessFile with shared functions.
368 class _FileBase { 372 class _FileBase {
369 bool _isErrorResponse(response) { 373 bool _isErrorResponse(response) {
370 return response is List && response[0] != _FileUtils.kSuccessResponse; 374 return response is List && response[0] != _FileUtils.kSuccessResponse;
371 } 375 }
372 376
373 bool _reportError(response, String message) { 377 bool _reportError(response, String message) {
374 assert(_isErrorResponse(response)); 378 assert(_isErrorResponse(response));
375 if (_onError != null) { 379 if (_onError != null) {
376 switch (response[0]) { 380 switch (response[_FileUtil.kErrorResponseErrorType]) {
377 case _FileUtils.kIllegalArgumentResponse: 381 case _FileUtils.kIllegalArgumentResponse:
378 _onError(new IllegalArgumentException()); 382 _onError(new IllegalArgumentException());
379 break; 383 break;
380 case _FileUtils.kOSErrorResponse: 384 case _FileUtils.kOSErrorResponse:
381 _onError(new FileIOException(message, 385 var err = new OSError(response[_FileUtils.kOSErrorResponseErrorCode],
382 new OSError(response[2], response[1]))); 386 response[_FileUtils.kOSErrorResponseMessage]);
387 _onError(new FileIOException(message, err));
383 break; 388 break;
384 case _FileUtils.kFileClosedResponse: 389 case _FileUtils.kFileClosedResponse:
385 _onError(new FileIOException("File closed")); 390 _onError(new FileIOException("File closed"));
386 break; 391 break;
387 default: 392 default:
388 _onError(new Exception("Unknown error")); 393 _onError(new Exception("Unknown error"));
389 break; 394 break;
390 } 395 }
391 } 396 }
392 } 397 }
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after
1053 String _name; 1058 String _name;
1054 int _id; 1059 int _id;
1055 int _pendingWrites = 0; 1060 int _pendingWrites = 0;
1056 1061
1057 SendPort _fileService; 1062 SendPort _fileService;
1058 1063
1059 Timer _noPendingWriteTimer; 1064 Timer _noPendingWriteTimer;
1060 1065
1061 Function _onNoPendingWrites; 1066 Function _onNoPendingWrites;
1062 } 1067 }
OLDNEW
« no previous file with comments | « runtime/bin/directory_win.cc ('k') | tests/standalone/src/io/DirectoryErrorTest.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698