blob: f7891869061a3054016bb7eceba38ed1ae009991 [file] [log] [blame]
Darin Petkov633ac6f2011-07-08 13:56:13 -07001// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
Paul Stewart75897df2011-04-27 09:05:53 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Darin Petkova7b89492011-07-27 12:48:17 -07005#include "shill/shill_daemon.h"
Paul Stewart75897df2011-04-27 09:05:53 -07006
Darin Petkova7b89492011-07-27 12:48:17 -07007#include <stdio.h>
8
Paul Stewart75897df2011-04-27 09:05:53 -07009#include <string>
Paul Stewart75897df2011-04-27 09:05:53 -070010
Chris Masoneee929b72011-05-10 10:02:18 -070011#include <base/logging.h>
12
Darin Petkova7b89492011-07-27 12:48:17 -070013#include "shill/dhcp_provider.h"
Paul Stewarta3c56f92011-05-26 07:08:52 -070014#include "shill/rtnl_handler.h"
Paul Stewart75897df2011-04-27 09:05:53 -070015
Paul Stewart75897df2011-04-27 09:05:53 -070016using std::string;
Paul Stewart75897df2011-04-27 09:05:53 -070017
18namespace shill {
19
Paul Stewart75897df2011-04-27 09:05:53 -070020// Daemon: Main for connection manager. Starts main process and holds event
21// loop.
22
Darin Petkova7b89492011-07-27 12:48:17 -070023Daemon::Daemon(Config *config, ControlInterface *control)
24 : config_(config),
25 control_(control),
26 manager_(control_, &dispatcher_, &glib_) { }
Paul Stewart75897df2011-04-27 09:05:53 -070027Daemon::~Daemon() {}
28
mukesh agrawal8f317b62011-07-15 11:53:23 -070029void Daemon::AddDeviceToBlackList(const string &device_name) {
30 manager_.AddDeviceToBlackList(device_name);
31}
32
Paul Stewart0af98bf2011-05-10 17:38:08 -070033void Daemon::Start() {
Darin Petkova7b89492011-07-27 12:48:17 -070034 glib_.TypeInit();
35 proxy_factory_.Init();
36 ProxyFactory::set_factory(&proxy_factory_);
Darin Petkov633ac6f2011-07-08 13:56:13 -070037 RTNLHandler::GetInstance()->Start(&dispatcher_, &sockets_);
Darin Petkova7b89492011-07-27 12:48:17 -070038 DHCPProvider::GetInstance()->Init(control_, &dispatcher_, &glib_);
Paul Stewart0af98bf2011-05-10 17:38:08 -070039 manager_.Start();
40}
Paul Stewart75897df2011-04-27 09:05:53 -070041
42void Daemon::Run() {
Paul Stewart0af98bf2011-05-10 17:38:08 -070043 Start();
Chris Masoneb07006b2011-05-14 16:10:04 -070044 VLOG(1) << "Running main loop.";
Chris Masonec5b392e2011-05-14 16:31:01 -070045 dispatcher_.DispatchForever();
Paul Stewart75897df2011-04-27 09:05:53 -070046}
47
48
49} // namespace shill