buffet: Simplify dbus::Bus propagation via ExportedObjectManager Since ExportedObjectManager already stores a reference to dbus::Bus, there is no reason to pass both of them around between different objects. Added a method to retrieve the Bus from the ExpObjMgr. BUG=chromium:374864 TEST=USE=buffet P2_TEST_FILTER="buffet::*" FEATURES=test emerge-link platform2 Change-Id: I01c1b890c1e126ede691d0c0be7fd3733143691b Reviewed-on: https://chromium-review.googlesource.com/211661 Tested-by: Alex Vakulenko <avakulenko@chromium.org> Reviewed-by: Christopher Wiley <wiley@chromium.org> Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/exported_object_manager.h b/buffet/exported_object_manager.h index 212609e..978c84e 100644 --- a/buffet/exported_object_manager.h +++ b/buffet/exported_object_manager.h
@@ -94,13 +94,15 @@ void ReleaseInterface(const dbus::ObjectPath& path, const std::string& interface_name); + const scoped_refptr<dbus::Bus>& GetBus() const { return bus_; } + private: void HandleGetManagedObjects( dbus::MethodCall* method_call, dbus::ExportedObject::ResponseSender response_sender) const; - // Both |bus_| and |exported_object_| outlive *this. - dbus::Bus* const bus_; + scoped_refptr<dbus::Bus> bus_; + // |exported_object_| outlives *this. dbus::ExportedObject* const exported_object_; // Tracks all objects currently known to the ExportedObjectManager. std::map<dbus::ObjectPath, InterfaceProperties> registered_objects_;
diff --git a/buffet/main.cc b/buffet/main.cc index eb25d13..b70421b 100644 --- a/buffet/main.cc +++ b/buffet/main.cc
@@ -78,7 +78,7 @@ logging::InitLogging(settings); } -void TakeServiceOwnership(scoped_refptr<dbus::Bus> bus, bool success) { +void TakeServiceOwnership(const scoped_refptr<dbus::Bus>& bus, bool success) { // Success should always be true since we've said that failures are // fatal. CHECK(success) << "Init of one or more objects has failed."; @@ -88,11 +88,11 @@ } void EnterMainLoop(base::MessageLoopForIO* message_loop, - scoped_refptr<dbus::Bus> bus) { + const scoped_refptr<dbus::Bus>& bus) { scoped_refptr<AsyncEventSequencer> sequencer(new AsyncEventSequencer()); ExportedObjectManager object_manager( bus, dbus::ObjectPath(buffet::dbus_constants::kRootServicePath)); - buffet::Manager manager(bus, object_manager.AsWeakPtr()); + buffet::Manager manager(object_manager.AsWeakPtr()); object_manager.Init( sequencer->GetHandler("ObjectManager.Init() failed.", true)); manager.Init(sequencer->GetHandler("Manager.Init() failed.", true));
diff --git a/buffet/manager.cc b/buffet/manager.cc index 39ccf7d..1cb0da2 100644 --- a/buffet/manager.cc +++ b/buffet/manager.cc
@@ -29,10 +29,8 @@ namespace buffet { Manager::Manager( - scoped_refptr<dbus::Bus> bus, - base::WeakPtr<dbus_utils::ExportedObjectManager> object_manager) - : bus_(bus), - exported_object_(bus->GetExportedObject( + const base::WeakPtr<dbus_utils::ExportedObjectManager>& object_manager) + : exported_object_(object_manager->GetBus()->GetExportedObject( dbus::ObjectPath(dbus_constants::kManagerServicePath))), object_manager_(object_manager) { } @@ -116,7 +114,7 @@ dbus_constants::kManagerInterface, dbus_constants::kManagerTestMethod, "Failed exporting TestMethod method", true)); - properties_.reset(new Properties(bus_)); + properties_.reset(new Properties(object_manager_->GetBus())); // TODO(wiley): Initialize all properties appropriately before claiming // the properties interface. properties_->state_.SetValue("{}");
diff --git a/buffet/manager.h b/buffet/manager.h index 08e7656..6bfccd0 100644 --- a/buffet/manager.h +++ b/buffet/manager.h
@@ -35,8 +35,8 @@ public: typedef base::Callback<void(bool success)> OnInitFinish; - Manager(scoped_refptr<dbus::Bus> bus, - base::WeakPtr<dbus_utils::ExportedObjectManager> object_manager); + Manager( + const base::WeakPtr<dbus_utils::ExportedObjectManager>& object_manager); ~Manager(); void Init(const OnInitFinish& cb); @@ -71,7 +71,6 @@ scoped_ptr<::dbus::Response> HandleTestMethod( ::dbus::MethodCall* method_call); - scoped_refptr<dbus::Bus> bus_; dbus::ExportedObject* exported_object_; // weak; owned by the Bus object. base::WeakPtr<dbus_utils::ExportedObjectManager> object_manager_; scoped_ptr<Properties> properties_;