buffet: Move platform dependent part of PeerdClient out of libweave

Peerd is brillo specific service.

BUG=brillo:1267
TEST='FEATURES=test emerge-gizmo buffet'

Change-Id: I666da7ba0ed6a6c55472fed8c5f5beb16b562619
Reviewed-on: https://chromium-review.googlesource.com/289914
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/buffet.gyp b/buffet/buffet.gyp
index a679314..3c59e0a 100644
--- a/buffet/buffet.gyp
+++ b/buffet/buffet.gyp
@@ -32,6 +32,7 @@
         'dbus_conversion.cc',
         'dbus_constants.cc',
         'manager.cc',
+        'peerd_client.cc',
         '../libweave/src/base_api_handler.cc',
         '../libweave/src/buffet_config.cc',
         '../libweave/src/commands/cloud_command_proxy.cc',
@@ -60,7 +61,6 @@
         '../libweave/src/privet/constants.cc',
         '../libweave/src/privet/device_delegate.cc',
         '../libweave/src/privet/openssl_utils.cc',
-        '../libweave/src/privet/peerd_client.cc',
         '../libweave/src/privet/privet_handler.cc',
         '../libweave/src/privet/privet_manager.cc',
         '../libweave/src/privet/privet_types.cc',
diff --git a/buffet/manager.cc b/buffet/manager.cc
index 85c61c1..f6b27a3 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -25,6 +25,7 @@
 
 #include "buffet/dbus_command_dispatcher.h"
 #include "buffet/dbus_conversion.h"
+#include "buffet/peerd_client.h"
 #include "weave/enum_to_string.h"
 
 using chromeos::dbus_utils::AsyncEventSequencer;
@@ -54,8 +55,10 @@
 
 void Manager::Start(const weave::Device::Options& options,
                     AsyncEventSequencer* sequencer) {
+  peerd_client_.reset(new PeerdClient{dbus_object_.GetBus()});
+
   device_ = weave::Device::Create();
-  device_->Start(options, &dbus_object_, sequencer);
+  device_->Start(options, peerd_client_.get(), &dbus_object_, sequencer);
 
   command_dispatcher_.reset(new DBusCommandDispacher{
       dbus_object_.GetObjectManager(), device_->GetCommands()});
diff --git a/buffet/manager.h b/buffet/manager.h
index 9dc84d8..e9fcad9 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -30,6 +30,8 @@
 
 namespace buffet {
 
+class PeerdClient;
+
 class DBusCommandDispacher;
 
 template<typename... Types>
@@ -114,6 +116,7 @@
   org::chromium::Buffet::ManagerAdaptor dbus_adaptor_{this};
   chromeos::dbus_utils::DBusObject dbus_object_;
 
+  std::unique_ptr<PeerdClient> peerd_client_;
   std::unique_ptr<weave::Device> device_;
   std::unique_ptr<DBusCommandDispacher> command_dispatcher_;
 
diff --git a/libweave/src/privet/peerd_client.cc b/buffet/peerd_client.cc
similarity index 96%
rename from libweave/src/privet/peerd_client.cc
rename to buffet/peerd_client.cc
index 1ed7796..cfbf64a 100644
--- a/libweave/src/privet/peerd_client.cc
+++ b/buffet/peerd_client.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "libweave/src/privet/peerd_client.h"
+#include "buffet/peerd_client.h"
 
 #include <map>
 
@@ -12,8 +12,7 @@
 
 using org::chromium::peerd::PeerProxy;
 
-namespace weave {
-namespace privet {
+namespace buffet {
 
 namespace {
 
@@ -146,5 +145,4 @@
   ExposeService();
 }
 
-}  // namespace privet
-}  // namespace weave
+}  // namespace buffet
diff --git a/libweave/src/privet/peerd_client.h b/buffet/peerd_client.h
similarity index 88%
rename from libweave/src/privet/peerd_client.h
rename to buffet/peerd_client.h
index de90248..e24cd32 100644
--- a/libweave/src/privet/peerd_client.h
+++ b/buffet/peerd_client.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBWEAVE_SRC_PRIVET_PEERD_CLIENT_H_
-#define LIBWEAVE_SRC_PRIVET_PEERD_CLIENT_H_
+#ifndef BUFFET_PRIVET_PEERD_CLIENT_H_
+#define BUFFET_PRIVET_PEERD_CLIENT_H_
 
 #include <map>
 #include <memory>
@@ -19,11 +19,10 @@
 class Bus;
 }  // namespace dbus
 
-namespace weave {
-namespace privet {
+namespace buffet {
 
 // Publishes privet service on mDns using peerd.
-class PeerdClient : public Mdns {
+class PeerdClient : public weave::Mdns {
  public:
   explicit PeerdClient(const scoped_refptr<dbus::Bus>& bus);
   ~PeerdClient() override;
@@ -67,7 +66,6 @@
   DISALLOW_COPY_AND_ASSIGN(PeerdClient);
 };
 
-}  // namespace privet
-}  // namespace weave
+}  // namespace buffet
 
-#endif  // LIBWEAVE_SRC_PRIVET_PEERD_CLIENT_H_
+#endif  // BUFFET_PRIVET_PEERD_CLIENT_H_
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h
index c642945..c730280 100644
--- a/libweave/include/weave/device.h
+++ b/libweave/include/weave/device.h
@@ -15,6 +15,7 @@
 #include "weave/cloud.h"
 #include "weave/commands.h"
 #include "weave/config.h"
+#include "weave/mdns.h"
 #include "weave/privet.h"
 #include "weave/state.h"
 
@@ -45,6 +46,7 @@
   virtual ~Device() = default;
 
   virtual void Start(const Options& options,
+                     Mdns* mdns,
                      chromeos::dbus_utils::DBusObject* dbus_object,
                      chromeos::dbus_utils::AsyncEventSequencer* sequencer) = 0;
 
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 75299b5..8cab8c3 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -39,6 +39,7 @@
 
 void DeviceManager::Start(
     const Options& options,
+    Mdns* mdns,
     chromeos::dbus_utils::DBusObject* dbus_object,
     chromeos::dbus_utils::AsyncEventSequencer* sequencer) {
   command_manager_ = std::make_shared<CommandManager>();
@@ -70,7 +71,7 @@
   device_info_->Start();
 
   if (!options.disable_privet)
-    StartPrivet(options, dbus_object, sequencer);
+    StartPrivet(options, mdns, dbus_object, sequencer);
 }
 
 Commands* DeviceManager::GetCommands() {
@@ -95,12 +96,13 @@
 
 void DeviceManager::StartPrivet(
     const Options& options,
+    Mdns* mdns,
     chromeos::dbus_utils::DBusObject* dbus_object,
     chromeos::dbus_utils::AsyncEventSequencer* sequencer) {
   privet_.reset(new privet::Manager{});
   privet_->Start(options, dbus_object->GetBus(), shill_client_.get(),
                  device_info_.get(), command_manager_.get(),
-                 state_manager_.get(), sequencer);
+                 state_manager_.get(), mdns, sequencer);
 
   privet_->AddOnWifiSetupChangedCallback(
       base::Bind(&DeviceManager::OnWiFiBootstrapStateChanged,
diff --git a/libweave/src/device_manager.h b/libweave/src/device_manager.h
index 7faf586..68b7614 100644
--- a/libweave/src/device_manager.h
+++ b/libweave/src/device_manager.h
@@ -35,6 +35,7 @@
   ~DeviceManager() override;
 
   void Start(const Options& options,
+             Mdns* mdns,
              chromeos::dbus_utils::DBusObject* dbus_object,
              chromeos::dbus_utils::AsyncEventSequencer* sequencer) override;
 
@@ -46,6 +47,7 @@
 
  private:
   void StartPrivet(const Options& options,
+                   Mdns* mdns,
                    chromeos::dbus_utils::DBusObject* dbus_object,
                    chromeos::dbus_utils::AsyncEventSequencer* sequencer);
 
diff --git a/libweave/src/privet/privet_manager.cc b/libweave/src/privet/privet_manager.cc
index b65ba06..917bcea 100644
--- a/libweave/src/privet/privet_manager.cc
+++ b/libweave/src/privet/privet_manager.cc
@@ -33,7 +33,6 @@
 #include "libweave/src/privet/cloud_delegate.h"
 #include "libweave/src/privet/constants.h"
 #include "libweave/src/privet/device_delegate.h"
-#include "libweave/src/privet/peerd_client.h"
 #include "libweave/src/privet/privet_handler.h"
 #include "libweave/src/privet/publisher.h"
 #include "libweave/src/privet/shill_client.h"
@@ -67,6 +66,7 @@
                     DeviceRegistrationInfo* device,
                     CommandManager* command_manager,
                     StateManager* state_manager,
+                    Mdns* mdns,
                     AsyncEventSequencer* sequencer) {
   disable_security_ = options.disable_security;
 
@@ -89,11 +89,8 @@
     wifi_bootstrap_manager_->Init();
   }
 
-  peerd_client_.reset(new PeerdClient(bus));
-
   publisher_.reset(new Publisher(device_.get(), cloud_.get(),
-                                 wifi_bootstrap_manager_.get(),
-                                 peerd_client_.get()));
+                                 wifi_bootstrap_manager_.get(), mdns));
 
   privet_handler_.reset(
       new PrivetHandler(cloud_.get(), device_.get(), security_.get(),
diff --git a/libweave/src/privet/privet_manager.h b/libweave/src/privet/privet_manager.h
index cb77b12..98ded7d 100644
--- a/libweave/src/privet/privet_manager.h
+++ b/libweave/src/privet/privet_manager.h
@@ -44,7 +44,6 @@
 class CloudDelegate;
 class DaemonState;
 class DeviceDelegate;
-class PeerdClient;
 class PrivetHandler;
 class Publisher;
 class SecurityManager;
@@ -61,6 +60,7 @@
              DeviceRegistrationInfo* device,
              CommandManager* command_manager,
              StateManager* state_manager,
+             Mdns* mdns,
              chromeos::dbus_utils::AsyncEventSequencer* sequencer);
 
   std::string GetCurrentlyConnectedSsid() const;
@@ -103,7 +103,6 @@
   std::unique_ptr<SecurityManager> security_;
   std::unique_ptr<ApManagerClient> ap_manager_client_;
   std::unique_ptr<WifiBootstrapManager> wifi_bootstrap_manager_;
-  std::unique_ptr<PeerdClient> peerd_client_;
   std::unique_ptr<Publisher> publisher_;
   std::unique_ptr<PrivetHandler> privet_handler_;
   std::unique_ptr<libwebserv::Server> web_server_;