diff options
author | Peter Qiu <zqiu@google.com> | 2015-10-13 13:55:03 -0700 |
---|---|---|
committer | Peter Qiu <zqiu@google.com> | 2015-10-13 16:44:16 -0700 |
commit | be12882aa9307c62e1ae6ad8a69d5c663bed3b3e (patch) | |
tree | bd74603a78396b226890807396fc3258791282cd | |
parent | a522e0006b344c6438a18e0a4848e7cdfbf5dd0a (diff) | |
download | apmanager-be12882aa9307c62e1ae6ad8a69d5c663bed3b3e.tar.gz |
Use ControlInterface for creating proxies
This removes the IPC specific (D-Bus) dependencies from FirewallManager
and ShillManager.
Bug: 24194427
TEST=Verify wifi bootstrapping on both dragonboard (Android) and wolf
TEST=(Chrome OS)
Change-Id: Iac3b91300f938e8080d6ab4513fe84dea2880693
-rw-r--r-- | daemon.cc | 10 | ||||
-rw-r--r-- | daemon.h | 2 | ||||
-rw-r--r-- | firewall_manager.cc | 25 | ||||
-rw-r--r-- | firewall_manager.h | 6 | ||||
-rw-r--r-- | manager.cc | 7 | ||||
-rw-r--r-- | manager.h | 3 | ||||
-rw-r--r-- | shill_manager.cc | 11 | ||||
-rw-r--r-- | shill_manager.h | 6 |
8 files changed, 34 insertions, 36 deletions
@@ -22,6 +22,8 @@ #include <base/message_loop/message_loop_proxy.h> #include <base/run_loop.h> +#include "apmanager/dbus_control.h" + namespace apmanager { namespace { @@ -65,8 +67,14 @@ void Daemon::OnShutdown(int* return_code) { void Daemon::RegisterDBusObjectsAsync( brillo::dbus_utils::AsyncEventSequencer* sequencer) { + control_interface_.reset(new DBusControl(bus_)); manager_.reset(new apmanager::Manager()); - manager_->RegisterAsync(object_manager_.get(), bus_, sequencer); + // TODO(zqiu): remove object_manager_ and bus_ references once we moved over + // to use control interface for creating adaptors. + manager_->RegisterAsync(control_interface_.get(), + object_manager_.get(), + bus_, + sequencer); } } // namespace apmanager @@ -20,6 +20,7 @@ #include <base/callback_forward.h> #include <brillo/daemons/dbus_daemon.h> +#include "apmanager/control_interface.h" #include "apmanager/manager.h" namespace apmanager { @@ -42,6 +43,7 @@ class Daemon : public brillo::DBusServiceDaemon { private: friend class DaemonTest; + std::unique_ptr<ControlInterface> control_interface_; std::unique_ptr<Manager> manager_; base::Closure startup_callback_; diff --git a/firewall_manager.cc b/firewall_manager.cc index ded545c..722af05 100644 --- a/firewall_manager.cc +++ b/firewall_manager.cc @@ -19,11 +19,7 @@ #include <base/bind.h> #include <brillo/errors/error.h> -#if !defined(__ANDROID__) -#include "apmanager/permission_broker_dbus_proxy.h" -#else -#include "apmanager/firewalld_dbus_proxy.h" -#endif // __ANDROID__ +#include "apmanager/control_interface.h" using std::string; @@ -37,25 +33,14 @@ FirewallManager::FirewallManager() {} FirewallManager::~FirewallManager() {} -void FirewallManager::Init(const scoped_refptr<dbus::Bus>& bus) { +void FirewallManager::Init(ControlInterface* control_interface) { CHECK(!firewall_proxy_) << "Already started"; -#if !defined(__ANDROID__) - firewall_proxy_.reset( - new PermissionBrokerDBusProxy( - bus, + firewall_proxy_ = + control_interface->CreateFirewallProxy( base::Bind(&FirewallManager::OnFirewallServiceAppeared, weak_factory_.GetWeakPtr()), base::Bind(&FirewallManager::OnFirewallServiceVanished, - weak_factory_.GetWeakPtr()))); -#else - firewall_proxy_.reset( - new FirewalldDBusProxy( - bus, - base::Bind(&FirewallManager::OnFirewallServiceAppeared, - weak_factory_.GetWeakPtr()), - base::Bind(&FirewallManager::OnFirewallServiceVanished, - weak_factory_.GetWeakPtr()))); -#endif // __ANDROID__ + weak_factory_.GetWeakPtr())); } void FirewallManager::RequestDHCPPortAccess(const std::string& interface) { diff --git a/firewall_manager.h b/firewall_manager.h index 401aca4..6e5b43d 100644 --- a/firewall_manager.h +++ b/firewall_manager.h @@ -21,21 +21,21 @@ #include <string> #include <base/macros.h> -#include <base/memory/ref_counted.h> #include <base/memory/weak_ptr.h> -#include <dbus/bus.h> #include "apmanager/firewall_proxy_interface.h" // Class for managing required firewall rules for apmanager. namespace apmanager { +class ControlInterface; + class FirewallManager final { public: FirewallManager(); ~FirewallManager(); - void Init(const scoped_refptr<dbus::Bus>& bus); + void Init(ControlInterface* control_interface); // Request/release DHCP port access for the specified interface. void RequestDHCPPortAccess(const std::string& interface); @@ -44,7 +44,8 @@ Manager::~Manager() { } } -void Manager::RegisterAsync(ExportedObjectManager* object_manager, +void Manager::RegisterAsync(ControlInterface* control_interface, + ExportedObjectManager* object_manager, const scoped_refptr<dbus::Bus>& bus, AsyncEventSequencer* sequencer) { CHECK(!dbus_object_) << "Already registered"; @@ -58,8 +59,8 @@ void Manager::RegisterAsync(ExportedObjectManager* object_manager, sequencer->GetHandler("Manager.RegisterAsync() failed.", true)); bus_ = bus; - shill_manager_.Init(bus); - firewall_manager_.Init(bus); + shill_manager_.Init(control_interface); + firewall_manager_.Init(control_interface); } void Manager::Start() { @@ -32,6 +32,8 @@ namespace apmanager { +class ControlInterface; + class Manager : public org::chromium::apmanager::ManagerAdaptor, public org::chromium::apmanager::ManagerInterface { public: @@ -55,6 +57,7 @@ class Manager : public org::chromium::apmanager::ManagerAdaptor, // Register DBus object. void RegisterAsync( + ControlInterface* control_interface, brillo::dbus_utils::ExportedObjectManager* object_manager, const scoped_refptr<dbus::Bus>& bus, brillo::dbus_utils::AsyncEventSequencer* sequencer); diff --git a/shill_manager.cc b/shill_manager.cc index 34984ab..1e5c2fa 100644 --- a/shill_manager.cc +++ b/shill_manager.cc @@ -19,7 +19,7 @@ #include <base/bind.h> #include <brillo/errors/error.h> -#include "apmanager/shill_dbus_proxy.h" +#include "apmanager/control_interface.h" using std::string; @@ -29,15 +29,14 @@ ShillManager::ShillManager() {} ShillManager::~ShillManager() {} -void ShillManager::Init(const scoped_refptr<dbus::Bus>& bus) { +void ShillManager::Init(ControlInterface* control_interface) { CHECK(!shill_proxy_) << "Already init"; - shill_proxy_.reset( - new ShillDBusProxy( - bus, + shill_proxy_ = + control_interface->CreateShillProxy( base::Bind(&ShillManager::OnShillServiceAppeared, weak_factory_.GetWeakPtr()), base::Bind(&ShillManager::OnShillServiceVanished, - weak_factory_.GetWeakPtr()))); + weak_factory_.GetWeakPtr())); } void ShillManager::ClaimInterface(const string& interface_name) { diff --git a/shill_manager.h b/shill_manager.h index 4709795..dd0089b 100644 --- a/shill_manager.h +++ b/shill_manager.h @@ -21,20 +21,20 @@ #include <string> #include <base/macros.h> -#include <base/memory/ref_counted.h> #include <base/memory/weak_ptr.h> -#include <dbus/bus.h> #include "apmanager/shill_proxy_interface.h" namespace apmanager { +class ControlInterface; + class ShillManager { public: ShillManager(); virtual ~ShillManager(); - void Init(const scoped_refptr<dbus::Bus>& bus); + void Init(ControlInterface* control_interface); // Claim the given interface |interface_name| from shill. virtual void ClaimInterface(const std::string& interface_name); |