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

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

Issue 11337019: Use patching for dart:io. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments Created 8 years, 1 month 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
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 _exit(int status) native "Exit"; 5 patch class Process {
6 /* patch */ static Future<Process> start(String executable,
7 List<String> arguments,
8 [ProcessOptions options]) {
9 _ProcessImpl process = new _ProcessImpl(executable, arguments, options);
10 return process._start();
11 }
12
13 /* patch */ static Future<ProcessResult> run(String executable,
14 List<String> arguments,
15 [ProcessOptions options]) {
16 return new _NonInteractiveProcess(executable, arguments, options)._result;
17 }
18 }
19
20
21 patch class _ProcessUtils {
22 /* patch */ static _exit(int status) native "Exit";
23 }
24
6 25
7 class _ProcessStartStatus { 26 class _ProcessStartStatus {
8 int _errorCode; // Set to OS error code if process start failed. 27 int _errorCode; // Set to OS error code if process start failed.
9 String _errorMessage; // Set to OS error message if process start failed. 28 String _errorMessage; // Set to OS error message if process start failed.
10 } 29 }
11 30
12 31
13 class _Process extends NativeFieldWrapperClass1 implements Process { 32 class _ProcessImpl extends NativeFieldWrapperClass1 implements Process {
14 static Future<ProcessResult> run(String path, 33 _ProcessImpl(String path, List<String> arguments, ProcessOptions options) {
15 List<String> arguments,
16 [ProcessOptions options]) {
17 return new _NonInteractiveProcess(path, arguments, options)._result;
18 }
19
20 static Future<Process> start(String path,
21 List<String> arguments,
22 ProcessOptions options) {
23 _Process process = new _Process(path, arguments, options);
24 return process._start();
25 }
26
27 _Process(String path, List<String> arguments, ProcessOptions options) {
28 if (path is !String) { 34 if (path is !String) {
29 throw new ArgumentError("Path is not a String: $path"); 35 throw new ArgumentError("Path is not a String: $path");
30 } 36 }
31 _path = path; 37 _path = path;
32 38
33 if (arguments is !List) { 39 if (arguments is !List) {
34 throw new ArgumentError("Arguments is not a List: $arguments"); 40 throw new ArgumentError("Arguments is not a List: $arguments");
35 } 41 }
36 int len = arguments.length; 42 int len = arguments.length;
37 _arguments = new List<String>(len); 43 _arguments = new List<String>(len);
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 if (options.stderrEncoding !== null) { 285 if (options.stderrEncoding !== null) {
280 stderrEncoding = options.stderrEncoding; 286 stderrEncoding = options.stderrEncoding;
281 if (stderrEncoding is !Encoding) { 287 if (stderrEncoding is !Encoding) {
282 throw new ArgumentError( 288 throw new ArgumentError(
283 'stderrEncoding option is not an encoding: $stderrEncoding'); 289 'stderrEncoding option is not an encoding: $stderrEncoding');
284 } 290 }
285 } 291 }
286 } 292 }
287 293
288 // Start the underlying process. 294 // Start the underlying process.
289 var processFuture = new _Process(path, arguments, options)._start(); 295 var processFuture = new _ProcessImpl(path, arguments, options)._start();
290 296
291 processFuture.then((Process p) { 297 processFuture.then((Process p) {
292 // Make sure the process stdin is closed. 298 // Make sure the process stdin is closed.
293 p.stdin.close; 299 p.stdin.close;
294 300
295 // Setup process exit handling. 301 // Setup process exit handling.
296 p.onExit = (exitCode) { 302 p.onExit = (exitCode) {
297 _exitCode = exitCode; 303 _exitCode = exitCode;
298 _checkDone(); 304 _checkDone();
299 }; 305 };
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 356
351 class _ProcessResult implements ProcessResult { 357 class _ProcessResult implements ProcessResult {
352 const _ProcessResult(int this.exitCode, 358 const _ProcessResult(int this.exitCode,
353 String this.stdout, 359 String this.stdout,
354 String this.stderr); 360 String this.stderr);
355 361
356 final int exitCode; 362 final int exitCode;
357 final String stdout; 363 final String stdout;
358 final String stderr; 364 final String stderr;
359 } 365 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698