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-signal-emitter.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
structTestObject.html
TestObject
TestObject;
00030
typedef
struct
structTestObjectClass.html
TestObjectClass
TestObjectClass;
00031
00032 GType test_object_get_type (
void
);
00033
structTestObject.html
00034
struct
TestObject
00035 {
structTestObject.html#o0
00036
GObject
structTestObject.html#o0
parent
;
00037 };
00038
structTestObjectClass.html
00039
struct
TestObjectClass
00040 {
structTestObjectClass.html#o0
00041
GObjectClass
structTestObjectClass.html#o0
parent
;
00042 };
00043
00044
enum
00045 {
00046   HELLO_SIGNAL,
00047   LAST_SIGNAL
00048 };
00049
00050
static
guint signals[LAST_SIGNAL] = { 0 };
00051
00052
#define TEST_TYPE_OBJECT              (test_object_get_type ())
00053
#define TEST_OBJECT(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), TEST_TYPE_OBJECT, TestObject))
00054
#define TEST_OBJECT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
00055
#define TEST_IS_OBJECT(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), TEST_TYPE_OBJECT))
00056
#define TEST_IS_OBJECT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
00057
#define TEST_OBJECT_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
00058
00059 G_DEFINE_TYPE(TestObject, test_object, G_TYPE_OBJECT)
00060
00061 gboolean test_object_emit_hello_signal (TestObject *obj, GError **error);
00062
00063 #include "example-signal-emitter-glue.h"
00064
00065 static
void
00066 test_object_init (TestObject *obj)
00067 {
00068 }
00069
00070
static
void
00071 test_object_class_init (TestObjectClass *klass)
00072 {
00073   signals[HELLO_SIGNAL] =
00074     g_signal_new (
"hello_signal"
,
00075                   G_OBJECT_CLASS_TYPE (klass),
00076                   G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
00077                   0,
00078
group__DBusMacros.html#ga4
NULL
,
group__DBusMacros.html#ga4
NULL
,
00079                   g_cclosure_marshal_VOID__STRING,
00080                   G_TYPE_NONE, 1, G_TYPE_STRING);
00081 }
00082
00083 gboolean
00084 test_object_emit_hello_signal (TestObject *obj, GError **error)
00085 {
00086   g_signal_emit (obj, signals[HELLO_SIGNAL], 0,
"Hello"
);
00087
return
group__DBusMacros.html#ga2
TRUE
;
00088 }
00089
00090
00091
int
00092 main (
int
argc,
char
**argv)
00093 {
00094   DBusGConnection *bus;
00095
struct__DBusGProxy.html
DBusGProxy
*bus_proxy;
00096   GError *error =
group__DBusMacros.html#ga4
NULL
;
00097   TestObject *obj;
00098   GMainLoop *mainloop;
00099   guint request_name_result;
00100
00101   g_type_init ();
00102
00103
group__DBusGLib.html#ga17
dbus_g_object_type_install_info
(TEST_TYPE_OBJECT, &dbus_glib_test_object_object_info);
00104
00105   mainloop = g_main_loop_new (
group__DBusMacros.html#ga4
NULL
,
group__DBusMacros.html#ga3
FALSE
);
00106
00107   bus =
group__DBusGLib.html#ga16
dbus_g_bus_get
(DBUS_BUS_SESSION, &error);
00108
if
(!bus)
00109     lose_gerror (
"Couldn't connect to session bus"
, error);
00110
00111   bus_proxy =
group__DBusGLib.html#ga31
dbus_g_proxy_new_for_name
(bus,
"org.freedesktop.DBus"
,
00112
"/org/freedesktop/DBus"
,
00113
"org.freedesktop.DBus"
);
00114
00115
if
(!
group__DBusGLib.html#ga42
dbus_g_proxy_call
(bus_proxy,
"RequestName"
, &error,
00116                           G_TYPE_STRING,
"org.designfu.TestService"
,
00117                           G_TYPE_UINT, DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT,
00118                           G_TYPE_INVALID,
00119                           G_TYPE_UINT, &request_name_result,
00120                           G_TYPE_INVALID))
00121     lose_gerror (
"Failed to acquire org.designfu.TestService"
, error);
00122
00123   obj = g_object_new (TEST_TYPE_OBJECT,
group__DBusMacros.html#ga4
NULL
);
00124
00125
group__DBusGLib.html#ga20
dbus_g_connection_register_g_object
(bus,
"/org/designfu/TestService/object"
, G_OBJECT (obj));
00126
00127   printf (
"test service running\n"
);
00128
00129   g_main_loop_run (mainloop);
00130
00131   exit (0);
00132 }
Generated on Tue Sep 13 01:28:08 2005 for D-BUS by
http://www.doxygen.org/index.html
doxygen
1.4.4
