File: bolt-exported.h

package info (click to toggle)
bolt 0.7-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,396 kB
  • sloc: ansic: 21,784; python: 1,574; xml: 426; sh: 25; makefile: 13
file content (122 lines) | stat: -rw-r--r-- 5,064 bytes parent folder | download
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
/*
 * Copyright © 2018 Red Hat, Inc
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
 *
 * Authors:
 *       Christian J. Kellner <christian@kellner.me>
 */

#pragma once

#include <gio/gio.h>

G_BEGIN_DECLS

#define BOLT_TYPE_EXPORTED bolt_exported_get_type ()

G_DECLARE_DERIVABLE_TYPE (BoltExported, bolt_exported, BOLT, EXPORTED, GObject);

typedef struct _BoltExportedClassPrivate BoltExportedClassPrivate;

struct _BoltExportedClass
{
  GObjectClass parent_class;

  /*< private >*/
  BoltExportedClassPrivate *priv;

  /*< public >*/

  /* Signals */
  gboolean (*authorize_method) (BoltExported          *exported,
                                GDBusMethodInvocation *invocation,
                                GError               **error);

  gboolean (*authorize_property) (BoltExported          *exported,
                                  const char            *name,
                                  gboolean               setting,
                                  GDBusMethodInvocation *invocation,
                                  GError               **error);

  /* for the future */
  gpointer padding[10];
};

typedef GVariant *  (* BoltExportedMethodHandler) (BoltExported          *obj,
                                                   GVariant              *params,
                                                   GDBusMethodInvocation *inv,
                                                   GError               **error);

typedef gboolean (* BoltExportedSetter) (BoltExported *obj,
                                         const char   *name,
                                         const GValue *value,
                                         GError      **error);

/* class methods  */
void     bolt_exported_class_set_interface_name (BoltExportedClass *klass,
                                                 const char        *name);

void     bolt_exported_class_set_interface_info_from_xml (BoltExportedClass *klass,
                                                          const char        *xml);

void     bolt_exported_class_set_interface_info (BoltExportedClass *klass,
                                                 const char        *iface_name,
                                                 const char        *resource_name);

void     bolt_exported_class_set_object_path (BoltExportedClass *klass,
                                              const char        *base_path);

void     bolt_exported_class_export_property (BoltExportedClass *klass,
                                              GParamSpec        *spec);

void     bolt_exported_class_export_properties (BoltExportedClass *klass,
                                                guint              start,
                                                guint              n_pspecs,
                                                GParamSpec       **specs);

void     bolt_exported_class_property_setter (BoltExportedClass *klass,
                                              GParamSpec        *spec,
                                              BoltExportedSetter setter);

void     bolt_exported_class_export_method (BoltExportedClass        *klass,
                                            const char               *name,
                                            BoltExportedMethodHandler handler);

/* instance methods */
gboolean           bolt_exported_export (BoltExported    *exported,
                                         GDBusConnection *connection,
                                         const char      *object_path,
                                         GError         **error);

gboolean           bolt_exported_unexport (BoltExported *exported);

gboolean           bolt_exported_is_exported (BoltExported *exported);

GDBusConnection *  bolt_exported_get_connection (BoltExported *exported);

const char *       bolt_exported_get_object_path (BoltExported *exported);

gboolean           bolt_exported_emit_signal (BoltExported *exported,
                                              const char   *name,
                                              GVariant     *parameters,
                                              GError      **error);

void               bolt_exported_flush (BoltExported *exported);

/* helper methods */
GParamSpec *       bolt_param_spec_override (GObjectClass *object_class,
                                             const char   *name);

G_END_DECLS