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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
/* vim:set et sts=4: */
/* ibus - The Input Bus
* Copyright (C) 2008-2009 Huang Peng <shawn.p.huang@gmail.com>
*
* This library 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 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, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/**
* SECTION: ibusconnection
* @short_description: DBusConnection wrapper.
* @see_also: <ulink url="http://dbus.freedesktop.org/doc/api/html/structDBusConnection.html">DBusConnection</ulink>
*
* An IBusConnection provides DBusConnection wrapper.
* It can be used to connect to either dBus or iBus daemon.
*/
#ifndef __IBUS_CONNECTION_H_
#define __IBUS_CONNECTION_H_
#include <dbus/dbus.h>
#include "ibusmessage.h"
#include "ibuspendingcall.h"
#include "ibusobject.h"
#include "ibuserror.h"
/*
* Type macros.
*/
/* define GOBJECT macros */
#define IBUS_TYPE_CONNECTION \
(ibus_connection_get_type ())
#define IBUS_CONNECTION(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_CONNECTION, IBusConnection))
#define IBUS_CONNECTION_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_CONNECTION, IBusConnectionClass))
#define IBUS_IS_CONNECTION(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_CONNECTION))
#define IBUS_IS_CONNECTION_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_CONNECTION))
#define IBUS_CONNECTION_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_CONNECTION, IBusConnectionClass))
G_BEGIN_DECLS
typedef struct _IBusConnection IBusConnection;
typedef struct _IBusConnectionClass IBusConnectionClass;
typedef gboolean (* IBusIBusMessageFunc)(IBusConnection *connection,
IBusMessage *message);
typedef gboolean (* IBusIBusSignalFunc) (IBusConnection *connection,
IBusMessage *message);
typedef gboolean (* IBusMessageFunc) (IBusConnection *connection,
IBusMessage *message,
gpointer user_data);
typedef void (* IBusConnectionReplyFunc)
(IBusConnection *connection,
IBusMessage *reply,
gpointer user_data);
struct _IBusConnection {
IBusObject parent;
/* instance members */
};
struct _IBusConnectionClass {
IBusObjectClass parent;
/* signals */
gboolean (* ibus_message) (IBusConnection *connection,
IBusMessage *message);
gboolean (* ibus_signal) (IBusConnection *connection,
IBusMessage *message);
void (* ibus_message_sent)
(IBusConnection *connection,
IBusMessage *message);
void (* disconnected) (IBusConnection *connection);
/*< private >*/
/* padding */
gpointer pdummy[4];
};
GType ibus_connection_get_type (void);
IBusConnection *ibus_connection_new (void);
void ibus_connection_set_connection (IBusConnection *connection,
DBusConnection *dbus_connection,
gboolean shared);
IBusConnection *ibus_connection_open (const gchar *address);
IBusConnection *ibus_connection_open_private (const gchar *address);
void ibus_connection_close (IBusConnection *connection);
gboolean ibus_connection_is_connected (IBusConnection *connection);
DBusConnection *ibus_connection_get_connection (IBusConnection *connection);
gboolean ibus_connection_read_write_dispatch(IBusConnection *connection,
gint timeout);
gboolean ibus_connection_send (IBusConnection *connection,
IBusMessage *message);
gboolean ibus_connection_send_signal (IBusConnection *connection,
const gchar *path,
const gchar *interface,
const gchar *name,
GType first_arg_type,
...);
gboolean ibus_connection_send_signal_valist (IBusConnection *connection,
const gchar *path,
const gchar *interface,
const gchar *name,
GType first_arg_type,
va_list args);
gboolean ibus_connection_send_valist (IBusConnection *connection,
gint message_type,
const gchar *path,
const gchar *interface,
const gchar *name,
GType first_arg_type,
va_list args);
gboolean ibus_connection_send_with_reply (IBusConnection *connection,
IBusMessage *message,
IBusPendingCall **pending_return,
gint timeout_milliseconds);
IBusMessage *ibus_connection_send_with_reply_and_block
(IBusConnection *connection,
IBusMessage *message,
gint timeout_milliseconds,
IBusError **error);
gboolean ibus_connection_call (IBusConnection *connection,
const gchar *name,
const gchar *path,
const gchar *interface,
const gchar *member,
IBusError **error,
GType first_arg_type,
...);
void ibus_connection_flush (IBusConnection *connection);
gboolean ibus_connection_register_object_path
(IBusConnection *connection,
const gchar *path,
IBusMessageFunc message_func,
gpointer user_data);
gboolean ibus_connection_unregister_object_path
(IBusConnection *connection,
const gchar *path);
G_END_DECLS
#endif
|