#include "libnul.h" typedef struct connection_t connection_t; typedef struct message_t message_t; typedef struct typed_value_t typed_value_t; typedef union value_t value_t; typedef gboolean (* message_func_t) (connection_t *connection, DBusMessage *message, nul_ptr_t data); typedef enum { INT32, UINT32, STRING } primitive_t; union value_t { int32_t i32; uint32_t u32; double d; char *s; }; struct typed_value_t { primitive_t type; value_t value; }; struct message_t { char *service; char *path; char *interface; char *member; typed_value_t *arguments; }; connection_t *connection_new_session (void); connection_t *connection_new_system (void); void connection_register_object (connection_t *connection, const char *object_name, message_func_t func, nul_ptr_t data); void connection_unregister_object (connection_t *connection, const char *object_name); gboolean connection_request_name (connection_t *connection, const char *name); void connection_send (connection_t *connection, DBusMessage *message); gboolean connection_send_with_reply (connection_t *connection, DBusMessage *message, message_func_t func, gpointer data); void connection_release_name (connection_t *connection, const char *name); message_t *message_new_error (const message_t *in_reply_to, const char **message); message_t *message_new_return (const message_t *in_reply_to); message_t *message_new_method_call (const char *service_name, const char *object_name, const char *interface_name, const char *method_name); void message_append_string (message_t *message, const char *string); void message_append_int32 (message_t *message, int value); void message_append_uint32 (message_t *message, uint32_t value); void message_free (message_t *mesage);