blob: 7175b25ca7604f2e7030b26871813a7def42029f [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
5#include "shill/proxy_factory.h"
6
David Rochberg24c6c622012-03-05 11:30:44 -05007#include "shill/dbus_objectmanager_proxy.h"
Darin Petkov5c97ac52011-07-19 16:30:49 -07008#include "shill/dbus_properties_proxy.h"
Darin Petkov18fb2f72012-06-14 09:09:34 +02009#include "shill/dbus_service_proxy.h"
Darin Petkovaceede32011-07-18 15:32:38 -070010#include "shill/dhcpcd_proxy.h"
Christopher Wileyb691efd2012-08-09 13:51:51 -070011#include "shill/logging.h"
Arman Uguray6e5639f2012-11-15 20:30:19 -080012#include "shill/mm1_bearer_proxy.h"
Jason Glasgow9a0be632012-03-30 08:53:35 -040013#include "shill/mm1_modem_modem3gpp_proxy.h"
14#include "shill/mm1_modem_modemcdma_proxy.h"
15#include "shill/mm1_modem_proxy.h"
16#include "shill/mm1_modem_simple_proxy.h"
17#include "shill/mm1_sim_proxy.h"
Darin Petkovbec79a22011-08-01 14:47:17 -070018#include "shill/modem_cdma_proxy.h"
Darin Petkovc37a9c42012-09-06 15:28:22 +020019#include "shill/modem_gobi_proxy.h"
Darin Petkov975b5e72011-08-30 11:48:08 -070020#include "shill/modem_gsm_card_proxy.h"
Darin Petkova1e0a1c2011-08-25 15:08:33 -070021#include "shill/modem_gsm_network_proxy.h"
Darin Petkovc90fe522011-07-15 13:59:47 -070022#include "shill/modem_manager_proxy.h"
Darin Petkove9d12e02011-07-27 15:09:37 -070023#include "shill/modem_proxy.h"
Darin Petkove604f702011-07-28 15:51:17 -070024#include "shill/modem_simple_proxy.h"
Darin Petkov394b7d42011-11-03 15:48:02 +010025#include "shill/power_manager_proxy.h"
mukesh agrawalb20776f2012-02-10 16:00:36 -080026#include "shill/supplicant_bss_proxy.h"
Darin Petkovd1967262011-07-18 14:55:18 -070027#include "shill/supplicant_interface_proxy.h"
28#include "shill/supplicant_process_proxy.h"
Darin Petkov096b3472012-05-15 10:26:22 +020029#include "shill/wimax_device_proxy.h"
30#include "shill/wimax_manager_proxy.h"
Darin Petkov9893d9c2012-05-17 15:27:31 -070031#include "shill/wimax_network_proxy.h"
Darin Petkovc90fe522011-07-15 13:59:47 -070032
Darin Petkov5c97ac52011-07-19 16:30:49 -070033using std::string;
34
Darin Petkovc90fe522011-07-15 13:59:47 -070035namespace shill {
36
Ben Chanbbdef5f2012-04-23 13:58:15 -070037namespace {
38base::LazyInstance<ProxyFactory> g_proxy_factory = LAZY_INSTANCE_INITIALIZER;
39} // namespace
Darin Petkovc90fe522011-07-15 13:59:47 -070040
41ProxyFactory::ProxyFactory() {}
42
43ProxyFactory::~ProxyFactory() {}
44
Darin Petkovab565bb2011-10-06 02:55:51 -070045ProxyFactory *ProxyFactory::GetInstance() {
46 return g_proxy_factory.Pointer();
47}
48
Darin Petkovaceede32011-07-18 15:32:38 -070049void ProxyFactory::Init() {
50 CHECK(DBus::default_dispatcher); // Initialized in DBusControl::Init.
51 CHECK(!connection_.get());
52 connection_.reset(new DBus::Connection(DBus::Connection::SystemBus()));
53}
54
David Rochberg24c6c622012-03-05 11:30:44 -050055DBusObjectManagerProxyInterface *ProxyFactory::CreateDBusObjectManagerProxy(
David Rochberg24c6c622012-03-05 11:30:44 -050056 const string &path,
57 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050058 return new DBusObjectManagerProxy(connection(), path, service);
David Rochberg24c6c622012-03-05 11:30:44 -050059}
60
Darin Petkov5c97ac52011-07-19 16:30:49 -070061DBusPropertiesProxyInterface *ProxyFactory::CreateDBusPropertiesProxy(
Darin Petkov5c97ac52011-07-19 16:30:49 -070062 const string &path,
63 const string &service) {
Jason Glasgow9c09e362012-04-18 15:16:29 -040064 return new DBusPropertiesProxy(connection(), path, service);
Darin Petkov5c97ac52011-07-19 16:30:49 -070065}
66
Darin Petkov18fb2f72012-06-14 09:09:34 +020067DBusServiceProxyInterface *ProxyFactory::CreateDBusServiceProxy() {
68 return new DBusServiceProxy(connection());
69}
70
Darin Petkovc90fe522011-07-15 13:59:47 -070071ModemManagerProxyInterface *ProxyFactory::CreateModemManagerProxy(
David Rochberg81030ea2012-03-02 15:44:25 -050072 ModemManagerClassic *manager,
Darin Petkov5c97ac52011-07-19 16:30:49 -070073 const string &path,
74 const string &service) {
Darin Petkovaceede32011-07-18 15:32:38 -070075 return new ModemManagerProxy(connection(), manager, path, service);
Darin Petkovc90fe522011-07-15 13:59:47 -070076}
77
Darin Petkovc5f56562011-08-06 16:40:05 -070078ModemProxyInterface *ProxyFactory::CreateModemProxy(
Darin Petkovc5f56562011-08-06 16:40:05 -070079 const string &path,
80 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050081 return new ModemProxy(connection(), path, service);
Darin Petkove9d12e02011-07-27 15:09:37 -070082}
83
Darin Petkove604f702011-07-28 15:51:17 -070084ModemSimpleProxyInterface *ProxyFactory::CreateModemSimpleProxy(
85 const string &path,
86 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050087 return new ModemSimpleProxy(connection(), path, service);
Darin Petkove604f702011-07-28 15:51:17 -070088}
89
Darin Petkovbec79a22011-08-01 14:47:17 -070090ModemCDMAProxyInterface *ProxyFactory::CreateModemCDMAProxy(
91 const string &path,
92 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050093 return new ModemCDMAProxy(connection(), path, service);
Darin Petkovbec79a22011-08-01 14:47:17 -070094}
95
Darin Petkov975b5e72011-08-30 11:48:08 -070096ModemGSMCardProxyInterface *ProxyFactory::CreateModemGSMCardProxy(
Darin Petkov975b5e72011-08-30 11:48:08 -070097 const string &path,
98 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050099 return new ModemGSMCardProxy(connection(), path, service);
Darin Petkov975b5e72011-08-30 11:48:08 -0700100}
101
Darin Petkova1e0a1c2011-08-25 15:08:33 -0700102ModemGSMNetworkProxyInterface *ProxyFactory::CreateModemGSMNetworkProxy(
Darin Petkova1e0a1c2011-08-25 15:08:33 -0700103 const string &path,
104 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -0500105 return new ModemGSMNetworkProxy(connection(), path, service);
Darin Petkova1e0a1c2011-08-25 15:08:33 -0700106}
107
Darin Petkovc37a9c42012-09-06 15:28:22 +0200108ModemGobiProxyInterface *ProxyFactory::CreateModemGobiProxy(
109 const string &path,
110 const string &service) {
111 return new ModemGobiProxy(connection(), path, service);
112}
113
Jason Glasgow9a0be632012-03-30 08:53:35 -0400114// Proxies for ModemManager1 interfaces
115mm1::ModemModem3gppProxyInterface *ProxyFactory::CreateMM1ModemModem3gppProxy(
Darin Petkov096b3472012-05-15 10:26:22 +0200116 const string &path,
117 const string &service) {
Jason Glasgow9a0be632012-03-30 08:53:35 -0400118 return new mm1::ModemModem3gppProxy(connection(), path, service);
119}
120
121mm1::ModemModemCdmaProxyInterface *ProxyFactory::CreateMM1ModemModemCdmaProxy(
Darin Petkov096b3472012-05-15 10:26:22 +0200122 const string &path,
123 const string &service) {
Jason Glasgow9a0be632012-03-30 08:53:35 -0400124 return new mm1::ModemModemCdmaProxy(connection(), path, service);
125}
126
127mm1::ModemProxyInterface *ProxyFactory::CreateMM1ModemProxy(
Darin Petkov096b3472012-05-15 10:26:22 +0200128 const string &path,
129 const string &service) {
Jason Glasgow9a0be632012-03-30 08:53:35 -0400130 return new mm1::ModemProxy(connection(), path, service);
131}
132
133mm1::ModemSimpleProxyInterface *ProxyFactory::CreateMM1ModemSimpleProxy(
Darin Petkov096b3472012-05-15 10:26:22 +0200134 const string &path,
135 const string &service) {
Jason Glasgow9a0be632012-03-30 08:53:35 -0400136 return new mm1::ModemSimpleProxy(connection(), path, service);
137}
138
139mm1::SimProxyInterface *ProxyFactory::CreateSimProxy(
Darin Petkov096b3472012-05-15 10:26:22 +0200140 const string &path,
141 const string &service) {
Jason Glasgow9a0be632012-03-30 08:53:35 -0400142 return new mm1::SimProxy(connection(), path, service);
143}
144
Arman Uguray6e5639f2012-11-15 20:30:19 -0800145mm1::BearerProxyInterface *ProxyFactory::CreateBearerProxy(
146 const string &path,
147 const string &service) {
148 return new mm1::BearerProxy(connection(), path, service);
149}
150
Darin Petkov096b3472012-05-15 10:26:22 +0200151WiMaxDeviceProxyInterface *ProxyFactory::CreateWiMaxDeviceProxy(
152 const string &path) {
153 return new WiMaxDeviceProxy(connection(), path);
154}
155
156WiMaxManagerProxyInterface *ProxyFactory::CreateWiMaxManagerProxy() {
157 return new WiMaxManagerProxy(connection());
158}
159
Darin Petkov9893d9c2012-05-17 15:27:31 -0700160WiMaxNetworkProxyInterface *ProxyFactory::CreateWiMaxNetworkProxy(
161 const string &path) {
162 return new WiMaxNetworkProxy(connection(), path);
163}
164
Darin Petkov394b7d42011-11-03 15:48:02 +0100165PowerManagerProxyInterface *ProxyFactory::CreatePowerManagerProxy(
166 PowerManagerProxyDelegate *delegate) {
167 return new PowerManagerProxy(delegate, connection());
168}
169
Darin Petkovaceede32011-07-18 15:32:38 -0700170SupplicantProcessProxyInterface *ProxyFactory::CreateSupplicantProcessProxy(
Darin Petkovd1967262011-07-18 14:55:18 -0700171 const char *dbus_path,
172 const char *dbus_addr) {
Darin Petkovaceede32011-07-18 15:32:38 -0700173 return new SupplicantProcessProxy(connection(), dbus_path, dbus_addr);
Darin Petkovd1967262011-07-18 14:55:18 -0700174}
175
Darin Petkovaceede32011-07-18 15:32:38 -0700176SupplicantInterfaceProxyInterface *ProxyFactory::CreateSupplicantInterfaceProxy(
Darin Petkovd1967262011-07-18 14:55:18 -0700177 const WiFiRefPtr &wifi,
178 const DBus::Path &object_path,
179 const char *dbus_addr) {
Darin Petkovaceede32011-07-18 15:32:38 -0700180 return new SupplicantInterfaceProxy(wifi,
181 connection(),
182 object_path,
183 dbus_addr);
184}
185
mukesh agrawalb20776f2012-02-10 16:00:36 -0800186SupplicantBSSProxyInterface *ProxyFactory::CreateSupplicantBSSProxy(
187 WiFiEndpoint *wifi_endpoint,
188 const DBus::Path &object_path,
189 const char *dbus_addr) {
190 return new SupplicantBSSProxy(
191 wifi_endpoint, connection(), object_path, dbus_addr);
192}
193
Darin Petkova7b89492011-07-27 12:48:17 -0700194DHCPProxyInterface *ProxyFactory::CreateDHCPProxy(const string &service) {
Darin Petkovaceede32011-07-18 15:32:38 -0700195 return new DHCPCDProxy(connection(), service);
Darin Petkovd1967262011-07-18 14:55:18 -0700196}
197
Darin Petkovc90fe522011-07-15 13:59:47 -0700198} // namespace shill