blob: 8452c8f470f1ffa371b5bbb50e076202015dab5f [file] [log] [blame]
Paul Stewart75897df2011-04-27 09:05:53 -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
Paul Stewart75897df2011-04-27 09:05:53 -07005#include <string>
6
Chris Masoned7732e42011-05-20 11:08:56 -07007#include <base/logging.h>
8#include <dbus-c++/glib-integration.h>
9#include <dbus-c++/util.h>
10
Paul Stewart75897df2011-04-27 09:05:53 -070011#include "shill/dbus_control.h"
Chris Masoned7732e42011-05-20 11:08:56 -070012#include "shill/device_dbus_adaptor.h"
Chris Masonec6c6c132011-06-30 11:29:52 -070013#include "shill/ipconfig_dbus_adaptor.h"
Chris Masoned7732e42011-05-20 11:08:56 -070014#include "shill/manager_dbus_adaptor.h"
Chris Masone52cd19b2011-06-29 17:23:04 -070015#include "shill/profile_dbus_adaptor.h"
Chris Masoned7732e42011-05-20 11:08:56 -070016#include "shill/service_dbus_adaptor.h"
Paul Stewart75897df2011-04-27 09:05:53 -070017
18namespace shill {
Chris Masoned7732e42011-05-20 11:08:56 -070019DBusControl::DBusControl() {}
Paul Stewart75897df2011-04-27 09:05:53 -070020
Chris Masoned7732e42011-05-20 11:08:56 -070021DBusControl::~DBusControl() {}
Paul Stewart75897df2011-04-27 09:05:53 -070022
Chris Masone413a3192011-05-09 17:10:05 -070023DeviceAdaptorInterface *DBusControl::CreateDeviceAdaptor(Device *device) {
Paul Stewart28fbfdf2011-05-31 09:37:38 -070024 connection_->request_name(DeviceDBusAdaptor::kInterfaceName);
Chris Masoned0ceb8c2011-06-02 10:05:39 -070025 return new(std::nothrow) DeviceDBusAdaptor(connection_.get(), device);
Paul Stewart75897df2011-04-27 09:05:53 -070026}
27
Chris Masonec6c6c132011-06-30 11:29:52 -070028IPConfigAdaptorInterface *DBusControl::CreateIPConfigAdaptor(IPConfig *config) {
29 connection_->request_name(IPConfigDBusAdaptor::kInterfaceName);
30 return new(std::nothrow) IPConfigDBusAdaptor(connection_.get(), config);
31}
32
33ManagerAdaptorInterface *DBusControl::CreateManagerAdaptor(Manager *manager) {
34 connection_->request_name(ManagerDBusAdaptor::kInterfaceName);
35 return new(std::nothrow) ManagerDBusAdaptor(connection_.get(), manager);
36}
37
Chris Masone52cd19b2011-06-29 17:23:04 -070038ProfileAdaptorInterface *DBusControl::CreateProfileAdaptor(Profile *profile) {
39 connection_->request_name(ProfileDBusAdaptor::kInterfaceName);
40 return new(std::nothrow) ProfileDBusAdaptor(connection_.get(), profile);
41}
42
Chris Masonec6c6c132011-06-30 11:29:52 -070043ServiceAdaptorInterface *DBusControl::CreateServiceAdaptor(Service *service) {
44 connection_->request_name(ServiceDBusAdaptor::kInterfaceName);
45 return new(std::nothrow) ServiceDBusAdaptor(connection_.get(), service);
46}
47
Darin Petkovd1b715b2011-06-02 21:21:22 -070048void DBusControl::Init() {
49 CHECK(!connection_.get());
50 dispatcher_.reset(new(std::nothrow) DBus::Glib::BusDispatcher());
51 CHECK(dispatcher_.get()) << "Failed to create a dbus-dispatcher";
52 DBus::default_dispatcher = dispatcher_.get();
53 dispatcher_->attach(NULL);
54 connection_.reset(new DBus::Connection(DBus::Connection::SystemBus()));
Chris Masoned7732e42011-05-20 11:08:56 -070055}
Paul Stewart75897df2011-04-27 09:05:53 -070056
57} // namespace shill