Daniel Erat | 5bcc9b1 | 2010-12-16 16:53:33 | [diff] [blame] | 1 | // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #ifndef LOGIN_MANAGER_UPSTART_SIGNAL_EMITTER_H_ |
| 6 | #define LOGIN_MANAGER_UPSTART_SIGNAL_EMITTER_H_ |
| 7 | |
Ben Chan | f57c19c | 2016-12-08 01:14:49 | [diff] [blame] | 8 | #include <memory> |
Daniel Erat | 5bcc9b1 | 2010-12-16 16:53:33 | [diff] [blame] | 9 | #include <string> |
Chris Masone | 2e65e01 | 2014-01-03 21:15:54 | [diff] [blame] | 10 | #include <vector> |
Daniel Erat | 5bcc9b1 | 2010-12-16 16:53:33 | [diff] [blame] | 11 | |
Ben Chan | 857458a | 2014-09-03 23:44:42 | [diff] [blame] | 12 | #include <base/macros.h> |
Chris Masone | b2e9419 | 2014-02-19 22:14:15 | [diff] [blame] | 13 | |
Sabin Floares | 6208a33 | 2016-04-12 13:21:20 | [diff] [blame] | 14 | #include "login_manager/init_daemon_controller.h" |
| 15 | |
Chris Masone | b2e9419 | 2014-02-19 22:14:15 | [diff] [blame] | 16 | namespace dbus { |
| 17 | class ObjectProxy; |
Chris Masone | b2e9419 | 2014-02-19 22:14:15 | [diff] [blame] | 18 | } |
Daniel Erat | 5bcc9b1 | 2010-12-16 16:53:33 | [diff] [blame] | 19 | |
| 20 | namespace login_manager { |
Hidehiko Abe | 5a5f863 | 2017-06-14 08:06:52 | [diff] [blame] | 21 | |
Daniel Erat | 5bcc9b1 | 2010-12-16 16:53:33 | [diff] [blame] | 22 | // Simple mockable class for emitting Upstart signals. |
Sabin Floares | 6208a33 | 2016-04-12 13:21:20 | [diff] [blame] | 23 | class UpstartSignalEmitter : public InitDaemonController { |
Daniel Erat | 5bcc9b1 | 2010-12-16 16:53:33 | [diff] [blame] | 24 | public: |
Chris Masone | b2e9419 | 2014-02-19 22:14:15 | [diff] [blame] | 25 | static const char kServiceName[]; |
| 26 | static const char kPath[]; |
Chris Masone | b2e9419 | 2014-02-19 22:14:15 | [diff] [blame] | 27 | |
| 28 | explicit UpstartSignalEmitter(dbus::ObjectProxy* proxy); |
Qijiang Fan | 6bc59e1 | 2020-11-10 17:51:06 | [diff] [blame] | 29 | UpstartSignalEmitter(const UpstartSignalEmitter&) = delete; |
| 30 | UpstartSignalEmitter& operator=(const UpstartSignalEmitter&) = delete; |
| 31 | |
Hidehiko Abe | 5a5f863 | 2017-06-14 08:06:52 | [diff] [blame] | 32 | ~UpstartSignalEmitter() override; |
Daniel Erat | 5bcc9b1 | 2010-12-16 16:53:33 | [diff] [blame] | 33 | |
Daniel Erat | 2e22a9b | 2016-12-06 17:54:46 | [diff] [blame] | 34 | // InitDaemonController: |
Daniel Erat | 2e22a9b | 2016-12-06 17:54:46 | [diff] [blame] | 35 | |
Chris Masone | 2e65e01 | 2014-01-03 21:15:54 | [diff] [blame] | 36 | // Emits an upstart signal. |args_keyvals| will be provided as |
| 37 | // environment variables to any upstart jobs kicked off as a result |
| 38 | // of the signal. Each element of |args_keyvals| is a string of the format |
| 39 | // "key=value". |
Daniel Erat | 5bcc9b1 | 2010-12-16 16:53:33 | [diff] [blame] | 40 | // |
Daniel Erat | cc82712 | 2016-12-06 18:29:40 | [diff] [blame] | 41 | // Returns null if emitting the signal fails or if |mode| is ASYNC. |
Hidehiko Abe | 5a5f863 | 2017-06-14 08:06:52 | [diff] [blame] | 42 | std::unique_ptr<dbus::Response> TriggerImpulse( |
| 43 | const std::string& name, |
Daniel Erat | cc82712 | 2016-12-06 18:29:40 | [diff] [blame] | 44 | const std::vector<std::string>& args_keyvals, |
Hidehiko Abe | 5a5f863 | 2017-06-14 08:06:52 | [diff] [blame] | 45 | TriggerMode mode) override; |
Chris Masone | b2e9419 | 2014-02-19 22:14:15 | [diff] [blame] | 46 | |
Hidehiko Abe | 5a5f863 | 2017-06-14 08:06:52 | [diff] [blame] | 47 | private: |
Chris Masone | b2e9419 | 2014-02-19 22:14:15 | [diff] [blame] | 48 | dbus::ObjectProxy* upstart_dbus_proxy_; // Weak, owned by caller. |
Daniel Erat | 5bcc9b1 | 2010-12-16 16:53:33 | [diff] [blame] | 49 | }; |
| 50 | |
| 51 | } // namespace login_manager |
| 52 | |
| 53 | #endif // LOGIN_MANAGER_UPSTART_SIGNAL_EMITTER_H_ |