blob: 03cce4581d76a9f7a39ddfd27806d51660ce6d4b [file] [log] [blame]
Vitaly Buka7ce499f2015-06-09 08:04:11 -07001// Copyright 2015 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 BUFFET_PRIVET_DBUS_MANAGER_H_
6#define BUFFET_PRIVET_DBUS_MANAGER_H_
7
8#include <memory>
9#include <string>
10#include <vector>
11
12#include <base/macros.h>
13#include <chromeos/dbus/async_event_sequencer.h>
14#include <chromeos/dbus/dbus_object.h>
15#include <chromeos/errors/error.h>
16#include <chromeos/variant_dictionary.h>
17#include <dbus/object_path.h>
18
19#include "buffet/privet/org.chromium.privetd.Manager.h"
20#include "buffet/privet/wifi_bootstrap_manager.h"
21
22namespace chromeos {
23namespace dbus_utils {
24class ExportedObjectManager;
25} // dbus_utils
26} // chromeos
27
28namespace privetd {
29
30class CloudDelegate;
31class SecurityManager;
32enum class PairingType;
33
34// Exposes most of the privetd DBus interface.
35class DBusManager : public org::chromium::privetd::ManagerInterface {
36 public:
37 using CompletionAction =
38 chromeos::dbus_utils::AsyncEventSequencer::CompletionAction;
39
40 DBusManager(chromeos::dbus_utils::ExportedObjectManager* object_manager,
41 WifiBootstrapManager* wifi_bootstrap_manager,
42 CloudDelegate* cloud_delegate,
43 SecurityManager* security_manager);
44 ~DBusManager() override = default;
45 void RegisterAsync(const CompletionAction& on_done);
46
47 // DBus handlers
48 bool EnableWiFiBootstrapping(
49 chromeos::ErrorPtr* error,
50 const dbus::ObjectPath& in_listener_path,
51 const chromeos::VariantDictionary& in_options) override;
52 bool DisableWiFiBootstrapping(chromeos::ErrorPtr* error) override;
53 bool EnableGCDBootstrapping(
54 chromeos::ErrorPtr* error,
55 const dbus::ObjectPath& in_listener_path,
56 const chromeos::VariantDictionary& in_options) override;
57 bool DisableGCDBootstrapping(chromeos::ErrorPtr* error) override;
58 std::string Ping() override;
59
60 private:
61 void UpdateWiFiBootstrapState(WifiBootstrapManager::State state);
62 void OnPairingStart(const std::string& session_id,
63 PairingType pairing_type,
64 const std::vector<uint8_t>& code);
65 void OnPairingEnd(const std::string& session_id);
66
67 org::chromium::privetd::ManagerAdaptor dbus_adaptor_{this};
68 std::unique_ptr<chromeos::dbus_utils::DBusObject> dbus_object_;
69 base::WeakPtrFactory<DBusManager> weak_ptr_factory_{this};
70
71 DISALLOW_COPY_AND_ASSIGN(DBusManager);
72};
73
74} // namespace privetd
75
76#endif // BUFFET_PRIVET_DBUS_MANAGER_H_