gdbus-codegen(1) gdbus-codegen(1) (NAME) gdbus-codegen - C D-Bus (SYNOPSIS) gdbus-codegen [--help] [--interface-prefix org.project.Prefix] [--header | --body | --interface-info-header | --interface-info-body | --generate-c-code OUTFILES] [--c-namespace YourProject] [--c-generate-object-manager] [--c-generate-autocleanup none|objects|all] [--output-directory OUTDIR | --output OUTFILE] [--generate-docbook OUTFILES] [--generate-md OUTFILES] [--generate-rst OUTFILES] [--pragma-once] [--xml-files FILE] [--symbol-decorator DECORATOR [--symbol-decorator-header HEADER] [--symbol-decorator-define DEFINE]] [--annotate ELEMENT KEY VALUE] [--glib-min-required VERSION] [--glib-max-allowed VERSION] [--extension-path EXTENSION_PATH] FILE (DESCRIPTION) gdbus-codegen / D-Bus . gdbus-codegen XML D-Bus . C ( --body) ( --header) DocBook XML ( --generate-docbook) . C ( GDBusInterfaceInfo) --interface-info-body --interface-info-header . C (GENERATING C CODE) C GInterface D-Bus . FooBar FooBarProxy FooBarSkeleton . GDBusProxy GDBusInterfaceSkeleton (export) GDBusConnection GDBusObjectManagerServer . C --body ( ) --header ( ) --interface-info-body ( ) --interface-info-header ( ) . --output . --generate-c-code . --output --output-directory / . . C D-Bus --interface-prefix . D-Bus com.acme.Coyote ComAcmeCoyote . D-Bus org.project.Bar.Frobnicator --interface-prefix org.project. BarFrobnicator . . -- CamelCase (lower-case). CamelCase GType . CamelCase (underscore) ( ) . org.gtk.GDBus.C.Name --c-namespace ( Ugly_Case ) camel-case . . net.MyCorp.MyApp.iSCSITarget iSCSI_Target CamelCase iSCSITarget iscsi_target . EjectTheiPod Eject_The_iPod eject_the_ipod . DOCBOOK (GENERATING DOCBOOK DOCUMENTATION) DocBook XML ( --generate-docbook ) RefEntry D-Bus . ( DocBook .) MARKDOWN (GENERATING MARKDOWN DOCUMENTATION) Markdown ( --generate-md ) D-Bus . RESTRUCTUREDTEXT (GENERATING RESTRUCTUREDTEXT DOCUMENTATION) reStructuredText ( --generate-rst ) reStructuredText D-Bus . (OPTIONS) : -h, --help . --xml-files FILE . XML D-Bus. --interface-prefix org.project.Prefix. C sortas DocBook D-Bus . --generate-docbook OUTFILES DocBook D-Bus OUTFILES-NAME.xml NAME net.Corp.FooBar . / --output-directory . . --generate-md OUTFILES D-Bus OUTFILES-NAME.md NAME net.Corp.FooBar . / --output-directory . . --generate-rst OUTFILES reStructuredText D-Bus OUTFILES-NAME.rst NAME net.Corp.FooBar . / --output-directory . . --generate-c-code OUTFILES C D-Bus OUTFILES.c OUTFILES.h . --output-directory OUTFILES.h ( ) OUTFILES.c . : $(OUTDIR)/$(dirname $OUTFILES)/$(basename $OUTFILES).{c,h}. --c-namespace YourProject (Namespace) C . CamelCase Ugly_Case ( ) . --pragma-once #pragma once (include guards) . --c-generate-object-manager GDBusObject GDBusObjectProxy GDBusObjectSkeleton GDBusObjectManagerClient . --c-generate-autocleanup none|objects|all (autocleanup) . none objects (object types) all . objects all . GLib 2.50 . --output-directory OUTDIR / . . --body --header --interface-info-body --interface-info-header --output . --header --output . --generate-c-code --generate-docbook --output-directory --header --body . --body --output . --generate-c-code --generate-docbook --output-directory --header --body . --interface-info-header GDBusInterfaceInfo --output . --generate-c-code --generate-docbook --output-directory --interface-info-header --interface-info-body . --interface-info-body GDBusInterfaceInfo --output . --generate-c-code --generate-docbook --output-directory --interface-info-header --interface-info-body . --symbol-decorator DECORATOR DECORATOR DECORATOR . (export) gdbus-codegen . GLib 2.66 . --symbol-decorator-header HEADER HEADER #include HEADER ( #pragma once --pragma-once) . --symbol-decorator . GLib 2.66 . --symbol-decorator . --symbol-decorator-define DEFINE DEFINE #define DEFINE . --symbol-decorator . GLib 2.66 . --symbol-decorator . --output OUTFILE (--header --interface-info-header) (--body --interface-info-body) --output . $($OUTFILE).{c,h} . --generate-c-code --generate-docbook --output-directory --output . GLib 2.80 OUTFILE - . --body --interface-info-body #include . cc -include foo.h foo-impl.h #include .c . --header --interface-info-header --pragma-once . - ./ . --annotate ELEMENT KEY VALUE D-Bus XML . : gdbus-codegen --c-namespace MyApp \ --generate-c-code myapp-generated \ --annotate "org.project.InterfaceName" \ org.gtk.GDBus.C.Name MyFrobnicator \ --annotate "org.project.InterfaceName:Property" \ bar bat \ --annotate "org.project.InterfaceName.Method()" \ org.freedesktop.DBus.Deprecated true \ --annotate "org.project.InterfaceName.Method()[arg_name]" \ snake hiss \ --annotate "org.project.InterfaceName::Signal" \ cat meow \ --annotate "org.project.InterfaceName::Signal[arg_name]" \ dog wuff \ myapp-dbus-interfaces.xml UTF-8 KEY VALUE . --glib-min-required VERSION GLib gdbus-codegen . gdbus-codegen --glib-min-required . gdbus-codegen GLib 2.30 gdbus-codegen . : API ABI API ABI . MAJOR.MINOR.MICRO . MINOR MICRO . 2.30 . 2.64 : 1. () h ( ) GUnixFDList ( org.gtk.GDBus.C.UnixFD ) 2. GDBusCallFlags (timeout) g_dbus_proxy_call() . --glib-max-allowed VERSION GLib gdbus-codegen . gdbus-codegen GLib . MAJOR.MINOR.MICRO . MINOR MICRO . --glib-min-required . GLib gdbus-codegen . --extension-path EXTENSION_PATH codegen . EXTENSION_PATH . def init(args, options) args argparse.Namespace options version . (API) version . . D-BUS (SUPPORTED D-BUS ANNOTATIONS) D-Bus gdbus-codegen : org.freedesktop.DBus.Deprecated true . D-Bus true false . . C G_GNUC_DEPRECATED . DocBook XML . org.gtk.GDBus.Since ( ). C ABI/API << >> . DocBook XML . org.gtk.GDBus.DocString DocBook . . org.gtk.GDBus.DocString.Short DocBook . . org.gtk.GDBus.C.Name C . CamelCase Ugly_Case ( ) . org.gtk.GDBus.C.ForceGVariant C GVariant . . org.gtk.GDBus.C.UnixFD GUnixFDList . . org.gtk.GDBus.DocString gdbus-codegen XML gtk-doc : @since ( ) org.gtk.GDBus.Since . org.gtk.GDBus.DocString ( ) #net.Corp.Bar net.Corp.Bar.FooMethod() #net.Corp.Bar::BarSignal #net.Corp.InlineDocs:BazProperty . @ % . XML org.gtk.GDBus.DocString org.gtk.GDBus.DocString.Short . (EXAMPLE) XML D-Bus : gdbus-codegen : gdbus-codegen --generate-c-code myapp-generated \ --c-namespace MyApp \ --interface-prefix net.corp.MyApp. \ net.Corp.MyApp.Frobber.xml myapp-generated.[ch] . GTypeInterface MyAppFrobber Proxy Skeleton . : /* GType macros for the three generated types */ #define MY_APP_TYPE_FROBBER (my_app_frobber_get_type ()) #define MY_APP_TYPE_FROBBER_SKELETON (my_app_frobber_skeleton_get_type ()) #define MY_APP_TYPE_FROBBER_PROXY (my_app_frobber_proxy_get_type ()) typedef struct _MyAppFrobber MyAppFrobber; /* Dummy typedef */ typedef struct { GTypeInterface parent_iface; /* Signal handler for the ::notification signal */ void (*notification) (MyAppFrobber *proxy, GVariant *icon_blob, gint height, const gchar* const *messages); /* Signal handler for the ::handle-hello-world signal */ gboolean (*handle_hello_world) (MyAppFrobber *proxy, GDBusMethodInvocation *invocation, const gchar *greeting); } MyAppFrobberIface; /* Asynchronously calls HelloWorld() */ void my_app_frobber_call_hello_world (MyAppFrobber *proxy, const gchar *greeting, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean my_app_frobber_call_hello_world_finish (MyAppFrobber *proxy, gchar **out_response, GAsyncResult *res, GError **error); /* Synchronously calls HelloWorld(). Blocks calling thread. */ gboolean my_app_frobber_call_hello_world_sync (MyAppFrobber *proxy, const gchar *greeting, gchar **out_response, GCancellable *cancellable, GError **error); /* Completes handling the HelloWorld() method call */ void my_app_frobber_complete_hello_world (MyAppFrobber *object, GDBusMethodInvocation *invocation, const gchar *response); /* Emits the ::notification signal / Notification() D-Bus signal */ void my_app_frobber_emit_notification (MyAppFrobber *object, GVariant *icon_blob, gint height, const gchar* const *messages); /* Gets the :verbose GObject property / Verbose D-Bus property. * Does no blocking I/O. */ gboolean my_app_frobber_get_verbose (MyAppFrobber *object); /* Sets the :verbose GObject property / Verbose D-Bus property. * Does no blocking I/O. */ void my_app_frobber_set_verbose (MyAppFrobber *object, gboolean value); /* Gets the interface info */ GDBusInterfaceInfo *my_app_frobber_interface_info (void); /* Creates a new skeleton object, ready to be exported */ MyAppFrobber *my_app_frobber_skeleton_new (void); /* Client-side proxy constructors. * * Additionally, _new_for_bus(), _new_for_bus_finish() and * _new_for_bus_sync() proxy constructors are also generated. */ void my_app_frobber_proxy_new (GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); MyAppFrobber * my_app_frobber_proxy_new_finish (GAsyncResult *res, GError **error); MyAppFrobber * my_app_frobber_proxy_new_sync (GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); D-Bus C GObject C . D-Bus GObject C . D-Bus C ( setter getter) GObject . : +----------------------------+---------------------------+--------------------------------+ | | | | +----------------------------+---------------------------+--------------------------------+ | (Types) | | | | | MyAppFrobberProxy. | MyAppFrobber | | | | | | | | | | | | . | +----------------------------+---------------------------+--------------------------------+ | (Methods) | | | | | | | | | m_a_f_hello_world() | | | | | | | | . | handle_hello_world(). | | | | | | | | | | | | | | | | m_a_f_complete_hello_world(). | +----------------------------+---------------------------+--------------------------------+ | | | | |(Signals) | | m_a_f_emit_notification() | | | ::notification. | | | | | . | +----------------------------+---------------------------+--------------------------------+ | | | | |() | | | | | m_a_f_get_verbose() | get_property() GObject. | | | | | | | :verbose. | | +----------------------------+---------------------------+--------------------------------+ | | | | |() | | | | | m_a_f_set_verbose() | set_property() GObject. | | | | | | | :verbose. | | +----------------------------+---------------------------+--------------------------------+ (Client-side usage) : MyAppFrobber *proxy; GError *error; error = NULL; proxy = my_app_frobber_proxy_new_for_bus_sync ( G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, "net.Corp.MyApp", /* bus name */ "/net/Corp/MyApp/SomeFrobber", /* object */ NULL, /* GCancellable* */ &error); /* do stuff with proxy */ g_object_unref (proxy); GDBusProxy my_app_frobber_call_hello_world() D-Bus net.Corp.MyApp.Frobber.HelloWorld() GObject ::notification D-Bus net.Corp.MyApp.Frobber::Notification D-Bus net.Corp.MyApp.Frobber:Verbose :verbose GObject my_app_get_verbose() my_app_set_verbose() . GObject::notify . (cache) GDBusProxy I/O . org.freedesktop.DBus.Properties.Set ( ) (remote) . (asynchronous) (blocking) . . (Server-side usage) MyAppFrobber GObject . HelloWorld() handle_hello_world() MyAppFrobberIface . net.Corp.MyApp.Frobber:Verbose :verbose GObject (override) . my_app_emit_signal() g_signal_emit_by_name() . MyAppFrobberSkeleton . g_signal_connect() ::handle-* get_property() set_property() GObject g_object_get() g_object_set() ( ). : static gboolean on_handle_hello_world (MyAppFrobber *interface, GDBusMethodInvocation *invocation, const gchar *greeting, gpointer user_data) { if (g_strcmp0 (greeting, "Boo") != 0) { gchar *response; response = g_strdup_printf ("Word! You said `%s'.", greeting); my_app_complete_hello_world (interface, invocation, response); g_free (response); } else { g_dbus_method_invocation_return_error (invocation, MY_APP_ERROR, MY_APP_ERROR_NO_WHINING, "Hey, %s, there will be no whining!", g_dbus_method_invocation_get_sender (invocation)); } return TRUE; } [] interface = my_app_frobber_skeleton_new (); my_app_frobber_set_verbose (interface, TRUE); g_signal_connect (interface, "handle-hello-world", G_CALLBACK (on_handle_hello_world), some_user_data); [] error = NULL; if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (interface), connection, "/path/of/dbus_object", &error)) { /* handle error */ } ( ) GObject::notify . (idle handler ) org.freedesktop.DBus.Properties::PropertiesChanged ( ) . g_dbus_interface_skeleton_flush() g_dbus_object_skeleton_flush() . (thread) g_object_freeze_notify() g_object_thaw_notify() . C (C TYPE MAPPING) ( b y n q i u x t d) ( s ay o g) ( as ao aay) gboolean gdouble gint gchar* gchar** . GVariant . org.gtk.GDBus.C.ForceGVariant -- C GVariant . ( ay) (nul bytes) . (STABILITY GUARANTEES) C ABI . XML C ABI C . . ABI GType org.gtk.GDBus.Since -- VTable GInterface . D-Bus D-Bus ABI GInterface org.gtk.GDBus.Since . C gtk-doc GObject Introspection . SECTION . DocBook D-Bus . . (BUGS) . (SEE ALSO) gdbus(1) gdbus-codegen(1)