blob: efa3eb9658be6aa1efdc48b50189086e9f8537db [file] [log] [blame]
Darin Petkovc90fe522011-07-15 13:59:47 -07001// Copyright (c) 2011 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#include "shill/proxy_factory.h"
6
Darin Petkovaceede32011-07-18 15:32:38 -07007#include <base/logging.h>
8
Darin Petkov5c97ac52011-07-19 16:30:49 -07009#include "shill/dbus_properties_proxy.h"
Darin Petkovaceede32011-07-18 15:32:38 -070010#include "shill/dhcpcd_proxy.h"
Darin Petkovbec79a22011-08-01 14:47:17 -070011#include "shill/modem_cdma_proxy.h"
Darin Petkov975b5e72011-08-30 11:48:08 -070012#include "shill/modem_gsm_card_proxy.h"
Darin Petkova1e0a1c2011-08-25 15:08:33 -070013#include "shill/modem_gsm_network_proxy.h"
Darin Petkovc90fe522011-07-15 13:59:47 -070014#include "shill/modem_manager_proxy.h"
Darin Petkove9d12e02011-07-27 15:09:37 -070015#include "shill/modem_proxy.h"
Darin Petkove604f702011-07-28 15:51:17 -070016#include "shill/modem_simple_proxy.h"
Darin Petkovd1967262011-07-18 14:55:18 -070017#include "shill/supplicant_interface_proxy.h"
18#include "shill/supplicant_process_proxy.h"
Darin Petkovc90fe522011-07-15 13:59:47 -070019
Darin Petkov5c97ac52011-07-19 16:30:49 -070020using std::string;
21
Darin Petkovc90fe522011-07-15 13:59:47 -070022namespace shill {
23
Darin Petkovab565bb2011-10-06 02:55:51 -070024static base::LazyInstance<ProxyFactory> g_proxy_factory(
25 base::LINKER_INITIALIZED);
Darin Petkovc90fe522011-07-15 13:59:47 -070026
27ProxyFactory::ProxyFactory() {}
28
29ProxyFactory::~ProxyFactory() {}
30
Darin Petkovab565bb2011-10-06 02:55:51 -070031ProxyFactory *ProxyFactory::GetInstance() {
32 return g_proxy_factory.Pointer();
33}
34
Darin Petkovaceede32011-07-18 15:32:38 -070035void ProxyFactory::Init() {
36 CHECK(DBus::default_dispatcher); // Initialized in DBusControl::Init.
37 CHECK(!connection_.get());
38 connection_.reset(new DBus::Connection(DBus::Connection::SystemBus()));
39}
40
Darin Petkov5c97ac52011-07-19 16:30:49 -070041DBusPropertiesProxyInterface *ProxyFactory::CreateDBusPropertiesProxy(
Darin Petkovc5f56562011-08-06 16:40:05 -070042 DBusPropertiesProxyListener *listener,
Darin Petkov5c97ac52011-07-19 16:30:49 -070043 const string &path,
44 const string &service) {
Darin Petkovc5f56562011-08-06 16:40:05 -070045 return new DBusPropertiesProxy(listener, connection(), path, service);
Darin Petkov5c97ac52011-07-19 16:30:49 -070046}
47
Darin Petkovc90fe522011-07-15 13:59:47 -070048ModemManagerProxyInterface *ProxyFactory::CreateModemManagerProxy(
49 ModemManager *manager,
Darin Petkov5c97ac52011-07-19 16:30:49 -070050 const string &path,
51 const string &service) {
Darin Petkovaceede32011-07-18 15:32:38 -070052 return new ModemManagerProxy(connection(), manager, path, service);
Darin Petkovc90fe522011-07-15 13:59:47 -070053}
54
Darin Petkovc5f56562011-08-06 16:40:05 -070055ModemProxyInterface *ProxyFactory::CreateModemProxy(
56 ModemProxyListener *listener,
57 const string &path,
58 const string &service) {
59 return new ModemProxy(listener, connection(), path, service);
Darin Petkove9d12e02011-07-27 15:09:37 -070060}
61
Darin Petkove604f702011-07-28 15:51:17 -070062ModemSimpleProxyInterface *ProxyFactory::CreateModemSimpleProxy(
63 const string &path,
64 const string &service) {
65 return new ModemSimpleProxy(connection(), path, service);
66}
67
Darin Petkovbec79a22011-08-01 14:47:17 -070068ModemCDMAProxyInterface *ProxyFactory::CreateModemCDMAProxy(
Darin Petkovd9661952011-08-03 16:25:42 -070069 ModemCDMAProxyListener *listener,
Darin Petkovbec79a22011-08-01 14:47:17 -070070 const string &path,
71 const string &service) {
Darin Petkovd9661952011-08-03 16:25:42 -070072 return new ModemCDMAProxy(listener, connection(), path, service);
Darin Petkovbec79a22011-08-01 14:47:17 -070073}
74
Darin Petkov975b5e72011-08-30 11:48:08 -070075ModemGSMCardProxyInterface *ProxyFactory::CreateModemGSMCardProxy(
76 ModemGSMCardProxyListener *listener,
77 const string &path,
78 const string &service) {
79 return new ModemGSMCardProxy(listener, connection(), path, service);
80}
81
Darin Petkova1e0a1c2011-08-25 15:08:33 -070082ModemGSMNetworkProxyInterface *ProxyFactory::CreateModemGSMNetworkProxy(
83 ModemGSMNetworkProxyListener *listener,
84 const string &path,
85 const string &service) {
86 return new ModemGSMNetworkProxy(listener, connection(), path, service);
87}
88
Darin Petkovaceede32011-07-18 15:32:38 -070089SupplicantProcessProxyInterface *ProxyFactory::CreateSupplicantProcessProxy(
Darin Petkovd1967262011-07-18 14:55:18 -070090 const char *dbus_path,
91 const char *dbus_addr) {
Darin Petkovaceede32011-07-18 15:32:38 -070092 return new SupplicantProcessProxy(connection(), dbus_path, dbus_addr);
Darin Petkovd1967262011-07-18 14:55:18 -070093}
94
Darin Petkovaceede32011-07-18 15:32:38 -070095SupplicantInterfaceProxyInterface *ProxyFactory::CreateSupplicantInterfaceProxy(
Darin Petkovd1967262011-07-18 14:55:18 -070096 const WiFiRefPtr &wifi,
97 const DBus::Path &object_path,
98 const char *dbus_addr) {
Darin Petkovaceede32011-07-18 15:32:38 -070099 return new SupplicantInterfaceProxy(wifi,
100 connection(),
101 object_path,
102 dbus_addr);
103}
104
Darin Petkova7b89492011-07-27 12:48:17 -0700105DHCPProxyInterface *ProxyFactory::CreateDHCPProxy(const string &service) {
Darin Petkovaceede32011-07-18 15:32:38 -0700106 return new DHCPCDProxy(connection(), service);
Darin Petkovd1967262011-07-18 14:55:18 -0700107}
108
Darin Petkovc90fe522011-07-15 13:59:47 -0700109} // namespace shill