blob: d93c87a8866b606d2b4285874065306923b78904 [file] [log] [blame]
Eric Shienbrood5de44ab2011-12-05 10:46:27 -05001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Darin Petkovc90fe522011-07-15 13:59:47 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Ben Chanc45688b2014-07-02 23:50:45 -07005#ifndef SHILL_PROXY_FACTORY_H_
6#define SHILL_PROXY_FACTORY_H_
Darin Petkovc90fe522011-07-15 13:59:47 -07007
Ben Chancd477322014-10-17 14:19:30 -07008#include <memory>
Darin Petkovc90fe522011-07-15 13:59:47 -07009#include <string>
10
Darin Petkovab565bb2011-10-06 02:55:51 -070011#include <base/lazy_instance.h>
Ben Chancc67c522014-09-03 07:19:18 -070012#include <base/macros.h>
Darin Petkovd1967262011-07-18 14:55:18 -070013#include <dbus-c++/dbus.h>
14
15#include "shill/refptr_types.h"
Darin Petkovc90fe522011-07-15 13:59:47 -070016
17namespace shill {
18
David Rochberg24c6c622012-03-05 11:30:44 -050019class DBusObjectManagerProxyInterface;
Darin Petkov5c97ac52011-07-19 16:30:49 -070020class DBusPropertiesProxyInterface;
Darin Petkov18fb2f72012-06-14 09:09:34 +020021class DBusServiceProxyInterface;
Darin Petkovaceede32011-07-18 15:32:38 -070022class DHCPProxyInterface;
Darin Petkovbec79a22011-08-01 14:47:17 -070023class ModemCDMAProxyInterface;
Darin Petkov975b5e72011-08-30 11:48:08 -070024class ModemGSMCardProxyInterface;
Darin Petkova1e0a1c2011-08-25 15:08:33 -070025class ModemGSMNetworkProxyInterface;
Darin Petkovc37a9c42012-09-06 15:28:22 +020026class ModemGobiProxyInterface;
David Rochberg81030ea2012-03-02 15:44:25 -050027class ModemManagerClassic;
Darin Petkovc90fe522011-07-15 13:59:47 -070028class ModemManagerProxyInterface;
Darin Petkove9d12e02011-07-27 15:09:37 -070029class ModemProxyInterface;
Darin Petkove604f702011-07-28 15:51:17 -070030class ModemSimpleProxyInterface;
Prabhu Kaliamoorthi77e76832015-02-13 15:20:23 +010031class PermissionBrokerProxyInterface;
Darin Petkov394b7d42011-11-03 15:48:02 +010032class PowerManagerProxyDelegate;
33class PowerManagerProxyInterface;
Paul Stewart59a8cba2015-01-09 15:48:19 -080034class UpstartProxyInterface;
Darin Petkov096b3472012-05-15 10:26:22 +020035class WiMaxDeviceProxyInterface;
36class WiMaxManagerProxyInterface;
Darin Petkov9893d9c2012-05-17 15:27:31 -070037class WiMaxNetworkProxyInterface;
Darin Petkovc90fe522011-07-15 13:59:47 -070038
Peter Qiu1a72f542015-04-14 16:31:36 -070039#if !defined(DISABLE_WIFI)
40class SupplicantBSSProxyInterface;
41#endif // DISABLE_WIFI
42
43#if !defined(DISABLE_WIFI) || !defined(DISABLE_WIRED_8021X)
44class SupplicantEventDelegateInterface;
45class SupplicantInterfaceProxyInterface;
46class SupplicantNetworkProxyInterface;
47class SupplicantProcessProxyInterface;
48#endif // DISABLE_WIFI || DISABLE_WIRED_8021X
49
Jason Glasgow9a0be632012-03-30 08:53:35 -040050namespace mm1 {
51
Arman Uguray6e5639f2012-11-15 20:30:19 -080052class BearerProxyInterface;
Arman Uguray2c39fab2012-12-12 16:56:34 -080053class ModemLocationProxyInterface;
Jason Glasgow9a0be632012-03-30 08:53:35 -040054class ModemModem3gppProxyInterface;
55class ModemModemCdmaProxyInterface;
56class ModemProxyInterface;
57class ModemSimpleProxyInterface;
Arman Uguray618af2b2012-12-11 19:20:42 -080058class ModemTimeProxyInterface;
Jason Glasgow9a0be632012-03-30 08:53:35 -040059class SimProxyInterface;
60
Alex Vakulenko8a532292014-06-16 17:18:44 -070061} // namespace mm1
Jason Glasgow9a0be632012-03-30 08:53:35 -040062
Darin Petkovc90fe522011-07-15 13:59:47 -070063// Global DBus proxy factory that can be mocked out in tests.
64class ProxyFactory {
65 public:
Darin Petkovc90fe522011-07-15 13:59:47 -070066 virtual ~ProxyFactory();
67
mukesh agrawalf407d592013-07-31 11:37:57 -070068 // Since this is a singleton, use ProxyFactory::GetInstance()->Foo().
Paul Stewart1a212a62015-06-16 13:13:10 -070069 static ProxyFactory* GetInstance();
Darin Petkovab565bb2011-10-06 02:55:51 -070070
Paul Stewart1a212a62015-06-16 13:13:10 -070071 virtual DBusPropertiesProxyInterface* CreateDBusPropertiesProxy(
72 const std::string& path,
73 const std::string& service);
Darin Petkov5c97ac52011-07-19 16:30:49 -070074
Paul Stewart1a212a62015-06-16 13:13:10 -070075 virtual DBusServiceProxyInterface* CreateDBusServiceProxy();
Darin Petkov18fb2f72012-06-14 09:09:34 +020076
Darin Petkov75f201f2013-03-19 13:01:28 +010077 // The caller retains ownership of 'delegate'. It must not be deleted before
78 // the proxy.
Paul Stewart1a212a62015-06-16 13:13:10 -070079 virtual PowerManagerProxyInterface* CreatePowerManagerProxy(
80 PowerManagerProxyDelegate* delegate);
Darin Petkov75f201f2013-03-19 13:01:28 +010081
Peter Qiu1a72f542015-04-14 16:31:36 -070082#if !defined(DISABLE_WIFI) || !defined(DISABLE_WIRED_8021X)
Paul Stewart1a212a62015-06-16 13:13:10 -070083 virtual SupplicantProcessProxyInterface* CreateSupplicantProcessProxy(
84 const char* dbus_path,
85 const char* dbus_addr);
Darin Petkov75f201f2013-03-19 13:01:28 +010086
Paul Stewart1a212a62015-06-16 13:13:10 -070087 virtual SupplicantInterfaceProxyInterface* CreateSupplicantInterfaceProxy(
88 SupplicantEventDelegateInterface* delegate,
89 const DBus::Path& object_path,
90 const char* dbus_addr);
Darin Petkov75f201f2013-03-19 13:01:28 +010091
Paul Stewart1a212a62015-06-16 13:13:10 -070092 virtual SupplicantNetworkProxyInterface* CreateSupplicantNetworkProxy(
93 const DBus::Path& object_path,
94 const char* dbus_addr);
Peter Qiu1a72f542015-04-14 16:31:36 -070095#endif // DISABLE_WIFI || DISABLE_WIRED_8021X
Darin Petkov75f201f2013-03-19 13:01:28 +010096
Peter Qiu1a72f542015-04-14 16:31:36 -070097#if !defined(DISABLE_WIFI)
Darin Petkov75f201f2013-03-19 13:01:28 +010098 // See comment in supplicant_bss_proxy.h, about bare pointer.
Paul Stewart1a212a62015-06-16 13:13:10 -070099 virtual SupplicantBSSProxyInterface* CreateSupplicantBSSProxy(
100 WiFiEndpoint* wifi_endpoint,
101 const DBus::Path& object_path,
102 const char* dbus_addr);
Peter Qiu1a72f542015-04-14 16:31:36 -0700103#endif // DISABLE_WIFI
Darin Petkov75f201f2013-03-19 13:01:28 +0100104
Paul Stewart1a212a62015-06-16 13:13:10 -0700105 virtual UpstartProxyInterface* CreateUpstartProxy();
Paul Stewart59a8cba2015-01-09 15:48:19 -0800106
Paul Stewart1a212a62015-06-16 13:13:10 -0700107 virtual DHCPProxyInterface* CreateDHCPProxy(const std::string& service);
Darin Petkov75f201f2013-03-19 13:01:28 +0100108
Paul Stewart1a212a62015-06-16 13:13:10 -0700109 virtual PermissionBrokerProxyInterface* CreatePermissionBrokerProxy();
Prabhu Kaliamoorthi77e76832015-02-13 15:20:23 +0100110
Darin Petkov75f201f2013-03-19 13:01:28 +0100111#if !defined(DISABLE_CELLULAR)
112
Paul Stewart1a212a62015-06-16 13:13:10 -0700113 virtual DBusObjectManagerProxyInterface* CreateDBusObjectManagerProxy(
114 const std::string& path,
115 const std::string& service);
Darin Petkovbd9f33a2013-03-20 10:38:07 +0100116
Paul Stewart1a212a62015-06-16 13:13:10 -0700117 virtual ModemManagerProxyInterface* CreateModemManagerProxy(
118 ModemManagerClassic* manager,
119 const std::string& path,
120 const std::string& service);
Darin Petkovc90fe522011-07-15 13:59:47 -0700121
Paul Stewart1a212a62015-06-16 13:13:10 -0700122 virtual ModemProxyInterface* CreateModemProxy(const std::string& path,
123 const std::string& service);
Darin Petkove9d12e02011-07-27 15:09:37 -0700124
Paul Stewart1a212a62015-06-16 13:13:10 -0700125 virtual ModemSimpleProxyInterface* CreateModemSimpleProxy(
126 const std::string& path,
127 const std::string& service);
Darin Petkove604f702011-07-28 15:51:17 -0700128
Paul Stewart1a212a62015-06-16 13:13:10 -0700129 virtual ModemCDMAProxyInterface* CreateModemCDMAProxy(
130 const std::string& path,
131 const std::string& service);
Darin Petkovbec79a22011-08-01 14:47:17 -0700132
Paul Stewart1a212a62015-06-16 13:13:10 -0700133 virtual ModemGSMCardProxyInterface* CreateModemGSMCardProxy(
134 const std::string& path,
135 const std::string& service);
Darin Petkov975b5e72011-08-30 11:48:08 -0700136
Paul Stewart1a212a62015-06-16 13:13:10 -0700137 virtual ModemGSMNetworkProxyInterface* CreateModemGSMNetworkProxy(
138 const std::string& path,
139 const std::string& service);
Darin Petkova1e0a1c2011-08-25 15:08:33 -0700140
Paul Stewart1a212a62015-06-16 13:13:10 -0700141 virtual ModemGobiProxyInterface* CreateModemGobiProxy(
142 const std::string& path,
143 const std::string& service);
Darin Petkovc37a9c42012-09-06 15:28:22 +0200144
Jason Glasgow9a0be632012-03-30 08:53:35 -0400145 // Proxies for ModemManager1 interfaces
Paul Stewart1a212a62015-06-16 13:13:10 -0700146 virtual mm1::ModemModem3gppProxyInterface* CreateMM1ModemModem3gppProxy(
147 const std::string& path,
148 const std::string& service);
Jason Glasgow9a0be632012-03-30 08:53:35 -0400149
Paul Stewart1a212a62015-06-16 13:13:10 -0700150 virtual mm1::ModemModemCdmaProxyInterface* CreateMM1ModemModemCdmaProxy(
151 const std::string& path,
152 const std::string& service);
Jason Glasgow9a0be632012-03-30 08:53:35 -0400153
Paul Stewart1a212a62015-06-16 13:13:10 -0700154 virtual mm1::ModemProxyInterface* CreateMM1ModemProxy(
155 const std::string& path,
156 const std::string& service);
Jason Glasgow9a0be632012-03-30 08:53:35 -0400157
Paul Stewart1a212a62015-06-16 13:13:10 -0700158 virtual mm1::ModemLocationProxyInterface* CreateMM1ModemLocationProxy(
159 const std::string& path,
160 const std::string& service);
Arman Uguray2c39fab2012-12-12 16:56:34 -0800161
Paul Stewart1a212a62015-06-16 13:13:10 -0700162 virtual mm1::ModemSimpleProxyInterface* CreateMM1ModemSimpleProxy(
163 const std::string& path,
164 const std::string& service);
Jason Glasgow9a0be632012-03-30 08:53:35 -0400165
Paul Stewart1a212a62015-06-16 13:13:10 -0700166 virtual mm1::ModemTimeProxyInterface* CreateMM1ModemTimeProxy(
167 const std::string& path,
168 const std::string& service);
Arman Uguray618af2b2012-12-11 19:20:42 -0800169
Paul Stewart1a212a62015-06-16 13:13:10 -0700170 virtual mm1::SimProxyInterface* CreateSimProxy(
171 const std::string& path,
172 const std::string& service);
Jason Glasgow9a0be632012-03-30 08:53:35 -0400173
Paul Stewart1a212a62015-06-16 13:13:10 -0700174 virtual mm1::BearerProxyInterface* CreateBearerProxy(
175 const std::string& path,
176 const std::string& service);
Arman Uguray6e5639f2012-11-15 20:30:19 -0800177
Darin Petkov75f201f2013-03-19 13:01:28 +0100178#endif // DISABLE_CELLULAR
Darin Petkovc90fe522011-07-15 13:59:47 -0700179
Ben Chan520eb172013-10-30 20:51:04 -0700180#if !defined(DISABLE_WIMAX)
181
Paul Stewart1a212a62015-06-16 13:13:10 -0700182 virtual WiMaxDeviceProxyInterface* CreateWiMaxDeviceProxy(
183 const std::string& path);
184 virtual WiMaxManagerProxyInterface* CreateWiMaxManagerProxy();
185 virtual WiMaxNetworkProxyInterface* CreateWiMaxNetworkProxy(
186 const std::string& path);
Ben Chan520eb172013-10-30 20:51:04 -0700187
188#endif // DISABLE_WIMAX
189
Darin Petkovab565bb2011-10-06 02:55:51 -0700190 protected:
191 ProxyFactory();
Darin Petkovaceede32011-07-18 15:32:38 -0700192
Darin Petkovc90fe522011-07-15 13:59:47 -0700193 private:
Darin Petkovab565bb2011-10-06 02:55:51 -0700194 friend struct base::DefaultLazyInstanceTraits<ProxyFactory>;
Darin Petkovc90fe522011-07-15 13:59:47 -0700195
Paul Stewart1a212a62015-06-16 13:13:10 -0700196 DBus::Connection* GetConnection() const;
Darin Petkovaceede32011-07-18 15:32:38 -0700197
Darin Petkovc90fe522011-07-15 13:59:47 -0700198 DISALLOW_COPY_AND_ASSIGN(ProxyFactory);
199};
200
201} // namespace shill
202
Ben Chanc45688b2014-07-02 23:50:45 -0700203#endif // SHILL_PROXY_FACTORY_H_