Index: runtime/bin/process_patch.dart |
diff --git a/runtime/bin/process_patch.dart b/runtime/bin/process_patch.dart |
index b83ec1b60114c10cee1aa3ef05972e036e39937d..e0e8fc6e237d21c632eb4158506f848ec3c7d11d 100644 |
--- a/runtime/bin/process_patch.dart |
+++ b/runtime/bin/process_patch.dart |
@@ -71,77 +71,12 @@ patch class Process { |
} |
-List<_SignalController> _signalControllers = new List(32); |
- |
- |
-class _SignalController { |
- final ProcessSignal signal; |
- |
- StreamController _controller; |
- var _id; |
- |
- _SignalController(this.signal) { |
- _controller = new StreamController.broadcast( |
- onListen: _listen, |
- onCancel: _cancel); |
- } |
- |
- Stream<ProcessSignal> get stream => _controller.stream; |
- |
- void _listen() { |
- var id = _setSignalHandler(signal._signalNumber); |
- if (id is! int) { |
- _controller.addError( |
- new SignalException("Failed to listen for $signal", id)); |
- return; |
- } |
- _id = id; |
- var socket = new _RawSocket(new _NativeSocket.watch(id)); |
- socket.listen((event) { |
- if (event == RawSocketEvent.READ) { |
- var bytes = socket.read(); |
- for (int i = 0; i < bytes.length; i++) { |
- _controller.add(signal); |
- } |
- } |
- }); |
- } |
- |
- void _cancel() { |
- if (_id != null) { |
- _clearSignalHandler(signal._signalNumber); |
- _id = null; |
- } |
- } |
- |
- /* patch */ static int _setSignalHandler(int signal) |
- native "Process_SetSignalHandler"; |
- /* patch */ static int _clearSignalHandler(int signal) |
- native "Process_ClearSignalHandler"; |
-} |
- |
- |
patch class _ProcessUtils { |
/* patch */ static void _exit(int status) native "Process_Exit"; |
/* patch */ static void _setExitCode(int status) |
native "Process_SetExitCode"; |
/* patch */ static void _sleep(int millis) native "Process_Sleep"; |
/* patch */ static int _pid(Process process) native "Process_Pid"; |
- /* patch */ static Stream<ProcessSignal> _watchSignal(ProcessSignal signal) { |
- if (signal != ProcessSignal.SIGHUP && |
- signal != ProcessSignal.SIGINT && |
- (Platform.isWindows || |
- (signal != ProcessSignal.SIGUSR1 && |
- signal != ProcessSignal.SIGUSR2 && |
- signal != ProcessSignal.SIGWINCH))) { |
- throw new SignalException( |
- "Listening for signal $signal is not supported"); |
- } |
- if (_signalControllers[signal._signalNumber] == null) { |
- _signalControllers[signal._signalNumber] = new _SignalController(signal); |
- } |
- return _signalControllers[signal._signalNumber].stream; |
- } |
} |