blob: 1b9d43d7fb31fac275397ef89ca9cf77c228780d [file] [log] [blame]
Vitaly Buka3ef4fff2015-07-31 01:12:07 -07001// Copyright 2014 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_AP_MANAGER_CLIENT_H_
6#define BUFFET_AP_MANAGER_CLIENT_H_
7
8#include <memory>
9#include <string>
10
Alex Vakulenko297114c2015-10-12 13:45:43 -070011#include <apmanager/dbus-proxies.h>
Vitaly Buka3ef4fff2015-07-31 01:12:07 -070012#include <base/callback.h>
13#include <base/memory/ref_counted.h>
14
Vitaly Buka3ef4fff2015-07-31 01:12:07 -070015namespace buffet {
16
17// Manages soft AP for wifi bootstrapping.
18// Once created can handle multiple Start/Stop requests.
19class ApManagerClient final {
20 public:
21 explicit ApManagerClient(const scoped_refptr<dbus::Bus>& bus);
22 ~ApManagerClient();
23
24 void Start(const std::string& ssid);
25 void Stop();
26
27 std::string GetSsid() const { return ssid_; }
28
29 private:
30 void RemoveService(const dbus::ObjectPath& object_path);
31
32 void OnManagerAdded(org::chromium::apmanager::ManagerProxy* manager_proxy);
33 void OnServiceAdded(org::chromium::apmanager::ServiceProxy* service_proxy);
34
35 void OnSsidSet(bool success);
36
37 void OnServiceRemoved(const dbus::ObjectPath& object_path);
38 void OnManagerRemoved(const dbus::ObjectPath& object_path);
39
40 scoped_refptr<dbus::Bus> bus_;
41
42 std::unique_ptr<org::chromium::apmanager::ObjectManagerProxy>
43 object_manager_proxy_;
44 org::chromium::apmanager::ManagerProxy* manager_proxy_{nullptr};
45
46 dbus::ObjectPath service_path_;
47 org::chromium::apmanager::ServiceProxy* service_proxy_{nullptr};
48
49 std::string ssid_;
50
51 base::WeakPtrFactory<ApManagerClient> weak_ptr_factory_{this};
52};
53
54} // namespace buffet
55
56#endif // BUFFET_AP_MANAGER_CLIENT_H_