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-service.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
typedef
struct
structSomeObject.html
SomeObject
SomeObject;
00030
typedef
struct
structSomeObjectClass.html
SomeObjectClass
SomeObjectClass;
00031
00032 GType some_object_get_type (
void
);
00033
structSomeObject.html
00034
struct
SomeObject
00035 {
structSomeObject.html#o0
00036
GObject
structSomeObject.html#o0
parent
;
00037 };
00038
structSomeObjectClass.html
00039
struct
SomeObjectClass
00040 {
structSomeObjectClass.html#o0
00041
GObjectClass
structSomeObjectClass.html#o0
parent
;
00042 };
00043
00044
#define SOME_TYPE_OBJECT              (some_object_get_type ())
00045
#define SOME_OBJECT(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), SOME_TYPE_OBJECT, SomeObject))
00046
#define SOME_OBJECT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), SOME_TYPE_OBJECT, SomeObjectClass))
00047
#define SOME_IS_OBJECT(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOME_TYPE_OBJECT))
00048
#define SOME_IS_OBJECT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), SOME_TYPE_OBJECT))
00049
#define SOME_OBJECT_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), SOME_TYPE_OBJECT, SomeObjectClass))
00050
00051 G_DEFINE_TYPE(SomeObject, some_object, G_TYPE_OBJECT)
00052
00053 gboolean some_object_hello_world (SomeObject *obj, const
char
*hello_message,
char
***ret, GError **error);
00054 gboolean some_object_get_tuple (SomeObject *obj, GValueArray **ret, GError **error);
00055 gboolean some_object_get_dict (SomeObject *obj, GHashTable **ret, GError **error);
00056
00057 #include "example-service-glue.h"
00058
00059 static
void
00060 some_object_init (SomeObject *obj)
00061 {
00062 }
00063
00064
static
void
00065 some_object_class_init (SomeObjectClass *klass)
00066 {
00067 }
00068
00069 gboolean
00070 some_object_hello_world (SomeObject *obj,
const
char
*hello_message,
char
***ret, GError **error)
00071 {
00072   printf (
"%s\n"
, hello_message);
00073   *ret = g_new (
char
*, 3);
00074   (*ret)[0] = g_strdup (
"Hello"
);
00075   (*ret)[1] = g_strdup (
" from example-service.c"
);
00076   (*ret)[2] =
group__DBusMacros.html#ga4
NULL
;
00077
00078
return
group__DBusMacros.html#ga2
TRUE
;
00079 }
00080
00081 gboolean
00082 some_object_get_tuple (SomeObject *obj, GValueArray **ret, GError **error)
00083 {
00084   *ret = g_value_array_new (6);
00085   g_value_array_prepend (*ret,
group__DBusMacros.html#ga4
NULL
);
00086   g_value_init (g_value_array_get_nth (*ret, 0), G_TYPE_STRING);
00087   g_value_set_string (g_value_array_get_nth (*ret, 0),
"hello"
);
00088   g_value_array_prepend (*ret,
group__DBusMacros.html#ga4
NULL
);
00089   g_value_init (g_value_array_get_nth (*ret, 0), G_TYPE_UINT);
00090   g_value_set_uint (g_value_array_get_nth (*ret, 0), 42);
00091
00092
return
group__DBusMacros.html#ga2
TRUE
;
00093 }
00094
00095 gboolean
00096 some_object_get_dict (SomeObject *obj, GHashTable **ret, GError **error)
00097 {
00098   *ret = g_hash_table_new (g_str_hash, g_str_equal);
00099   g_hash_table_insert (*ret,
"first"
,
"Hello Dict"
);
00100   g_hash_table_insert (*ret,
"second"
,
" from example-service.c"
);
00101
return
group__DBusMacros.html#ga2
TRUE
;
00102 }
00103
00104
int
00105 main (
int
argc,
char
**argv)
00106 {
00107   DBusGConnection *bus;
00108
struct__DBusGProxy.html
DBusGProxy
*bus_proxy;
00109   GError *error =
group__DBusMacros.html#ga4
NULL
;
00110   SomeObject *obj;
00111   GMainLoop *mainloop;
00112   guint request_name_result;
00113
00114   g_type_init ();
00115
00116   {
00117     GLogLevelFlags fatal_mask;
00118
00119     fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
00120     fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL;
00121     g_log_set_always_fatal (fatal_mask);
00122   }
00123
00124
group__DBusGLib.html#ga17
dbus_g_object_type_install_info
(SOME_TYPE_OBJECT, &dbus_glib_some_object_object_info);
00125
00126   mainloop = g_main_loop_new (
group__DBusMacros.html#ga4
NULL
,
group__DBusMacros.html#ga3
FALSE
);
00127
00128   bus =
group__DBusGLib.html#ga16
dbus_g_bus_get
(DBUS_BUS_SESSION, &error);
00129
if
(!bus)
00130     lose_gerror (
"Couldn't connect to session bus"
, error);
00131
00132   bus_proxy =
group__DBusGLib.html#ga31
dbus_g_proxy_new_for_name
(bus,
"org.freedesktop.DBus"
,
00133
"/org/freedesktop/DBus"
,
00134
"org.freedesktop.DBus"
);
00135
00136
if
(!
group__DBusGLib.html#ga42
dbus_g_proxy_call
(bus_proxy,
"RequestName"
, &error,
00137                           G_TYPE_STRING,
"org.designfu.SampleService"
,
00138                           G_TYPE_UINT, DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT,
00139                           G_TYPE_INVALID,
00140                           G_TYPE_UINT, &request_name_result,
00141                           G_TYPE_INVALID))
00142     lose_gerror (
"Failed to acquire org.designfu.SampleService"
, error);
00143
00144   obj = g_object_new (SOME_TYPE_OBJECT,
group__DBusMacros.html#ga4
NULL
);
00145
00146
group__DBusGLib.html#ga20
dbus_g_connection_register_g_object
(bus,
"/SomeObject"
, G_OBJECT (obj));
00147
00148   printf (
"service running\n"
);
00149
00150   g_main_loop_run (mainloop);
00151
00152   exit (0);
00153 }
Generated on Tue Sep 13 01:28:08 2005 for D-BUS by
http://www.doxygen.org/index.html
doxygen
1.4.4
