dbusmanager.cpp 2.69 KB
Newer Older
1
/*
2
 *  Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010, 2011 Savoir-Faire Linux Inc.
3
 *  Author: Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>
4
 *
5
6
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
7
 *  the Free Software Foundation; either version 3 of the License, or
8
 *  (at your option) any later version.
9
 *
10
11
12
13
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
14
 *
15
16
17
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18
19
20
21
22
23
24
25
26
27
28
 *
 *  Additional permission under GNU GPL version 3 section 7:
 *
 *  If you modify this program, or any covered work, by linking or
 *  combining it with the OpenSSL project's OpenSSL library (or a
 *  modified version of that library), containing parts covered by the
 *  terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
 *  grants you additional permission to convey the resulting work.
 *  Corresponding Source for a non-source form of such a combination
 *  shall include the source code for the parts of OpenSSL used as well
 *  as that of the covered work.
29
 */
30

31
#include <cstdlib>
32
#include "dbusmanager.h"
33
#include "global.h"
Pierre-Luc Beaudoin's avatar
Pierre-Luc Beaudoin committed
34
#include "manager.h"
35
#include "instance.h"
Pierre-Luc Beaudoin's avatar
Pierre-Luc Beaudoin committed
36

37
38
#include "callmanager.h"
#include "configurationmanager.h"
39
#include "networkmanager.h"
40

41
DBusManager::DBusManager()
Emmanuel Milou's avatar
[#2402]    
Emmanuel Milou committed
42
{
43
    try {
44
        DBus::_init_threading();
45
        DBus::default_dispatcher = &dispatcher_;
46

47
        DBus::Connection sessionConnection = DBus::Connection::SessionBus();
48
        sessionConnection.request_name("org.sflphone.SFLphone");
Pierre-Luc Beaudoin's avatar
Save    
Pierre-Luc Beaudoin committed
49

50
51
52
        callManager_ = new CallManager(sessionConnection);
        configurationManager_ = new ConfigurationManager(sessionConnection);
        instanceManager_ = new Instance(sessionConnection);
Pierre-Luc Beaudoin's avatar
Pierre-Luc Beaudoin committed
53

54
#ifdef USE_NETWORKMANAGER
55
        DBus::Connection systemConnection = DBus::Connection::SystemBus();
56
        networkManager_ = new NetworkManager(systemConnection, "/org/freedesktop/NetworkManager", "");
57
#endif
58

59
    } catch (const DBus::Error &err) {
60
        _error("%s: %s, exiting\n", err.name(), err.what());
61
        ::exit(EXIT_FAILURE);
62
    }
Pierre-Luc Beaudoin's avatar
Pierre-Luc Beaudoin committed
63
}
64

65
DBusManager::~DBusManager()
Emmanuel Milou's avatar
[#2402]    
Emmanuel Milou committed
66
{
67
#ifdef USE_NETWORKMANAGER
68
    delete networkManager_;
69
#endif
70
71
72
    delete instanceManager_;
    delete configurationManager_;
    delete callManager_;
73
74
75
76
}

void DBusManager::exec()
{
77
    dispatcher_.enter();
78
}
79

80
81
82
void
DBusManager::exit()
{
83
    dispatcher_.leave();
Pierre-Luc Beaudoin's avatar
Pierre-Luc Beaudoin committed
84
}