OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // TODO(jamiewalch): Add unit tests for this. | 5 // TODO(jamiewalch): Add unit tests for this. |
6 | 6 |
7 #include "remoting/host/posix/signal_handler.h" | 7 #include "remoting/host/posix/signal_handler.h" |
8 | 8 |
9 #include <errno.h> | 9 #include <errno.h> |
10 #include <signal.h> | 10 #include <signal.h> |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 if (!g_signal_listener) { | 84 if (!g_signal_listener) { |
85 g_signal_listener = new SignalListener(); | 85 g_signal_listener = new SignalListener(); |
86 } | 86 } |
87 if (!g_write_fd) { | 87 if (!g_write_fd) { |
88 int pipe_fd[2]; | 88 int pipe_fd[2]; |
89 int result = pipe(pipe_fd); | 89 int result = pipe(pipe_fd); |
90 if (result < 0) { | 90 if (result < 0) { |
91 LOG(ERROR) << "Could not create signal pipe: " << errno; | 91 LOG(ERROR) << "Could not create signal pipe: " << errno; |
92 return false; | 92 return false; |
93 } | 93 } |
94 MessageLoopForIO* message_loop = MessageLoopForIO::current(); | 94 base::MessageLoopForIO* message_loop = base::MessageLoopForIO::current(); |
95 result = message_loop->WatchFileDescriptor( | 95 result = |
96 pipe_fd[0], true, MessageLoopForIO::WATCH_READ, | 96 message_loop->WatchFileDescriptor(pipe_fd[0], |
97 &g_signal_listener->controller, g_signal_listener); | 97 true, |
| 98 base::MessageLoopForIO::WATCH_READ, |
| 99 &g_signal_listener->controller, |
| 100 g_signal_listener); |
98 if (!result) { | 101 if (!result) { |
99 LOG(ERROR) << "Failed to create signal detector task."; | 102 LOG(ERROR) << "Failed to create signal detector task."; |
100 close(pipe_fd[0]); | 103 close(pipe_fd[0]); |
101 close(pipe_fd[1]); | 104 close(pipe_fd[1]); |
102 return false; | 105 return false; |
103 } | 106 } |
104 g_write_fd = pipe_fd[1]; | 107 g_write_fd = pipe_fd[1]; |
105 } | 108 } |
106 if (signal(signal_number, GlobalSignalHandler) == SIG_ERR) { | 109 if (signal(signal_number, GlobalSignalHandler) == SIG_ERR) { |
107 LOG(ERROR) << "signal() failed: " << errno; | 110 LOG(ERROR) << "signal() failed: " << errno; |
108 return false; | 111 return false; |
109 } | 112 } |
110 g_signal_listener->AddSignalHandler(signal_number, handler); | 113 g_signal_listener->AddSignalHandler(signal_number, handler); |
111 return true; | 114 return true; |
112 } | 115 } |
113 | 116 |
114 } // namespace remoting | 117 } // namespace remoting |
OLD | NEW |