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

Side by Side Diff: lib/io/process.dart

Issue 11337019: Use patching for dart:io. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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 class _ProcessUtils {
Søren Gjesse 2012/10/30 09:28:32 TODO?
Mads Ager (google) 2012/10/30 11:12:40 Done.
6 external static _exit(int status);
7 }
8
5 /** Exit the Dart VM process with the given [status] code. */ 9 /** Exit the Dart VM process with the given [status] code. */
6 void exit(int status) { 10 void exit(int status) {
7 if (status is !int) { 11 if (status is !int) {
8 throw new ArgumentError("int status expected"); 12 throw new ArgumentError("int status expected");
9 } 13 }
10 _exit(status); 14 _ProcessUtils._exit(status);
11 } 15 }
12 16
13 /** 17 /**
14 * [Process] is used to start new processes using the static 18 * [Process] is used to start new processes using the static
15 * [start] and [run] methods. 19 * [start] and [run] methods.
16 */ 20 */
17 class Process { 21 abstract class Process {
18 /** 22 /**
19 * Starts a process running the [executable] with the specified 23 * Starts a process running the [executable] with the specified
20 * [arguments]. Returns a [:Future<Process>:] that completes with a 24 * [arguments]. Returns a [:Future<Process>:] that completes with a
21 * Process instance when the process has been successfully 25 * Process instance when the process has been successfully
22 * started. That [Process] object can be used to interact with the 26 * started. That [Process] object can be used to interact with the
23 * process. If the process cannot be started the returned [Future] 27 * process. If the process cannot be started the returned [Future]
24 * completes with an exception. 28 * completes with an exception.
25 * 29 *
26 * An optional [ProcessOptions] object can be passed to specify 30 * An optional [ProcessOptions] object can be passed to specify
27 * options other than the executable and the arguments. 31 * options other than the executable and the arguments.
28 * 32 *
29 * Users must read all data coming on the [stdout] and [stderr] 33 * Users must read all data coming on the [stdout] and [stderr]
30 * streams of processes started with [:Process.start:]. If the user 34 * streams of processes started with [:Process.start:]. If the user
31 * does not read all data on the streams the underlying system 35 * does not read all data on the streams the underlying system
32 * resources will not be freed since there is still pending data. 36 * resources will not be freed since there is still pending data.
33 */ 37 */
34 static Future<Process> start(String executable, 38 external static Future<Process> start(String executable,
35 List<String> arguments, 39 List<String> arguments,
36 [ProcessOptions options]) { 40 [ProcessOptions options]);
37 return _Process.start(executable, arguments, options);
38 }
39 41
40 /** 42 /**
41 * Starts a process and runs it non-interactively to completion. The 43 * Starts a process and runs it non-interactively to completion. The
42 * process run is [executable] with the specified [arguments]. 44 * process run is [executable] with the specified [arguments].
43 * 45 *
44 * An optional [ProcessOptions] object can be passed to specify 46 * An optional [ProcessOptions] object can be passed to specify
45 * options other than the executable and the arguments. 47 * options other than the executable and the arguments.
46 * 48 *
47 * Returns a [:Future<ProcessResult>:] that completes with the 49 * Returns a [:Future<ProcessResult>:] that completes with the
48 * result of running the process, i.e., exit code, standard out and 50 * result of running the process, i.e., exit code, standard out and
49 * standard in. 51 * standard in.
50 */ 52 */
51 static Future<ProcessResult> run(String executable, 53 external static Future<ProcessResult> run(String executable,
52 List<String> arguments, 54 List<String> arguments,
53 [ProcessOptions options]) { 55 [ProcessOptions options]);
54 return _Process.run(executable, arguments, options);
55 }
56 56
57 /** 57 /**
58 * Returns an input stream of the process stdout. 58 * Returns an input stream of the process stdout.
59 * 59 *
60 * Throws an [UnsupportedError] if the process is 60 * Throws an [UnsupportedError] if the process is
61 * non-interactive. 61 * non-interactive.
62 */ 62 */
63 abstract InputStream get stdout; 63 InputStream get stdout;
64 64
65 /** 65 /**
66 * Returns an input stream of the process stderr. 66 * Returns an input stream of the process stderr.
67 * 67 *
68 * Throws an [UnsupportedError] if the process is 68 * Throws an [UnsupportedError] if the process is
69 * non-interactive. 69 * non-interactive.
70 */ 70 */
71 abstract InputStream get stderr; 71 InputStream get stderr;
72 72
73 /** 73 /**
74 * Returns an output stream to the process stdin. 74 * Returns an output stream to the process stdin.
75 * 75 *
76 * Throws an [UnsupportedError] if the process is 76 * Throws an [UnsupportedError] if the process is
77 * non-interactive. 77 * non-interactive.
78 */ 78 */
79 abstract OutputStream get stdin; 79 OutputStream get stdin;
80 80
81 /** 81 /**
82 * Sets an exit handler which gets invoked when the process 82 * Sets an exit handler which gets invoked when the process
83 * terminates. 83 * terminates.
84 * 84 *
85 * Throws an [UnsupportedError] if the process is 85 * Throws an [UnsupportedError] if the process is
86 * non-interactive. 86 * non-interactive.
87 */ 87 */
88 abstract void set onExit(void callback(int exitCode)); 88 void set onExit(void callback(int exitCode));
89 89
90 /** 90 /**
91 * On Windows, [kill] kills the process, ignoring the [signal] 91 * On Windows, [kill] kills the process, ignoring the [signal]
92 * flag. On Posix systems, [kill] sends [signal] to the 92 * flag. On Posix systems, [kill] sends [signal] to the
93 * process. Depending on the signal giving, it'll have different 93 * process. Depending on the signal giving, it'll have different
94 * meanings. When the process terminates as a result of calling 94 * meanings. When the process terminates as a result of calling
95 * [kill] [onExit] is called. 95 * [kill] [onExit] is called.
96 * 96 *
97 * Returns [:true:] if the process is successfully killed (the 97 * Returns [:true:] if the process is successfully killed (the
98 * signal is successfully sent). Returns [:false:] if the process 98 * signal is successfully sent). Returns [:false:] if the process
99 * could not be killed (the signal could not be sent). Usually, 99 * could not be killed (the signal could not be sent). Usually,
100 * a [:false:] return value from kill means that the process is 100 * a [:false:] return value from kill means that the process is
101 * already dead. 101 * already dead.
102 */ 102 */
103 abstract bool kill([ProcessSignal signal = ProcessSignal.SIGTERM]); 103 bool kill([ProcessSignal signal = ProcessSignal.SIGTERM]);
104 } 104 }
105 105
106 106
107 /** 107 /**
108 * [ProcessResult] represents the result of running a non-interactive 108 * [ProcessResult] represents the result of running a non-interactive
109 * process started with [:Process.run:]. 109 * process started with [:Process.run:].
110 */ 110 */
111 abstract class ProcessResult { 111 abstract class ProcessResult {
112 /** 112 /**
113 * Exit code for the process. 113 * Exit code for the process.
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 /** 218 /**
219 * Contains the system message for the process exception if any. 219 * Contains the system message for the process exception if any.
220 */ 220 */
221 final String message; 221 final String message;
222 222
223 /** 223 /**
224 * Contains the OS error code for the process exception if any. 224 * Contains the OS error code for the process exception if any.
225 */ 225 */
226 final int errorCode; 226 final int errorCode;
227 } 227 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698