blob: 387ad3d26bf3339649acaa99d9ef714ed344e294 [file] [log] [blame]
// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "shill/proxy_factory.h"
#include <base/logging.h>
#include "shill/dbus_properties_proxy.h"
#include "shill/dhcpcd_proxy.h"
#include "shill/modem_cdma_proxy.h"
#include "shill/modem_gsm_card_proxy.h"
#include "shill/modem_gsm_network_proxy.h"
#include "shill/modem_manager_proxy.h"
#include "shill/modem_proxy.h"
#include "shill/modem_simple_proxy.h"
#include "shill/power_manager_proxy.h"
#include "shill/supplicant_interface_proxy.h"
#include "shill/supplicant_process_proxy.h"
using std::string;
namespace shill {
static base::LazyInstance<ProxyFactory> g_proxy_factory(
base::LINKER_INITIALIZED);
ProxyFactory::ProxyFactory() {}
ProxyFactory::~ProxyFactory() {}
ProxyFactory *ProxyFactory::GetInstance() {
return g_proxy_factory.Pointer();
}
void ProxyFactory::Init() {
CHECK(DBus::default_dispatcher); // Initialized in DBusControl::Init.
CHECK(!connection_.get());
connection_.reset(new DBus::Connection(DBus::Connection::SystemBus()));
}
DBusPropertiesProxyInterface *ProxyFactory::CreateDBusPropertiesProxy(
DBusPropertiesProxyDelegate *delegate,
const string &path,
const string &service) {
return new DBusPropertiesProxy(delegate, connection(), path, service);
}
ModemManagerProxyInterface *ProxyFactory::CreateModemManagerProxy(
ModemManager *manager,
const string &path,
const string &service) {
return new ModemManagerProxy(connection(), manager, path, service);
}
ModemProxyInterface *ProxyFactory::CreateModemProxy(
ModemProxyDelegate *delegate,
const string &path,
const string &service) {
return new ModemProxy(delegate, connection(), path, service);
}
ModemSimpleProxyInterface *ProxyFactory::CreateModemSimpleProxy(
const string &path,
const string &service) {
return new ModemSimpleProxy(connection(), path, service);
}
ModemCDMAProxyInterface *ProxyFactory::CreateModemCDMAProxy(
ModemCDMAProxyDelegate *delegate,
const string &path,
const string &service) {
return new ModemCDMAProxy(delegate, connection(), path, service);
}
ModemGSMCardProxyInterface *ProxyFactory::CreateModemGSMCardProxy(
ModemGSMCardProxyDelegate *delegate,
const string &path,
const string &service) {
return new ModemGSMCardProxy(delegate, connection(), path, service);
}
ModemGSMNetworkProxyInterface *ProxyFactory::CreateModemGSMNetworkProxy(
ModemGSMNetworkProxyDelegate *delegate,
const string &path,
const string &service) {
return new ModemGSMNetworkProxy(delegate, connection(), path, service);
}
PowerManagerProxyInterface *ProxyFactory::CreatePowerManagerProxy(
PowerManagerProxyDelegate *delegate) {
return new PowerManagerProxy(delegate, connection());
}
SupplicantProcessProxyInterface *ProxyFactory::CreateSupplicantProcessProxy(
const char *dbus_path,
const char *dbus_addr) {
return new SupplicantProcessProxy(connection(), dbus_path, dbus_addr);
}
SupplicantInterfaceProxyInterface *ProxyFactory::CreateSupplicantInterfaceProxy(
const WiFiRefPtr &wifi,
const DBus::Path &object_path,
const char *dbus_addr) {
return new SupplicantInterfaceProxy(wifi,
connection(),
object_path,
dbus_addr);
}
DHCPProxyInterface *ProxyFactory::CreateDHCPProxy(const string &service) {
return new DHCPCDProxy(connection(), service);
}
} // namespace shill