1/* GDBus - GLib D-Bus Library
2 *
3 * Copyright (C) 2008-2010 Red Hat, Inc.
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General
18 * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
19 *
20 * Author: David Zeuthen <davidz@redhat.com>
21 */
22
23#ifndef __G_DBUS_INTERFACE_SKELETON_H__
24#define __G_DBUS_INTERFACE_SKELETON_H__
25
26#include <gio/gdbusconnection.h>
27#include <gio/giotypes.h>
28
29G_BEGIN_DECLS
30
31#define G_TYPE_DBUS_INTERFACE_SKELETON (g_dbus_interface_skeleton_get_type ())
32#define G_DBUS_INTERFACE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_INTERFACE_SKELETON, GDBusInterfaceSkeleton))
33#define G_DBUS_INTERFACE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_INTERFACE_SKELETON, GDBusInterfaceSkeletonClass))
34#define G_DBUS_INTERFACE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_INTERFACE_SKELETON, GDBusInterfaceSkeletonClass))
35#define G_IS_DBUS_INTERFACE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_INTERFACE_SKELETON))
36#define G_IS_DBUS_INTERFACE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_INTERFACE_SKELETON))
37
38typedef struct _GDBusInterfaceSkeletonClass GDBusInterfaceSkeletonClass;
39typedef struct _GDBusInterfaceSkeletonPrivate GDBusInterfaceSkeletonPrivate;
40
41struct _GDBusInterfaceSkeleton
42{
43 /*< private >*/
44 GObject parent_instance;
45 GDBusInterfaceSkeletonPrivate *priv;
46};
47
48/**
49 * GDBusInterfaceSkeletonClass:
50 * @parent_class: The parent class.
51 * @get_info: Returns a #GDBusInterfaceInfo. See g_dbus_interface_skeleton_get_info() for details.
52 * @get_vtable: Returns a #GDBusInterfaceVTable. See g_dbus_interface_skeleton_get_vtable() for details.
53 * @get_properties: Returns a #GVariant with all properties. See g_dbus_interface_skeleton_get_properties().
54 * @flush: Emits outstanding changes, if any. See g_dbus_interface_skeleton_flush().
55 * @method_dispatch: Dispatches a method invocation. (Since: 2.88)
56 * @g_authorize_method: Signal class handler for the #GDBusInterfaceSkeleton::g-authorize-method signal.
57 *
58 * Class structure for #GDBusInterfaceSkeleton.
59 *
60 * Since: 2.30
61 */
62struct _GDBusInterfaceSkeletonClass
63{
64 GObjectClass parent_class;
65
66 /* Virtual Functions */
67 GDBusInterfaceInfo *(*get_info) (GDBusInterfaceSkeleton *interface_);
68 GDBusInterfaceVTable *(*get_vtable) (GDBusInterfaceSkeleton *interface_);
69 GVariant *(*get_properties) (GDBusInterfaceSkeleton *interface_);
70 void (*flush) (GDBusInterfaceSkeleton *interface_);
71 void (*method_dispatch) (GDBusInterfaceSkeleton *interface_,
72 GDBusInterfaceMethodCallFunc method_call_func,
73 GDBusMethodInvocation *invocation,
74 GDBusInterfaceSkeletonFlags flags,
75 GDBusObject *object);
76
77 /*< private >*/
78 gpointer vfunc_padding[7];
79 /*< public >*/
80
81 /* Signals */
82 gboolean (*g_authorize_method) (GDBusInterfaceSkeleton *interface_,
83 GDBusMethodInvocation *invocation);
84
85 /*< private >*/
86 gpointer signal_padding[8];
87};
88
89GIO_AVAILABLE_IN_ALL
90GType g_dbus_interface_skeleton_get_type (void) G_GNUC_CONST;
91GIO_AVAILABLE_IN_ALL
92GDBusInterfaceSkeletonFlags g_dbus_interface_skeleton_get_flags (GDBusInterfaceSkeleton *interface_);
93GIO_AVAILABLE_IN_ALL
94void g_dbus_interface_skeleton_set_flags (GDBusInterfaceSkeleton *interface_,
95 GDBusInterfaceSkeletonFlags flags);
96GIO_AVAILABLE_IN_ALL
97GDBusInterfaceInfo *g_dbus_interface_skeleton_get_info (GDBusInterfaceSkeleton *interface_);
98GIO_AVAILABLE_IN_ALL
99GDBusInterfaceVTable *g_dbus_interface_skeleton_get_vtable (GDBusInterfaceSkeleton *interface_);
100GIO_AVAILABLE_IN_ALL
101GVariant *g_dbus_interface_skeleton_get_properties (GDBusInterfaceSkeleton *interface_);
102GIO_AVAILABLE_IN_ALL
103void g_dbus_interface_skeleton_flush (GDBusInterfaceSkeleton *interface_);
104
105GIO_AVAILABLE_IN_ALL
106gboolean g_dbus_interface_skeleton_export (GDBusInterfaceSkeleton *interface_,
107 GDBusConnection *connection,
108 const gchar *object_path,
109 GError **error);
110GIO_AVAILABLE_IN_ALL
111void g_dbus_interface_skeleton_unexport (GDBusInterfaceSkeleton *interface_);
112GIO_AVAILABLE_IN_ALL
113void g_dbus_interface_skeleton_unexport_from_connection (GDBusInterfaceSkeleton *interface_,
114 GDBusConnection *connection);
115
116GIO_AVAILABLE_IN_ALL
117GDBusConnection *g_dbus_interface_skeleton_get_connection (GDBusInterfaceSkeleton *interface_);
118GIO_AVAILABLE_IN_ALL
119GList *g_dbus_interface_skeleton_get_connections (GDBusInterfaceSkeleton *interface_);
120GIO_AVAILABLE_IN_ALL
121gboolean g_dbus_interface_skeleton_has_connection (GDBusInterfaceSkeleton *interface_,
122 GDBusConnection *connection);
123GIO_AVAILABLE_IN_ALL
124const gchar *g_dbus_interface_skeleton_get_object_path (GDBusInterfaceSkeleton *interface_);
125
126G_END_DECLS
127
128#endif /* __G_DBUS_INTERFACE_SKELETON_H */
129