summaryrefslogtreecommitdiff
path: root/src/nm-dbus-manager.h
blob: cc7f3210fd60af32f6dab3bbf35ce6737c6d1169 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* NetworkManager -- Network link manager
 *
 * 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
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * 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.
 *
 * 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.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Copyright (C) 2006 - 2008 Red Hat, Inc.
 * Copyright (C) 2006 - 2008 Novell, Inc.
 */

#ifndef __NM_DBUS_MANAGER_H__
#define __NM_DBUS_MANAGER_H__

#include <config.h>
#include <glib-object.h>
#include <dbus/dbus.h>
#include <dbus/dbus-glib.h>

#include "nm-types.h"

G_BEGIN_DECLS

typedef gboolean (* NMDBusSignalHandlerFunc) (DBusConnection * connection,
                                              DBusMessage *    message,
                                              gpointer         user_data);

#define NM_TYPE_DBUS_MANAGER (nm_dbus_manager_get_type ())
#define NM_DBUS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), NM_TYPE_DBUS_MANAGER, NMDBusManager))
#define NM_DBUS_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), NM_TYPE_DBUS_MANAGER, NMDBusManagerClass))
#define NM_IS_DBUS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), NM_TYPE_DBUS_MANAGER))
#define NM_IS_DBUS_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), NM_TYPE_DBUS_MANAGER))
#define NM_DBUS_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NM_TYPE_DBUS_MANAGER, NMDBusManagerClass)) 

#define NM_DBUS_MANAGER_DBUS_CONNECTION_CHANGED          "dbus-connection-changed"
#define NM_DBUS_MANAGER_NAME_OWNER_CHANGED               "name-owner-changed"
#define NM_DBUS_MANAGER_PRIVATE_CONNECTION_NEW           "private-connection-new"
#define NM_DBUS_MANAGER_PRIVATE_CONNECTION_DISCONNECTED  "private-connection-disconnected"

struct _NMDBusManager {
	GObject parent;
};

typedef struct {
	GObjectClass parent;

	/* Signals */
	void (*dbus_connection_changed) (NMDBusManager *mgr,
	                                 DBusConnection *connection);

	void (*name_owner_changed)      (NMDBusManager *mgr,
	                                 const char *name,
	                                 const char *old_owner,
	                                 const char *new_owner);

	void (*private_connection_new) (NMDBusManager *mgr,
	                                DBusGConnection *connection);

	void (*private_connection_disconnected) (NMDBusManager *mgr,
	                                         DBusGConnection *connection);
} NMDBusManagerClass;

GType nm_dbus_manager_get_type (void);

NMDBusManager * nm_dbus_manager_get       (void);

char * nm_dbus_manager_get_name_owner     (NMDBusManager *self,
                                           const char *name,
                                           GError **error);

gboolean nm_dbus_manager_start_service    (NMDBusManager *self);

gboolean nm_dbus_manager_name_has_owner   (NMDBusManager *self,
                                           const char *name);

DBusConnection * nm_dbus_manager_get_dbus_connection (NMDBusManager *self);
DBusGConnection * nm_dbus_manager_get_connection (NMDBusManager *self);

gboolean nm_dbus_manager_get_caller_info (NMDBusManager *self,
                                          DBusGMethodInvocation *context,
                                          char **out_sender,
                                          gulong *out_uid,
                                          gulong *out_pid);

gboolean nm_dbus_manager_get_unix_user (NMDBusManager *self,
                                        const char *sender,
                                        gulong *out_uid);

gboolean nm_dbus_manager_get_caller_info_from_message (NMDBusManager *self,
                                                       DBusConnection *connection,
                                                       DBusMessage *message,
                                                       char **out_sender,
                                                       gulong *out_uid,
                                                       gulong *out_pid);

void nm_dbus_manager_register_exported_type (NMDBusManager         *self,
                                             GType                  object_type,
                                             const DBusGObjectInfo *info);

void nm_dbus_manager_register_object (NMDBusManager *self,
                                      const char *path,
                                      gpointer object);

void nm_dbus_manager_unregister_object (NMDBusManager *self, gpointer object);

void nm_dbus_manager_private_server_register (NMDBusManager *self,
                                              const char *path,
                                              const char *tag);

DBusGProxy *nm_dbus_manager_new_proxy (NMDBusManager *self,
                                       DBusGMethodInvocation *context,
                                       const char *name,
                                       const char *path,
                                       const char *iface);

#if !HAVE_DBUS_GLIB_GMI_GET_CONNECTION
DBusGConnection *dbus_g_method_invocation_get_g_connection (DBusGMethodInvocation *context);
#endif

G_END_DECLS

#endif /* __NM_DBUS_MANAGER_H__ */