Index: runtime/bin/directory_impl.dart |
diff --git a/runtime/bin/directory_impl.dart b/runtime/bin/directory_impl.dart |
index f3efa6aeb3a56b5f0bd10dc4048152a8ee1df6d1..d5a9953b38fb08b9cf9bb3633e1c41d30cfcdd5a 100644 |
--- a/runtime/bin/directory_impl.dart |
+++ b/runtime/bin/directory_impl.dart |
@@ -26,7 +26,7 @@ class _Directory implements Directory { |
static bool _delete(String path, bool recursive) native "Directory_Delete"; |
static SendPort _newServicePort() native "Directory_NewServicePort"; |
- void exists(void callback(bool exists)) { |
+ void exists() { |
if (_directoryService == null) { |
_directoryService = _newServicePort(); |
} |
@@ -34,12 +34,14 @@ class _Directory implements Directory { |
request[0] = kExistsRequest; |
request[1] = _path; |
_directoryService.call(request).receive((result, replyTo) { |
+ var handler = |
+ (_existsHandler != null) ? _existsHandler : (result) => null; |
if (result < 0) { |
- if (_onError != null) { |
- _onError("Diretory exists test failed: $_path"); |
+ if (_errorHandler != null) { |
+ _errorHandler("Diretory exists test failed: $_path"); |
} |
} else { |
- callback(result == 1); |
+ handler(result == 1); |
} |
}); |
} |
@@ -52,7 +54,7 @@ class _Directory implements Directory { |
return (exists == 1); |
} |
- void create(void callback()) { |
+ void create() { |
if (_directoryService == null) { |
_directoryService = _newServicePort(); |
} |
@@ -61,9 +63,9 @@ class _Directory implements Directory { |
request[1] = _path; |
_directoryService.call(request).receive((result, replyTo) { |
if (result) { |
- callback(); |
- } else if (_onError != null) { |
- _onError("Directory creation failed: $_path"); |
+ if (_createHandler != null) _createHandler(); |
+ } else if (_errorHandler != null) { |
+ _errorHandler("Directory creation failed: $_path"); |
} |
}); |
} |
@@ -74,7 +76,7 @@ class _Directory implements Directory { |
} |
} |
- void createTemp(void callback()) { |
+ void createTemp() { |
if (_directoryService == null) { |
_directoryService = _newServicePort(); |
} |
@@ -84,10 +86,10 @@ class _Directory implements Directory { |
_directoryService.call(request).receive((result, replyTo) { |
if (result is !List) { |
_path = result; |
- callback(); |
- } else if (_onError != null) { |
- _onError("Could not create temporary directory [$_path]: " + |
- "${result[1]}"); |
+ if (_createTempHandler != null) _createTempHandler(); |
+ } else if (_errorHandler != null) { |
+ _errorHandler("Could not create temporary directory [$_path]: " + |
+ "${result[1]}"); |
} |
}); |
} |
@@ -105,7 +107,7 @@ class _Directory implements Directory { |
} |
} |
- void _deleteHelper(bool recursive, String errorMsg, void callback()) { |
+ void delete([bool recursive = false]) { |
if (_directoryService == null) { |
_directoryService = _newServicePort(); |
} |
@@ -115,36 +117,23 @@ class _Directory implements Directory { |
request[2] = recursive; |
_directoryService.call(request).receive((result, replyTo) { |
if (result) { |
- callback(); |
- } else if (_onError != null) { |
- _onError("${errorMsg}: $_path"); |
+ if (_deleteHandler != null) _deleteHandler(); |
+ } else if (_errorHandler != null) { |
+ if (recursive) { |
+ _errorHandler("Recursive directory deletion failed: $_path"); |
+ } else { |
+ _errorHandler("Non-recursive directory deletion failed: $_path"); |
+ } |
} |
}); |
} |
- void delete(void callback()) { |
- _deleteHelper(false, "Directory deletion failed", callback); |
- } |
- |
- void deleteRecursively(void callback()) { |
- _deleteHelper(true, "Recursive directory deletion failed", callback); |
- } |
- |
- void deleteSync() { |
- bool recursive = false; |
+ void deleteSync([bool recursive = false]) { |
if (!_delete(_path, recursive)) { |
throw new DirectoryException("Directory deletion failed: $_path"); |
} |
} |
- void deleteRecursivelySync() { |
- bool recursive = true; |
- if (!_delete(_path, recursive)) { |
- throw new DirectoryException( |
- "Recursive directory deletion failed: $_path"); |
- } |
- } |
- |
void list([bool recursive = false]) { |
final int kListDirectory = 0; |
final int kListFile = 1; |
@@ -162,41 +151,57 @@ class _Directory implements Directory { |
responsePort.receive((message, replyTo) { |
if (message is !List || message[0] is !int) { |
responsePort.close(); |
- if (_onError != null) _onError("Internal error"); |
+ if (_errorHandler != null) _errorHandler("Internal error"); |
return; |
} |
switch (message[0]) { |
case kListDirectory: |
- if (_onDir != null) _onDir(message[1]); |
+ if (_dirHandler != null) _dirHandler(message[1]); |
break; |
case kListFile: |
- if (_onFile != null) _onFile(message[1]); |
+ if (_fileHandler != null) _fileHandler(message[1]); |
break; |
case kListError: |
- if (_onError != null) _onError(message[1]); |
+ if (_errorHandler != null) _errorHandler(message[1]); |
break; |
case kListDone: |
responsePort.close(); |
- if (_onDone != null) _onDone(message[1]); |
+ if (_doneHandler != null) _doneHandler(message[1]); |
break; |
} |
}); |
} |
- void set onDir(void onDir(String dir)) { |
- _onDir = onDir; |
+ void set dirHandler(void dirHandler(String dir)) { |
+ _dirHandler = dirHandler; |
+ } |
+ |
+ void set fileHandler(void fileHandler(String file)) { |
+ _fileHandler = fileHandler; |
+ } |
+ |
+ void set doneHandler(void doneHandler(bool completed)) { |
+ _doneHandler = doneHandler; |
+ } |
+ |
+ void set existsHandler(void existsHandler(bool exists)) { |
+ _existsHandler = existsHandler; |
+ } |
+ |
+ void set createHandler(void createHandler()) { |
+ _createHandler = createHandler; |
} |
- void set onFile(void onFile(String file)) { |
- _onFile = onFile; |
+ void set createTempHandler(void createTempHandler()) { |
+ _createTempHandler = createTempHandler; |
} |
- void set onDone(void onDone(bool completed)) { |
- _onDone = onDone; |
+ void set deleteHandler(void deleteHandler()) { |
+ _deleteHandler = deleteHandler; |
} |
- void set onError(void onError(String error)) { |
- _onError = onError; |
+ void set errorHandler(void errorHandler(String error)) { |
+ _errorHandler = errorHandler; |
} |
void _closePort(ReceivePort port) { |
@@ -207,10 +212,14 @@ class _Directory implements Directory { |
String get path() { return _path; } |
- var _onDir; |
- var _onFile; |
- var _onDone; |
- var _onError; |
+ var _dirHandler; |
+ var _fileHandler; |
+ var _doneHandler; |
+ var _existsHandler; |
+ var _createHandler; |
+ var _createTempHandler; |
+ var _deleteHandler; |
+ var _errorHandler; |
String _path; |
SendPort _directoryService; |