blob: 2264398b63e75e43332e238aee1bc331b54be9d9 [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
Darin Petkovaceede32011-07-18 15:32:38 -07007#include <base/logging.h>
8
David Rochberg24c6c622012-03-05 11:30:44 -05009#include "shill/dbus_objectmanager_proxy.h"
Darin Petkov5c97ac52011-07-19 16:30:49 -070010#include "shill/dbus_properties_proxy.h"
Darin Petkovaceede32011-07-18 15:32:38 -070011#include "shill/dhcpcd_proxy.h"
Jason Glasgow9a0be632012-03-30 08:53:35 -040012#include "shill/mm1_modem_modem3gpp_proxy.h"
13#include "shill/mm1_modem_modemcdma_proxy.h"
14#include "shill/mm1_modem_proxy.h"
15#include "shill/mm1_modem_simple_proxy.h"
16#include "shill/mm1_sim_proxy.h"
Darin Petkovbec79a22011-08-01 14:47:17 -070017#include "shill/modem_cdma_proxy.h"
Darin Petkov975b5e72011-08-30 11:48:08 -070018#include "shill/modem_gsm_card_proxy.h"
Darin Petkova1e0a1c2011-08-25 15:08:33 -070019#include "shill/modem_gsm_network_proxy.h"
Darin Petkovc90fe522011-07-15 13:59:47 -070020#include "shill/modem_manager_proxy.h"
Darin Petkove9d12e02011-07-27 15:09:37 -070021#include "shill/modem_proxy.h"
Darin Petkove604f702011-07-28 15:51:17 -070022#include "shill/modem_simple_proxy.h"
Darin Petkov394b7d42011-11-03 15:48:02 +010023#include "shill/power_manager_proxy.h"
mukesh agrawalb20776f2012-02-10 16:00:36 -080024#include "shill/supplicant_bss_proxy.h"
Darin Petkovd1967262011-07-18 14:55:18 -070025#include "shill/supplicant_interface_proxy.h"
26#include "shill/supplicant_process_proxy.h"
Darin Petkovc90fe522011-07-15 13:59:47 -070027
Darin Petkov5c97ac52011-07-19 16:30:49 -070028using std::string;
29
Darin Petkovc90fe522011-07-15 13:59:47 -070030namespace shill {
31
Eric Shienbrood3e20a232012-02-16 11:35:56 -050032// TODO(ers): not using LAZY_INSTANCE_INITIALIZER
33// because of http://crbug.com/114828
34static base::LazyInstance<ProxyFactory> g_proxy_factory = {0, {{0}}};
Darin Petkovc90fe522011-07-15 13:59:47 -070035
36ProxyFactory::ProxyFactory() {}
37
38ProxyFactory::~ProxyFactory() {}
39
Darin Petkovab565bb2011-10-06 02:55:51 -070040ProxyFactory *ProxyFactory::GetInstance() {
41 return g_proxy_factory.Pointer();
42}
43
Darin Petkovaceede32011-07-18 15:32:38 -070044void ProxyFactory::Init() {
45 CHECK(DBus::default_dispatcher); // Initialized in DBusControl::Init.
46 CHECK(!connection_.get());
47 connection_.reset(new DBus::Connection(DBus::Connection::SystemBus()));
48}
49
David Rochberg24c6c622012-03-05 11:30:44 -050050DBusObjectManagerProxyInterface *ProxyFactory::CreateDBusObjectManagerProxy(
David Rochberg24c6c622012-03-05 11:30:44 -050051 const string &path,
52 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050053 return new DBusObjectManagerProxy(connection(), path, service);
David Rochberg24c6c622012-03-05 11:30:44 -050054}
55
Darin Petkov5c97ac52011-07-19 16:30:49 -070056DBusPropertiesProxyInterface *ProxyFactory::CreateDBusPropertiesProxy(
Darin Petkov580c7af2011-10-24 12:32:50 +020057 DBusPropertiesProxyDelegate *delegate,
Darin Petkov5c97ac52011-07-19 16:30:49 -070058 const string &path,
59 const string &service) {
Darin Petkov580c7af2011-10-24 12:32:50 +020060 return new DBusPropertiesProxy(delegate, connection(), path, service);
Darin Petkov5c97ac52011-07-19 16:30:49 -070061}
62
Darin Petkovc90fe522011-07-15 13:59:47 -070063ModemManagerProxyInterface *ProxyFactory::CreateModemManagerProxy(
David Rochberg81030ea2012-03-02 15:44:25 -050064 ModemManagerClassic *manager,
Darin Petkov5c97ac52011-07-19 16:30:49 -070065 const string &path,
66 const string &service) {
Darin Petkovaceede32011-07-18 15:32:38 -070067 return new ModemManagerProxy(connection(), manager, path, service);
Darin Petkovc90fe522011-07-15 13:59:47 -070068}
69
Darin Petkovc5f56562011-08-06 16:40:05 -070070ModemProxyInterface *ProxyFactory::CreateModemProxy(
Darin Petkovc5f56562011-08-06 16:40:05 -070071 const string &path,
72 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050073 return new ModemProxy(connection(), path, service);
Darin Petkove9d12e02011-07-27 15:09:37 -070074}
75
Darin Petkove604f702011-07-28 15:51:17 -070076ModemSimpleProxyInterface *ProxyFactory::CreateModemSimpleProxy(
77 const string &path,
78 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050079 return new ModemSimpleProxy(connection(), path, service);
Darin Petkove604f702011-07-28 15:51:17 -070080}
81
Darin Petkovbec79a22011-08-01 14:47:17 -070082ModemCDMAProxyInterface *ProxyFactory::CreateModemCDMAProxy(
83 const string &path,
84 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050085 return new ModemCDMAProxy(connection(), path, service);
Darin Petkovbec79a22011-08-01 14:47:17 -070086}
87
Darin Petkov975b5e72011-08-30 11:48:08 -070088ModemGSMCardProxyInterface *ProxyFactory::CreateModemGSMCardProxy(
Darin Petkov975b5e72011-08-30 11:48:08 -070089 const string &path,
90 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050091 return new ModemGSMCardProxy(connection(), path, service);
Darin Petkov975b5e72011-08-30 11:48:08 -070092}
93
Darin Petkova1e0a1c2011-08-25 15:08:33 -070094ModemGSMNetworkProxyInterface *ProxyFactory::CreateModemGSMNetworkProxy(
Darin Petkova1e0a1c2011-08-25 15:08:33 -070095 const string &path,
96 const string &service) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050097 return new ModemGSMNetworkProxy(connection(), path, service);
Darin Petkova1e0a1c2011-08-25 15:08:33 -070098}
99
Jason Glasgow9a0be632012-03-30 08:53:35 -0400100// Proxies for ModemManager1 interfaces
101mm1::ModemModem3gppProxyInterface *ProxyFactory::CreateMM1ModemModem3gppProxy(
102 const std::string &path,
103 const std::string &service) {
104 return new mm1::ModemModem3gppProxy(connection(), path, service);
105}
106
107mm1::ModemModemCdmaProxyInterface *ProxyFactory::CreateMM1ModemModemCdmaProxy(
108 const std::string &path,
109 const std::string &service) {
110 return new mm1::ModemModemCdmaProxy(connection(), path, service);
111}
112
113mm1::ModemProxyInterface *ProxyFactory::CreateMM1ModemProxy(
114 const std::string &path,
115 const std::string &service) {
116 return new mm1::ModemProxy(connection(), path, service);
117}
118
119mm1::ModemSimpleProxyInterface *ProxyFactory::CreateMM1ModemSimpleProxy(
120 const std::string &path,
121 const std::string &service) {
122 return new mm1::ModemSimpleProxy(connection(), path, service);
123}
124
125mm1::SimProxyInterface *ProxyFactory::CreateSimProxy(
126 const std::string &path,
127 const std::string &service) {
128 return new mm1::SimProxy(connection(), path, service);
129}
130
Darin Petkov394b7d42011-11-03 15:48:02 +0100131PowerManagerProxyInterface *ProxyFactory::CreatePowerManagerProxy(
132 PowerManagerProxyDelegate *delegate) {
133 return new PowerManagerProxy(delegate, connection());
134}
135
Darin Petkovaceede32011-07-18 15:32:38 -0700136SupplicantProcessProxyInterface *ProxyFactory::CreateSupplicantProcessProxy(
Darin Petkovd1967262011-07-18 14:55:18 -0700137 const char *dbus_path,
138 const char *dbus_addr) {
Darin Petkovaceede32011-07-18 15:32:38 -0700139 return new SupplicantProcessProxy(connection(), dbus_path, dbus_addr);
Darin Petkovd1967262011-07-18 14:55:18 -0700140}
141
Darin Petkovaceede32011-07-18 15:32:38 -0700142SupplicantInterfaceProxyInterface *ProxyFactory::CreateSupplicantInterfaceProxy(
Darin Petkovd1967262011-07-18 14:55:18 -0700143 const WiFiRefPtr &wifi,
144 const DBus::Path &object_path,
145 const char *dbus_addr) {
Darin Petkovaceede32011-07-18 15:32:38 -0700146 return new SupplicantInterfaceProxy(wifi,
147 connection(),
148 object_path,
149 dbus_addr);
150}
151
mukesh agrawalb20776f2012-02-10 16:00:36 -0800152SupplicantBSSProxyInterface *ProxyFactory::CreateSupplicantBSSProxy(
153 WiFiEndpoint *wifi_endpoint,
154 const DBus::Path &object_path,
155 const char *dbus_addr) {
156 return new SupplicantBSSProxy(
157 wifi_endpoint, connection(), object_path, dbus_addr);
158}
159
Darin Petkova7b89492011-07-27 12:48:17 -0700160DHCPProxyInterface *ProxyFactory::CreateDHCPProxy(const string &service) {
Darin Petkovaceede32011-07-18 15:32:38 -0700161 return new DHCPCDProxy(connection(), service);
Darin Petkovd1967262011-07-18 14:55:18 -0700162}
163
Darin Petkovc90fe522011-07-15 13:59:47 -0700164} // namespace shill