blob: 108660e8d331a3f5a22f84db4e4969ffd0b0f07b [file] [log] [blame]
Elly Jones16227d32012-02-09 14:17:25 -05001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Chris Masoned7732e42011-05-20 11:08:56 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SHILL_MANAGER_DBUS_ADAPTOR_H_
6#define SHILL_MANAGER_DBUS_ADAPTOR_H_
7
8#include <map>
9#include <string>
Alex Vakulenko8a532292014-06-16 17:18:44 -070010#include <vector>
Chris Masoned7732e42011-05-20 11:08:56 -070011
Ben Chancc67c522014-09-03 07:19:18 -070012#include <base/macros.h>
Chris Masone8fe2c7e2011-06-09 15:51:19 -070013#include <dbus-c++/dbus.h>
Chris Masoned7732e42011-05-20 11:08:56 -070014
15#include "shill/adaptor_interfaces.h"
16#include "shill/dbus_adaptor.h"
Liam McLoughlinef342b42013-09-13 21:05:36 +010017#include "shill/dbus_adaptors/org.chromium.flimflam.Manager.h"
Chris Masoned7732e42011-05-20 11:08:56 -070018
19namespace shill {
Chris Masoneec6b18b2011-06-08 14:09:10 -070020
Chris Masoned7732e42011-05-20 11:08:56 -070021class Manager;
22
23// Subclass of DBusAdaptor for Manager objects
Chris Masoneec6b18b2011-06-08 14:09:10 -070024// There is a 1:1 mapping between Manager and ManagerDBusAdaptor
25// instances. Furthermore, the Manager owns the ManagerDBusAdaptor
26// and manages its lifetime, so we're OK with ManagerDBusAdaptor
27// having a bare pointer to its owner manager.
Chris Masoned7732e42011-05-20 11:08:56 -070028class ManagerDBusAdaptor : public org::chromium::flimflam::Manager_adaptor,
29 public DBusAdaptor,
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -080030 public ManagerAdaptorInterface,
31 public base::SupportsWeakPtr<ManagerDBusAdaptor> {
Chris Masoned7732e42011-05-20 11:08:56 -070032 public:
Chris Masoned7732e42011-05-20 11:08:56 -070033 static const char kPath[];
34
Paul Stewart8ae18742015-06-16 13:13:10 -070035 ManagerDBusAdaptor(DBus::Connection* conn, Manager* manager);
Ben Chan5ea763b2014-08-13 11:07:54 -070036 ~ManagerDBusAdaptor() override;
Chris Masoned0ceb8c2011-06-02 10:05:39 -070037
38 // Implementation of ManagerAdaptorInterface.
Paul Stewart8ae18742015-06-16 13:13:10 -070039 const std::string& GetRpcIdentifier() override { return path(); }
Yunlian Jiang6acd9662015-01-30 08:36:10 -080040 void UpdateRunning() override;
Paul Stewart8ae18742015-06-16 13:13:10 -070041 void EmitBoolChanged(const std::string& name, bool value) override;
42 void EmitUintChanged(const std::string& name, uint32_t value) override;
43 void EmitIntChanged(const std::string& name, int value) override;
44 void EmitStringChanged(const std::string& name,
45 const std::string& value) override;
46 void EmitStringsChanged(const std::string& name,
47 const std::vector<std::string>& value) override;
Paul Stewart49739c02012-08-08 17:24:03 -070048 void EmitRpcIdentifierChanged(
Paul Stewart8ae18742015-06-16 13:13:10 -070049 const std::string& name, const std::string& value) override;
mukesh agrawal32399322011-09-01 10:53:43 -070050 void EmitRpcIdentifierArrayChanged(
Paul Stewart8ae18742015-06-16 13:13:10 -070051 const std::string& name, const std::vector<std::string>& value) override;
52 void EmitStateChanged(const std::string& new_state) override;
Chris Masoned7732e42011-05-20 11:08:56 -070053
54 // Implementation of Manager_adaptor
Ben Chan3f4d4ee2014-09-09 07:41:33 -070055 std::map<std::string, DBus::Variant> GetProperties(
Paul Stewart8ae18742015-06-16 13:13:10 -070056 DBus::Error& error) override; // NOLINT
57 void SetProperty(const std::string& name,
58 const DBus::Variant& value,
59 DBus::Error& error) override; // NOLINT
60 std::string GetState(DBus::Error& error) override; // NOLINT
61 DBus::Path CreateProfile(const std::string& name,
62 DBus::Error& error) override; // NOLINT
63 void RemoveProfile(const std::string& name,
64 DBus::Error& error) override; // NOLINT
65 DBus::Path PushProfile(const std::string& name,
66 DBus::Error& error) override; // NOLINT
67 DBus::Path InsertUserProfile(const std::string& name,
68 const std::string& user_hash,
69 DBus::Error& error) override; // NOLINT
70 void PopProfile(const std::string& name,
71 DBus::Error& error) override; // NOLINT
72 void PopAnyProfile(DBus::Error& error) override; // NOLINT
73 void PopAllUserProfiles(DBus::Error& error) override; // NOLINT
74 void RecheckPortal(DBus::Error& error) override; // NOLINT
75 void RequestScan(const std::string& technology,
76 DBus::Error& error) override; // NOLINT
Chris Masoned7732e42011-05-20 11:08:56 -070077
Paul Stewart8ae18742015-06-16 13:13:10 -070078 void EnableTechnology(const std::string& technology_name,
79 DBus::Error& error) override; // NOLINT
80 void DisableTechnology(const std::string& technology_name,
81 DBus::Error& error) override; // NOLINT
Chris Masoned7732e42011-05-20 11:08:56 -070082
Paul Stewart8ae18742015-06-16 13:13:10 -070083 DBus::Path GetService(const std::map<std::string, DBus::Variant>& args,
84 DBus::Error& error) override; // NOLINT
85 DBus::Path GetVPNService(const std::map<std::string, DBus::Variant>& args,
86 DBus::Error& error) override; // NOLINT
Ben Chan3f4d4ee2014-09-09 07:41:33 -070087 DBus::Path GetWifiService(
Paul Stewart8ae18742015-06-16 13:13:10 -070088 const std::map<std::string, DBus::Variant>& args,
89 DBus::Error& error) override; // NOLINT
Ben Chan3f4d4ee2014-09-09 07:41:33 -070090 DBus::Path ConfigureService(
Paul Stewart8ae18742015-06-16 13:13:10 -070091 const std::map<std::string, DBus::Variant>& args,
92 DBus::Error& error) override; // NOLINT
Ben Chan3f4d4ee2014-09-09 07:41:33 -070093 DBus::Path ConfigureServiceForProfile(
Paul Stewart8ae18742015-06-16 13:13:10 -070094 const DBus::Path& profile_rpcid,
95 const std::map<std::string, DBus::Variant>& args,
96 DBus::Error& error) override; // NOLINT
Ben Chan3f4d4ee2014-09-09 07:41:33 -070097 DBus::Path FindMatchingService(
Paul Stewart8ae18742015-06-16 13:13:10 -070098 const std::map<std::string, DBus::Variant>& args,
99 DBus::Error& error) override; // NOLINT
Chris Masoned7732e42011-05-20 11:08:56 -0700100
Paul Stewart8ae18742015-06-16 13:13:10 -0700101 int32_t GetDebugLevel(DBus::Error& error) override; // NOLINT
102 void SetDebugLevel(const int32_t& level,
103 DBus::Error& error) override; // NOLINT
Chris Masoned7732e42011-05-20 11:08:56 -0700104
Paul Stewart8ae18742015-06-16 13:13:10 -0700105 std::string GetServiceOrder(DBus::Error& error) override; // NOLINT
106 void SetServiceOrder(const std::string& order,
107 DBus::Error& error) override; // NOLINT
Chris Masoned7732e42011-05-20 11:08:56 -0700108
Paul Stewart8ae18742015-06-16 13:13:10 -0700109 std::string GetDebugTags(DBus::Error& error) override; // NOLINT
110 void SetDebugTags(const std::string& tags,
111 DBus::Error& error) override; // NOLINT
112 std::string ListDebugTags(DBus::Error& error) override; // NOLINT
Elly Jones16227d32012-02-09 14:17:25 -0500113
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700114 std::map<std::string, DBus::Variant> GetNetworksForGeolocation(
Paul Stewart8ae18742015-06-16 13:13:10 -0700115 DBus::Error& error) override; // NOLINT
Gaurav Shah645bff82012-10-08 14:06:04 -0700116
Paul Stewart8ae18742015-06-16 13:13:10 -0700117 bool VerifyDestination(const std::string& certificate,
118 const std::string& public_key,
119 const std::string& nonce,
120 const std::string& signed_data,
121 const std::string& destination_udn,
122 const std::string& hotspot_ssid,
123 const std::string& hotspot_bssid,
124 DBus::Error& error) override; // NOLINT
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800125
Yunlian Jiang6acd9662015-01-30 08:36:10 -0800126 std::string VerifyAndEncryptCredentials(
Paul Stewart8ae18742015-06-16 13:13:10 -0700127 const std::string& certificate,
128 const std::string& public_key,
129 const std::string& nonce,
130 const std::string& signed_data,
131 const std::string& destination_udn,
132 const std::string& hotspot_ssid,
133 const std::string& hotspot_bssid,
134 const DBus::Path& path,
135 DBus::Error& error) override; // NOLINT
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800136
Paul Stewart8ae18742015-06-16 13:13:10 -0700137 std::string VerifyAndEncryptData(const std::string& certificate,
138 const std::string& public_key,
139 const std::string& nonce,
140 const std::string& signed_data,
141 const std::string& destination_udn,
142 const std::string& hotspot_ssid,
143 const std::string& hotspot_bssid,
144 const std::string& data,
145 DBus::Error& error) override; // NOLINT
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800146
Paul Stewart8ae18742015-06-16 13:13:10 -0700147 void ConnectToBestServices(DBus::Error& error) override; // NOLINT
Paul Stewart39db5ca2013-03-18 14:15:17 -0700148
Paul Stewart8ae18742015-06-16 13:13:10 -0700149 void CreateConnectivityReport(DBus::Error& error) override; // NOLINT
Rebecca Silberstein6862b382014-09-11 08:24:51 -0700150
Paul Stewart8ae18742015-06-16 13:13:10 -0700151 void ClaimInterface(const std::string& claimer_name,
152 const std::string& interface_name,
153 DBus::Error& error) override; // NOLINT
154 void ReleaseInterface(const std::string& claimer_name,
155 const std::string& interface_name,
156 DBus::Error& error) override; // NOLINT
Peter Qiu7e8b8ee2014-11-25 13:55:57 -0800157
Paul Stewart8ae18742015-06-16 13:13:10 -0700158 void SetSchedScan(const bool& enable,
159 DBus::Error& error) override; // NOLINT
Peter Qiud51b2442015-02-23 10:41:38 -0800160
Chris Masoned7732e42011-05-20 11:08:56 -0700161 private:
Paul Stewart8ae18742015-06-16 13:13:10 -0700162 Manager* manager_;
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700163
Chris Masoned7732e42011-05-20 11:08:56 -0700164 DISALLOW_COPY_AND_ASSIGN(ManagerDBusAdaptor);
165};
166
167} // namespace shill
Ben Chanc45688b2014-07-02 23:50:45 -0700168
Chris Masoned7732e42011-05-20 11:08:56 -0700169#endif // SHILL_MANAGER_DBUS_ADAPTOR_H_