Free memory with dbus_free instead of free. Account for NULL signatures.
[dbus-cxx-async.git] / include / dbus-c++ / glib-integration.h
blob68512c241ff1137bee79981d82ae98d39509e6db
1 /*
3 * D-Bus++ - C++ bindings for D-Bus
5 * Copyright (C) 2005-2009 Paolo Durante <shackan@gmail.com>
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 #ifndef __DBUSXX_GLIB_INTEGRATION_H
26 #define __DBUSXX_GLIB_INTEGRATION_H
28 #include <glib.h>
30 #include "api.h"
31 #include "dispatcher.h"
33 namespace DBus {
35 namespace Glib {
37 class BusDispatcher;
39 class DBUSXXAPI BusTimeout : public Timeout
41 private:
43 BusTimeout(Timeout::Internal *, GMainContext *, int);
45 ~BusTimeout();
47 void toggle();
49 static gboolean timeout_handler(gpointer);
51 void _enable();
53 void _disable();
55 private:
57 GMainContext *_ctx;
58 int _priority;
59 GSource *_source;
61 friend class BusDispatcher;
64 class DBUSXXAPI BusWatch : public Watch
66 private:
68 BusWatch(Watch::Internal *, GMainContext *, int);
70 ~BusWatch();
72 void toggle();
74 static gboolean watch_handler(gpointer);
76 void _enable();
78 void _disable();
80 private:
82 GMainContext *_ctx;
83 int _priority;
84 GSource *_source;
86 friend class BusDispatcher;
89 class DBUSXXAPI BusDispatcher : public Dispatcher
91 public:
93 BusDispatcher();
94 ~BusDispatcher();
96 void attach(GMainContext *);
98 void enter() {}
100 void leave() {}
102 Timeout *add_timeout(Timeout::Internal *);
104 void rem_timeout(Timeout *);
106 Watch *add_watch(Watch::Internal *);
108 void rem_watch(Watch *);
110 void set_priority(int priority);
112 private:
114 GMainContext *_ctx;
115 int _priority;
116 GSource *_source;
119 } /* namespace Glib */
121 } /* namespace DBus */
123 #endif//__DBUSXX_GLIB_INTEGRATION_H