index.html
Main Page
|
modules.html
Modules
|
namespaces.html
Namespace List
|
hierarchy.html
Class Hierarchy
|
annotated.html
Data Structures
|
dirs.html
Directories
|
files.html
File List
|
namespacemembers.html
Namespace Members
|
functions.html
Data Fields
|
pages.html
Related Pages
dir_000005.html
glib
&raquo
dir_000006.html
examples
example-client.c
00001
#include <dbus/dbus-glib.h>
00002
#include <stdio.h>
00003
#include <stdlib.h>
00004
00005
static
void
lose (
const
char
*fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2);
00006 static
void
lose_gerror (const
char
*prefix, GError *error) G_GNUC_NORETURN;
00007
00008 static
void
00009 lose (const
char
*str, ...)
00010 {
00011   va_list args;
00012
00013   va_start (args, str);
00014
00015   vfprintf (stderr, str, args);
00016   fputc (
'\n'
, stderr);
00017
00018   va_end (args);
00019
00020   exit (1);
00021 }
00022
00023
static
void
00024 lose_gerror (
const
char
*prefix, GError *error)
00025 {
00026   lose (
"%s: %s"
, prefix, error->message);
00027 }
00028
00029
static
void
00030 print_hash_value (gpointer key, gpointer val, gpointer data)
00031 {
00032   printf (
"%s -> %s\n"
, (
char
*) key, (
char
*) val);
00033 }
00034
00035
int
00036 main (
int
argc,
char
**argv)
00037 {
00038   DBusGConnection *bus;
00039
struct__DBusGProxy.html
DBusGProxy
*remote_object;
00040
struct__DBusGProxy.html
DBusGProxy
*remote_object_introspectable;
00041   GError *error =
group__DBusMacros.html#ga4
NULL
;
00042
char
**reply_list;
00043
char
**reply_ptr;
00044   GValueArray *hello_reply_struct;
00045   GHashTable *hello_reply_dict;
00046
char
*introspect_data;
00047   guint i;
00048
00049   g_type_init ();
00050
00051   {
00052     GLogLevelFlags fatal_mask;
00053
00054     fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
00055     fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL;
00056     g_log_set_always_fatal (fatal_mask);
00057   }
00058
00059   bus =
group__DBusGLib.html#ga16
dbus_g_bus_get
(DBUS_BUS_SESSION, &error);
00060
if
(!bus)
00061     lose_gerror (
"Couldn't connect to session bus"
, error);
00062
00063   remote_object =
group__DBusGLib.html#ga31
dbus_g_proxy_new_for_name
(bus,
00064
"org.designfu.SampleService"
,
00065
"/SomeObject"
,
00066
"org.designfu.SampleInterface"
);
00067
00068
if
(!
group__DBusGLib.html#ga42
dbus_g_proxy_call
(remote_object,
"HelloWorld"
, &error,
00069                           G_TYPE_STRING,
"Hello from example-client.c!"
, G_TYPE_INVALID,
00070                           G_TYPE_STRV, &reply_list, G_TYPE_INVALID))
00071     lose_gerror (
"Failed to complete HelloWorld"
, error);
00072
00073
00074
if
(!
group__DBusGLib.html#ga42
dbus_g_proxy_call
(remote_object,
"GetTuple"
, &error,
00075                           G_TYPE_INVALID,
00076                           G_TYPE_VALUE_ARRAY, &hello_reply_struct, G_TYPE_INVALID))
00077     lose_gerror (
"Failed to complete GetTuple"
, error);
00078
00079
if
(!
group__DBusGLib.html#ga42
dbus_g_proxy_call
(remote_object,
"GetDict"
, &error,
00080                           G_TYPE_INVALID,
00081                           DBUS_TYPE_G_STRING_STRING_HASHTABLE, &hello_reply_dict, G_TYPE_INVALID))
00082     lose_gerror (
"Failed to complete GetDict"
, error);
00083
00084   printf (
"reply_list: "
);
00085
for
(reply_ptr = reply_list; *reply_ptr; reply_ptr++)
00086     printf (
"\"%s\" "
, *reply_ptr);
00087   printf (
"\n"
);
00088   g_strfreev (reply_list);
00089
00090
for
(i = 0; i < hello_reply_struct->n_values; i++)
00091     {
00092       GValue strval = { 0, };
00093
00094       g_value_init (&strval, G_TYPE_STRING);
00095
if
(!g_value_transform (g_value_array_get_nth (hello_reply_struct, i), &strval))
00096         g_value_set_static_string (&strval,
"(couldn't transform to string)"
);
00097       g_print (
"%s: %s\n"
, g_type_name (G_VALUE_TYPE (g_value_array_get_nth (hello_reply_struct, i))),
00098                g_value_get_string (&strval));
00099     }
00100   g_value_array_free (hello_reply_struct);
00101   printf (
"\n"
);
00102
00103   g_hash_table_foreach (hello_reply_dict, print_hash_value,
group__DBusMacros.html#ga4
NULL
);
00104   g_hash_table_destroy (hello_reply_dict);
00105
00106   remote_object_introspectable =
group__DBusGLib.html#ga31
dbus_g_proxy_new_for_name
(bus,
00107
"org.designfu.SampleService"
,
00108
"/SomeObject"
,
00109
"org.freedesktop.DBus.Introspectable"
);
00110
if
(!
group__DBusGLib.html#ga42
dbus_g_proxy_call
(remote_object_introspectable,
"Introspect"
, &error,
00111                           G_TYPE_INVALID,
00112                           G_TYPE_STRING, &introspect_data, G_TYPE_INVALID))
00113     lose_gerror (
"Failed to complete Introspect"
, error);
00114   printf (
"%s"
, introspect_data);
00115   g_free (introspect_data);
00116
00117   g_object_unref (G_OBJECT (remote_object_introspectable));
00118   g_object_unref (G_OBJECT (remote_object));
00119
00120   exit(0);
00121 }
Generated on Tue Sep 13 01:28:08 2005 for D-BUS by
http://www.doxygen.org/index.html
doxygen
1.4.4
