blob: af199257650195dd69913d95f5e9bd19719b5b4f [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"
13#include "shill/manager_dbus_adaptor.h"
14#include "shill/service_dbus_adaptor.h"
Paul Stewart75897df2011-04-27 09:05:53 -070015
16namespace shill {
Chris Masoned7732e42011-05-20 11:08:56 -070017DBusControl::DBusControl() {}
Paul Stewart75897df2011-04-27 09:05:53 -070018
Chris Masoned7732e42011-05-20 11:08:56 -070019DBusControl::~DBusControl() {}
Paul Stewart75897df2011-04-27 09:05:53 -070020
Chris Masone413a3192011-05-09 17:10:05 -070021ManagerAdaptorInterface *DBusControl::CreateManagerAdaptor(Manager *manager) {
Paul Stewart28fbfdf2011-05-31 09:37:38 -070022 connection_->request_name(ManagerDBusAdaptor::kInterfaceName);
Chris Masoned0ceb8c2011-06-02 10:05:39 -070023 return new(std::nothrow) ManagerDBusAdaptor(connection_.get(), manager);
Paul Stewart75897df2011-04-27 09:05:53 -070024}
25
Chris Masone413a3192011-05-09 17:10:05 -070026ServiceAdaptorInterface *DBusControl::CreateServiceAdaptor(Service *service) {
Paul Stewart28fbfdf2011-05-31 09:37:38 -070027 connection_->request_name(ServiceDBusAdaptor::kInterfaceName);
Chris Masoned0ceb8c2011-06-02 10:05:39 -070028 return new(std::nothrow) ServiceDBusAdaptor(connection_.get(), service);
Paul Stewart75897df2011-04-27 09:05:53 -070029}
30
Chris Masone413a3192011-05-09 17:10:05 -070031DeviceAdaptorInterface *DBusControl::CreateDeviceAdaptor(Device *device) {
Paul Stewart28fbfdf2011-05-31 09:37:38 -070032 connection_->request_name(DeviceDBusAdaptor::kInterfaceName);
Chris Masoned0ceb8c2011-06-02 10:05:39 -070033 return new(std::nothrow) DeviceDBusAdaptor(connection_.get(), device);
Paul Stewart75897df2011-04-27 09:05:53 -070034}
35
Darin Petkovd1b715b2011-06-02 21:21:22 -070036void DBusControl::Init() {
37 CHECK(!connection_.get());
38 dispatcher_.reset(new(std::nothrow) DBus::Glib::BusDispatcher());
39 CHECK(dispatcher_.get()) << "Failed to create a dbus-dispatcher";
40 DBus::default_dispatcher = dispatcher_.get();
41 dispatcher_->attach(NULL);
42 connection_.reset(new DBus::Connection(DBus::Connection::SystemBus()));
Chris Masoned7732e42011-05-20 11:08:56 -070043}
Paul Stewart75897df2011-04-27 09:05:53 -070044
45} // namespace shill