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

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

Issue 9652001: SendPort + ReceivePort changes: (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 9 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 | « lib/isolate/isolate_compiler.dart ('k') | runtime/bin/file_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) 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 5
6 // Used for holding error code and error message for failed OS system calls. 6 // Used for holding error code and error message for failed OS system calls.
7 class _OSStatus { 7 class _OSStatus {
8 int _errorCode; 8 int _errorCode;
9 String _errorMessage; 9 String _errorMessage;
10 } 10 }
(...skipping 15 matching lines...) Expand all
26 static int _exists(String path) native "Directory_Exists"; 26 static int _exists(String path) native "Directory_Exists";
27 static bool _create(String path) native "Directory_Create"; 27 static bool _create(String path) native "Directory_Create";
28 static bool _delete(String path, bool recursive) native "Directory_Delete"; 28 static bool _delete(String path, bool recursive) native "Directory_Delete";
29 static SendPort _newServicePort() native "Directory_NewServicePort"; 29 static SendPort _newServicePort() native "Directory_NewServicePort";
30 30
31 void exists(void callback(bool exists)) { 31 void exists(void callback(bool exists)) {
32 _ensureDirectoryService(); 32 _ensureDirectoryService();
33 List request = new List(2); 33 List request = new List(2);
34 request[0] = kExistsRequest; 34 request[0] = kExistsRequest;
35 request[1] = _path; 35 request[1] = _path;
36 _directoryService.call(request).receive((result, replyTo) { 36 _directoryService.call(request).then((result) {
37 if (result < 0) { 37 if (result < 0) {
38 if (_onError != null) { 38 if (_onError != null) {
39 _onError("Diretory exists test failed: $_path"); 39 _onError("Diretory exists test failed: $_path");
40 } 40 }
41 } else { 41 } else {
42 callback(result == 1); 42 callback(result == 1);
43 } 43 }
44 }); 44 });
45 } 45 }
46 46
47 bool existsSync() { 47 bool existsSync() {
48 int exists = _exists(_path); 48 int exists = _exists(_path);
49 if (exists < 0) { 49 if (exists < 0) {
50 throw new DirectoryException("Diretory exists test failed: $_path"); 50 throw new DirectoryException("Diretory exists test failed: $_path");
51 } 51 }
52 return (exists == 1); 52 return (exists == 1);
53 } 53 }
54 54
55 void create(void callback()) { 55 void create(void callback()) {
56 _ensureDirectoryService(); 56 _ensureDirectoryService();
57 List request = new List(2); 57 List request = new List(2);
58 request[0] = kCreateRequest; 58 request[0] = kCreateRequest;
59 request[1] = _path; 59 request[1] = _path;
60 _directoryService.call(request).receive((result, replyTo) { 60 _directoryService.call(request).then((result) {
61 if (result) { 61 if (result) {
62 callback(); 62 callback();
63 } else if (_onError != null) { 63 } else if (_onError != null) {
64 _onError("Directory creation failed: $_path"); 64 _onError("Directory creation failed: $_path");
65 } 65 }
66 }); 66 });
67 } 67 }
68 68
69 void createSync() { 69 void createSync() {
70 if (!_create(_path)) { 70 if (!_create(_path)) {
71 throw new DirectoryException("Directory creation failed: $_path"); 71 throw new DirectoryException("Directory creation failed: $_path");
72 } 72 }
73 } 73 }
74 74
75 void createTemp(void callback()) { 75 void createTemp(void callback()) {
76 _ensureDirectoryService(); 76 _ensureDirectoryService();
77 List request = new List(2); 77 List request = new List(2);
78 request[0] = kCreateTempRequest; 78 request[0] = kCreateTempRequest;
79 request[1] = _path; 79 request[1] = _path;
80 _directoryService.call(request).receive((result, replyTo) { 80 _directoryService.call(request).then((result) {
81 if (result is !List) { 81 if (result is !List) {
82 _path = result; 82 _path = result;
83 callback(); 83 callback();
84 } else if (_onError != null) { 84 } else if (_onError != null) {
85 _onError("Could not create temporary directory [$_path]: " + 85 _onError("Could not create temporary directory [$_path]: " +
86 "${result[1]}"); 86 "${result[1]}");
87 } 87 }
88 }); 88 });
89 } 89 }
90 90
91 void createTempSync() { 91 void createTempSync() {
92 var status = new _OSStatus(); 92 var status = new _OSStatus();
93 var result = _createTemp(path, status); 93 var result = _createTemp(path, status);
94 if (result != null) { 94 if (result != null) {
95 _path = result; 95 _path = result;
96 } else { 96 } else {
97 throw new DirectoryException( 97 throw new DirectoryException(
98 "Could not create temporary directory [$_path]: " + 98 "Could not create temporary directory [$_path]: " +
99 "${status._errorMessage}", 99 "${status._errorMessage}",
100 status._errorCode); 100 status._errorCode);
101 } 101 }
102 } 102 }
103 103
104 void _deleteHelper(bool recursive, String errorMsg, void callback()) { 104 void _deleteHelper(bool recursive, String errorMsg, void callback()) {
105 _ensureDirectoryService(); 105 _ensureDirectoryService();
106 List request = new List(3); 106 List request = new List(3);
107 request[0] = kDeleteRequest; 107 request[0] = kDeleteRequest;
108 request[1] = _path; 108 request[1] = _path;
109 request[2] = recursive; 109 request[2] = recursive;
110 _directoryService.call(request).receive((result, replyTo) { 110 _directoryService.call(request).then((result) {
111 if (result) { 111 if (result) {
112 callback(); 112 callback();
113 } else if (_onError != null) { 113 } else if (_onError != null) {
114 _onError("${errorMsg}: $_path"); 114 _onError("${errorMsg}: $_path");
115 } 115 }
116 }); 116 });
117 } 117 }
118 118
119 void delete(void callback()) { 119 void delete(void callback()) {
120 _deleteHelper(false, "Directory deletion failed", callback); 120 _deleteHelper(false, "Directory deletion failed", callback);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 } 202 }
203 203
204 var _onDir; 204 var _onDir;
205 var _onFile; 205 var _onFile;
206 var _onDone; 206 var _onDone;
207 var _onError; 207 var _onError;
208 208
209 String _path; 209 String _path;
210 SendPort _directoryService; 210 SendPort _directoryService;
211 } 211 }
OLDNEW
« no previous file with comments | « lib/isolate/isolate_compiler.dart ('k') | runtime/bin/file_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698