summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Qiu <zqiu@google.com>2015-10-13 13:55:03 -0700
committerPeter Qiu <zqiu@google.com>2015-10-13 16:44:16 -0700
commitbe12882aa9307c62e1ae6ad8a69d5c663bed3b3e (patch)
treebd74603a78396b226890807396fc3258791282cd
parenta522e0006b344c6438a18e0a4848e7cdfbf5dd0a (diff)
downloadapmanager-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.cc10
-rw-r--r--daemon.h2
-rw-r--r--firewall_manager.cc25
-rw-r--r--firewall_manager.h6
-rw-r--r--manager.cc7
-rw-r--r--manager.h3
-rw-r--r--shill_manager.cc11
-rw-r--r--shill_manager.h6
8 files changed, 34 insertions, 36 deletions
diff --git a/daemon.cc b/daemon.cc
index d131cc9..e468dd9 100644
--- a/daemon.cc
+++ b/daemon.cc
@@ -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
diff --git a/daemon.h b/daemon.h
index 137adaa..38869fd 100644
--- a/daemon.h
+++ b/daemon.h
@@ -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);
diff --git a/manager.cc b/manager.cc
index a4c8b48..9f51d07 100644
--- a/manager.cc
+++ b/manager.cc
@@ -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() {
diff --git a/manager.h b/manager.h
index 3e62df8..63bee10 100644
--- a/manager.h
+++ b/manager.h
@@ -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);