aboutsummaryrefslogtreecommitdiff
path: root/libcontextprovider/dbus_interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcontextprovider/dbus_interface.c')
-rw-r--r--libcontextprovider/dbus_interface.c1255
1 files changed, 1255 insertions, 0 deletions
diff --git a/libcontextprovider/dbus_interface.c b/libcontextprovider/dbus_interface.c
new file mode 100644
index 00000000..0f82d7d5
--- /dev/null
+++ b/libcontextprovider/dbus_interface.c
@@ -0,0 +1,1255 @@
+
+#include <dbus_interface.h>
+
+typedef DBusGProxy ContextProviderDBusManagerDBusProxy;
+typedef DBusGProxyClass ContextProviderDBusManagerDBusProxyClass;
+typedef DBusGProxy ContextProviderDBusSubscriberDBusProxy;
+typedef DBusGProxyClass ContextProviderDBusSubscriberDBusProxyClass;
+typedef struct _DBusObjectVTable _DBusObjectVTable;
+
+struct _DBusObjectVTable {
+ void (*register_object) (DBusConnection*, const char*, void*);
+};
+
+
+
+void _context_provider_dbus_manager_dbus_unregister (DBusConnection* connection, void* user_data);
+static DBusMessage* _dbus_context_provider_dbus_manager_introspect (ContextProviderDBusManager* self, DBusConnection* connection, DBusMessage* message);
+static DBusMessage* _dbus_context_provider_dbus_manager_property_get_all (ContextProviderDBusManager* self, DBusConnection* connection, DBusMessage* message);
+static DBusMessage* _dbus_context_provider_dbus_manager_Get (ContextProviderDBusManager* self, DBusConnection* connection, DBusMessage* message);
+static DBusMessage* _dbus_context_provider_dbus_manager_GetSubscriber (ContextProviderDBusManager* self, DBusConnection* connection, DBusMessage* message);
+DBusHandlerResult context_provider_dbus_manager_dbus_proxy_filter (DBusConnection* connection, DBusMessage* message, void* user_data);
+static void context_provider_dbus_manager_dbus_proxy_Get (ContextProviderDBusManager* self, char** keys, int keys_length1, GHashTable** values, char*** undeterminable_keys, int* undeterminable_keys_length1);
+static char* context_provider_dbus_manager_dbus_proxy_GetSubscriber (ContextProviderDBusManager* self, const char* name, GError** error);
+static void context_provider_dbus_manager_dbus_proxy_interface_init (ContextProviderDBusManagerIface* iface);
+void _context_provider_dbus_subscriber_dbus_unregister (DBusConnection* connection, void* user_data);
+static DBusMessage* _dbus_context_provider_dbus_subscriber_introspect (ContextProviderDBusSubscriber* self, DBusConnection* connection, DBusMessage* message);
+static DBusMessage* _dbus_context_provider_dbus_subscriber_property_get_all (ContextProviderDBusSubscriber* self, DBusConnection* connection, DBusMessage* message);
+static DBusMessage* _dbus_context_provider_dbus_subscriber_Subscribe (ContextProviderDBusSubscriber* self, DBusConnection* connection, DBusMessage* message);
+static DBusMessage* _dbus_context_provider_dbus_subscriber_Unsubscribe (ContextProviderDBusSubscriber* self, DBusConnection* connection, DBusMessage* message);
+static void _dbus_context_provider_dbus_subscriber_changed (GObject* _sender, GHashTable* values, char** undeterminable_keys, int undeterminable_keys_length1, DBusConnection* _connection);
+static void _dbus_handle_context_provider_dbus_subscriber_changed (ContextProviderDBusSubscriber* self, DBusConnection* connection, DBusMessage* message);
+DBusHandlerResult context_provider_dbus_subscriber_dbus_proxy_filter (DBusConnection* connection, DBusMessage* message, void* user_data);
+static void context_provider_dbus_subscriber_dbus_proxy_Subscribe (ContextProviderDBusSubscriber* self, char** keys, int keys_length1, GHashTable** values, char*** undeterminable_keys, int* undeterminable_keys_length1);
+static void context_provider_dbus_subscriber_dbus_proxy_Unsubscribe (ContextProviderDBusSubscriber* self, char** keys, int keys_length1);
+static void context_provider_dbus_subscriber_dbus_proxy_interface_init (ContextProviderDBusSubscriberIface* iface);
+static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object);
+
+static const DBusObjectPathVTable _context_provider_dbus_manager_dbus_path_vtable = {_context_provider_dbus_manager_dbus_unregister, context_provider_dbus_manager_dbus_message};
+static const _DBusObjectVTable _context_provider_dbus_manager_dbus_vtable = {context_provider_dbus_manager_dbus_register_object};
+static const DBusObjectPathVTable _context_provider_dbus_subscriber_dbus_path_vtable = {_context_provider_dbus_subscriber_dbus_unregister, context_provider_dbus_subscriber_dbus_message};
+static const _DBusObjectVTable _context_provider_dbus_subscriber_dbus_vtable = {context_provider_dbus_subscriber_dbus_register_object};
+
+static void g_cclosure_user_marshal_VOID__BOXED_BOXED_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
+
+void context_provider_dbus_manager_Get (ContextProviderDBusManager* self, char** keys, int keys_length1, GHashTable** values, char*** undeterminable_keys, int* undeterminable_keys_length1) {
+ CONTEXT_PROVIDER_DBUS_MANAGER_GET_INTERFACE (self)->Get (self, keys, keys_length1, values, undeterminable_keys, undeterminable_keys_length1);
+}
+
+
+char* context_provider_dbus_manager_GetSubscriber (ContextProviderDBusManager* self, const char* name, GError** error) {
+ return CONTEXT_PROVIDER_DBUS_MANAGER_GET_INTERFACE (self)->GetSubscriber (self, name, error);
+}
+
+
+void _context_provider_dbus_manager_dbus_unregister (DBusConnection* connection, void* user_data) {
+}
+
+
+static DBusMessage* _dbus_context_provider_dbus_manager_introspect (ContextProviderDBusManager* self, DBusConnection* connection, DBusMessage* message) {
+ DBusMessage* reply;
+ DBusMessageIter iter;
+ GString* xml_data;
+ char** children;
+ int i;
+ reply = dbus_message_new_method_return (message);
+ dbus_message_iter_init_append (reply, &iter);
+ xml_data = g_string_new ("<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n");
+ g_string_append (xml_data, "<node>\n<interface name=\"org.freedesktop.DBus.Introspectable\">\n <method name=\"Introspect\">\n <arg name=\"data\" direction=\"out\" type=\"s\"/>\n </method>\n</interface>\n<interface name=\"org.freedesktop.DBus.Properties\">\n <method name=\"Get\">\n <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n <arg name=\"propname\" direction=\"in\" type=\"s\"/>\n <arg name=\"value\" direction=\"out\" type=\"v\"/>\n </method>\n <method name=\"Set\">\n <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n <arg name=\"propname\" direction=\"in\" type=\"s\"/>\n <arg name=\"value\" direction=\"in\" type=\"v\"/>\n </method>\n <method name=\"GetAll\">\n <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n <arg name=\"props\" direction=\"out\" type=\"a{sv}\"/>\n </method>\n</interface>\n<interface name=\"org.freedesktop.ContextKit.Manager\">\n <method name=\"Get\">\n <arg name=\"keys\" type=\"as\" direction=\"in\"/>\n <arg name=\"values\" type=\"a{sv}\" direction=\"out\"/>\n <arg name=\"undeterminable_keys\" type=\"as\" direction=\"out\"/>\n </method>\n <method name=\"GetSubscriber\">\n <arg name=\"result\" type=\"o\" direction=\"out\"/>\n </method>\n</interface>\n");
+ dbus_connection_list_registered (connection, g_object_get_data ((GObject *) self, "dbus_object_path"), &children);
+ for (i = 0; children[i]; i++) {
+ g_string_append_printf (xml_data, "<node name=\"%s\"/>\n", children[i]);
+ }
+ g_string_append (xml_data, "</node>\n");
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &xml_data->str);
+ g_string_free (xml_data, TRUE);
+ return reply;
+}
+
+
+static DBusMessage* _dbus_context_provider_dbus_manager_property_get_all (ContextProviderDBusManager* self, DBusConnection* connection, DBusMessage* message) {
+ DBusMessage* reply;
+ DBusMessageIter iter, reply_iter, subiter;
+ char* interface_name;
+ const char* _tmp0;
+ if (strcmp (dbus_message_get_signature (message), "s")) {
+ return NULL;
+ }
+ dbus_message_iter_init (message, &iter);
+ reply = dbus_message_new_method_return (message);
+ dbus_message_iter_init_append (reply, &reply_iter);
+ dbus_message_iter_get_basic (&iter, &_tmp0);
+ dbus_message_iter_next (&iter);
+ interface_name = g_strdup (_tmp0);
+ if (strcmp (interface_name, "org.freedesktop.ContextKit.Manager") == 0) {
+ dbus_message_iter_open_container (&reply_iter, DBUS_TYPE_ARRAY, "{sv}", &subiter);
+ dbus_message_iter_close_container (&reply_iter, &subiter);
+ } else {
+ return NULL;
+ }
+ return reply;
+}
+
+
+static DBusMessage* _dbus_context_provider_dbus_manager_Get (ContextProviderDBusManager* self, DBusConnection* connection, DBusMessage* message) {
+ DBusMessageIter iter;
+ GError* error;
+ char** keys;
+ int keys_length1;
+ char** _tmp1;
+ int _tmp1_length;
+ int _tmp1_size;
+ int _tmp1_length1;
+ DBusMessageIter _tmp2;
+ GHashTable* values;
+ char** undeterminable_keys;
+ int undeterminable_keys_length1;
+ DBusMessage* reply;
+ DBusMessageIter _tmp4, _tmp5;
+ GHashTableIter _tmp6;
+ gpointer _tmp7, _tmp8;
+ char** _tmp19;
+ DBusMessageIter _tmp20;
+ int _tmp21;
+ error = NULL;
+ if (strcmp (dbus_message_get_signature (message), "as")) {
+ return NULL;
+ }
+ dbus_message_iter_init (message, &iter);
+ keys = NULL;
+ keys_length1 = 0;
+ _tmp1 = g_new (char*, 5);
+ _tmp1_length = 0;
+ _tmp1_size = 4;
+ _tmp1_length1 = 0;
+ dbus_message_iter_recurse (&iter, &_tmp2);
+ for (; dbus_message_iter_get_arg_type (&_tmp2); _tmp1_length1++) {
+ const char* _tmp3;
+ if (_tmp1_size == _tmp1_length) {
+ _tmp1_size = 2 * _tmp1_size;
+ _tmp1 = g_renew (char*, _tmp1, _tmp1_size + 1);
+ }
+ dbus_message_iter_get_basic (&_tmp2, &_tmp3);
+ dbus_message_iter_next (&_tmp2);
+ _tmp1[_tmp1_length++] = g_strdup (_tmp3);
+ }
+ keys_length1 = _tmp1_length1;
+ _tmp1[_tmp1_length] = NULL;
+ dbus_message_iter_next (&iter);
+ keys = _tmp1;
+ values = NULL;
+ undeterminable_keys = NULL;
+ undeterminable_keys_length1 = 0;
+ context_provider_dbus_manager_Get (self, keys, keys_length1, &values, &undeterminable_keys, &undeterminable_keys_length1);
+ reply = dbus_message_new_method_return (message);
+ dbus_message_iter_init_append (reply, &iter);
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "{sv}", &_tmp4);
+ g_hash_table_iter_init (&_tmp6, values);
+ while (g_hash_table_iter_next (&_tmp6, &_tmp7, &_tmp8)) {
+ char* _key;
+ GValue* _value;
+ const char* _tmp9;
+ DBusMessageIter _tmp10;
+ dbus_message_iter_open_container (&_tmp4, DBUS_TYPE_DICT_ENTRY, NULL, &_tmp5);
+ _key = (char*) _tmp7;
+ _value = (GValue*) _tmp8;
+ _tmp9 = _key;
+ dbus_message_iter_append_basic (&_tmp5, DBUS_TYPE_STRING, &_tmp9);
+ if (G_VALUE_TYPE (&(*_value)) == G_TYPE_UCHAR) {
+ guint8 _tmp11;
+ dbus_message_iter_open_container (&_tmp5, DBUS_TYPE_VARIANT, "y", &_tmp10);
+ _tmp11 = g_value_get_uchar (&(*_value));
+ dbus_message_iter_append_basic (&_tmp10, DBUS_TYPE_BYTE, &_tmp11);
+ dbus_message_iter_close_container (&_tmp5, &_tmp10);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_BOOLEAN) {
+ dbus_bool_t _tmp12;
+ dbus_message_iter_open_container (&_tmp5, DBUS_TYPE_VARIANT, "b", &_tmp10);
+ _tmp12 = g_value_get_boolean (&(*_value));
+ dbus_message_iter_append_basic (&_tmp10, DBUS_TYPE_BOOLEAN, &_tmp12);
+ dbus_message_iter_close_container (&_tmp5, &_tmp10);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_INT) {
+ dbus_int32_t _tmp13;
+ dbus_message_iter_open_container (&_tmp5, DBUS_TYPE_VARIANT, "i", &_tmp10);
+ _tmp13 = g_value_get_int (&(*_value));
+ dbus_message_iter_append_basic (&_tmp10, DBUS_TYPE_INT32, &_tmp13);
+ dbus_message_iter_close_container (&_tmp5, &_tmp10);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_UINT) {
+ dbus_uint32_t _tmp14;
+ dbus_message_iter_open_container (&_tmp5, DBUS_TYPE_VARIANT, "u", &_tmp10);
+ _tmp14 = g_value_get_uint (&(*_value));
+ dbus_message_iter_append_basic (&_tmp10, DBUS_TYPE_UINT32, &_tmp14);
+ dbus_message_iter_close_container (&_tmp5, &_tmp10);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_INT64) {
+ dbus_int64_t _tmp15;
+ dbus_message_iter_open_container (&_tmp5, DBUS_TYPE_VARIANT, "x", &_tmp10);
+ _tmp15 = g_value_get_int64 (&(*_value));
+ dbus_message_iter_append_basic (&_tmp10, DBUS_TYPE_INT64, &_tmp15);
+ dbus_message_iter_close_container (&_tmp5, &_tmp10);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_UINT64) {
+ dbus_uint64_t _tmp16;
+ dbus_message_iter_open_container (&_tmp5, DBUS_TYPE_VARIANT, "t", &_tmp10);
+ _tmp16 = g_value_get_uint64 (&(*_value));
+ dbus_message_iter_append_basic (&_tmp10, DBUS_TYPE_UINT64, &_tmp16);
+ dbus_message_iter_close_container (&_tmp5, &_tmp10);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_DOUBLE) {
+ double _tmp17;
+ dbus_message_iter_open_container (&_tmp5, DBUS_TYPE_VARIANT, "d", &_tmp10);
+ _tmp17 = g_value_get_double (&(*_value));
+ dbus_message_iter_append_basic (&_tmp10, DBUS_TYPE_DOUBLE, &_tmp17);
+ dbus_message_iter_close_container (&_tmp5, &_tmp10);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_STRING) {
+ const char* _tmp18;
+ dbus_message_iter_open_container (&_tmp5, DBUS_TYPE_VARIANT, "s", &_tmp10);
+ _tmp18 = g_value_get_string (&(*_value));
+ dbus_message_iter_append_basic (&_tmp10, DBUS_TYPE_STRING, &_tmp18);
+ dbus_message_iter_close_container (&_tmp5, &_tmp10);
+ }
+ dbus_message_iter_close_container (&_tmp4, &_tmp5);
+ }
+ dbus_message_iter_close_container (&iter, &_tmp4);
+ _tmp19 = undeterminable_keys;
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "s", &_tmp20);
+ for (_tmp21 = 0; _tmp21 < undeterminable_keys_length1; _tmp21++) {
+ const char* _tmp22;
+ _tmp22 = *(_tmp19++);
+ dbus_message_iter_append_basic (&_tmp20, DBUS_TYPE_STRING, &_tmp22);
+ }
+ dbus_message_iter_close_container (&iter, &_tmp20);
+ return reply;
+}
+
+
+static DBusMessage* _dbus_context_provider_dbus_manager_GetSubscriber (ContextProviderDBusManager* self, DBusConnection* connection, DBusMessage* message) {
+ DBusMessageIter iter;
+ GError* error;
+ const char* name;
+ char* result;
+ DBusMessage* reply;
+ const char* _tmp23;
+ error = NULL;
+ if (strcmp (dbus_message_get_signature (message), "")) {
+ return NULL;
+ }
+ dbus_message_iter_init (message, &iter);
+ name = NULL;
+ result = context_provider_dbus_manager_GetSubscriber (self, dbus_message_get_sender (message), &error);
+ if (error) {
+ reply = dbus_message_new_error (message, DBUS_ERROR_FAILED, error->message);
+ return reply;
+ }
+ reply = dbus_message_new_method_return (message);
+ dbus_message_iter_init_append (reply, &iter);
+ _tmp23 = result;
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_OBJECT_PATH, &_tmp23);
+ return reply;
+}
+
+
+DBusHandlerResult context_provider_dbus_manager_dbus_message (DBusConnection* connection, DBusMessage* message, void* object) {
+ DBusMessage* reply;
+ reply = NULL;
+ if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Introspectable", "Introspect")) {
+ reply = _dbus_context_provider_dbus_manager_introspect (object, connection, message);
+ } else if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Properties", "GetAll")) {
+ reply = _dbus_context_provider_dbus_manager_property_get_all (object, connection, message);
+ } else if (dbus_message_is_method_call (message, "org.freedesktop.ContextKit.Manager", "Get")) {
+ reply = _dbus_context_provider_dbus_manager_Get (object, connection, message);
+ } else if (dbus_message_is_method_call (message, "org.freedesktop.ContextKit.Manager", "GetSubscriber")) {
+ reply = _dbus_context_provider_dbus_manager_GetSubscriber (object, connection, message);
+ }
+ if (reply) {
+ dbus_connection_send (connection, reply, NULL);
+ dbus_message_unref (reply);
+ return DBUS_HANDLER_RESULT_HANDLED;
+ } else {
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+}
+
+
+void context_provider_dbus_manager_dbus_register_object (DBusConnection* connection, const char* path, void* object) {
+ if (!g_object_get_data (object, "dbus_object_path")) {
+ g_object_set_data (object, "dbus_object_path", g_strdup (path));
+ dbus_connection_register_object_path (connection, path, &_context_provider_dbus_manager_dbus_path_vtable, object);
+ }
+}
+
+
+static void context_provider_dbus_manager_base_init (ContextProviderDBusManagerIface * iface) {
+ static gboolean initialized = FALSE;
+ if (!initialized) {
+ initialized = TRUE;
+ g_type_set_qdata (CONTEXT_PROVIDER_TYPE_DBUS_MANAGER, g_quark_from_static_string ("DBusObjectVTable"), (void*) (&_context_provider_dbus_manager_dbus_vtable));
+ }
+}
+
+
+GType context_provider_dbus_manager_get_type (void) {
+ static GType context_provider_dbus_manager_type_id = 0;
+ if (context_provider_dbus_manager_type_id == 0) {
+ static const GTypeInfo g_define_type_info = { sizeof (ContextProviderDBusManagerIface), (GBaseInitFunc) context_provider_dbus_manager_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
+ context_provider_dbus_manager_type_id = g_type_register_static (G_TYPE_INTERFACE, "ContextProviderDBusManager", &g_define_type_info, 0);
+ g_type_interface_add_prerequisite (context_provider_dbus_manager_type_id, G_TYPE_OBJECT);
+ }
+ return context_provider_dbus_manager_type_id;
+}
+
+
+G_DEFINE_TYPE_EXTENDED (ContextProviderDBusManagerDBusProxy, context_provider_dbus_manager_dbus_proxy, DBUS_TYPE_G_PROXY, 0, G_IMPLEMENT_INTERFACE (CONTEXT_PROVIDER_TYPE_DBUS_MANAGER, context_provider_dbus_manager_dbus_proxy_interface_init));
+ContextProviderDBusManager* context_provider_dbus_manager_dbus_proxy_new (DBusGConnection* connection, const char* name, const char* path) {
+ ContextProviderDBusManager* self;
+ char* filter;
+ self = g_object_new (context_provider_dbus_manager_dbus_proxy_get_type (), "connection", connection, "name", name, "path", path, "interface", "org.freedesktop.ContextKit.Manager", NULL);
+ dbus_connection_add_filter (dbus_g_connection_get_connection (connection), context_provider_dbus_manager_dbus_proxy_filter, self, NULL);
+ filter = g_strdup_printf ("type='signal',path='%s'", path);
+ dbus_bus_add_match (dbus_g_connection_get_connection (connection), filter, NULL);
+ g_free (filter);
+ return self;
+}
+
+
+DBusHandlerResult context_provider_dbus_manager_dbus_proxy_filter (DBusConnection* connection, DBusMessage* message, void* user_data) {
+ if (dbus_message_has_path (message, dbus_g_proxy_get_path (user_data))) {
+ }
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+
+static void context_provider_dbus_manager_dbus_proxy_dispose (GObject* self) {
+ DBusGConnection *connection;
+ g_object_get (self, "connection", &connection, NULL);
+ dbus_connection_remove_filter (dbus_g_connection_get_connection (connection), context_provider_dbus_manager_dbus_proxy_filter, self);
+ G_OBJECT_CLASS (context_provider_dbus_manager_dbus_proxy_parent_class)->dispose (self);
+}
+
+
+static void context_provider_dbus_manager_dbus_proxy_class_init (ContextProviderDBusManagerDBusProxyClass* klass) {
+ G_OBJECT_CLASS (klass)->dispose = context_provider_dbus_manager_dbus_proxy_dispose;
+}
+
+
+static void context_provider_dbus_manager_dbus_proxy_init (ContextProviderDBusManagerDBusProxy* self) {
+}
+
+
+static void context_provider_dbus_manager_dbus_proxy_Get (ContextProviderDBusManager* self, char** keys, int keys_length1, GHashTable** values, char*** undeterminable_keys, int* undeterminable_keys_length1) {
+ DBusGConnection *_connection;
+ DBusMessage *_message, *_reply;
+ DBusMessageIter _iter;
+ char** _tmp24;
+ DBusMessageIter _tmp25;
+ int _tmp26;
+ GHashTable* _values;
+ GHashTable* _tmp28;
+ DBusMessageIter _tmp29;
+ DBusMessageIter _tmp30;
+ char** _undeterminable_keys;
+ int _undeterminable_keys_length1;
+ char** _tmp46;
+ int _tmp46_length;
+ int _tmp46_size;
+ int _tmp46_length1;
+ DBusMessageIter _tmp47;
+ _message = dbus_message_new_method_call (dbus_g_proxy_get_bus_name ((DBusGProxy*) self), dbus_g_proxy_get_path ((DBusGProxy*) self), "org.freedesktop.ContextKit.Manager", "Get");
+ dbus_message_iter_init_append (_message, &_iter);
+ _tmp24 = keys;
+ dbus_message_iter_open_container (&_iter, DBUS_TYPE_ARRAY, "s", &_tmp25);
+ for (_tmp26 = 0; _tmp26 < keys_length1; _tmp26++) {
+ const char* _tmp27;
+ _tmp27 = *(_tmp24++);
+ dbus_message_iter_append_basic (&_tmp25, DBUS_TYPE_STRING, &_tmp27);
+ }
+ dbus_message_iter_close_container (&_iter, &_tmp25);
+ g_object_get (self, "connection", &_connection, NULL);
+ _reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (_connection), _message, -1, NULL);
+ dbus_g_connection_unref (_connection);
+ dbus_message_unref (_message);
+ dbus_message_iter_init (_reply, &_iter);
+ _tmp28 = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+ dbus_message_iter_recurse (&_iter, &_tmp29);
+ while (dbus_message_iter_get_arg_type (&_tmp29)) {
+ char* _key;
+ GValue* _value;
+ const char* _tmp31;
+ GValue _tmp32 = {0};
+ DBusMessageIter _tmp33;
+ dbus_message_iter_recurse (&_tmp29, &_tmp30);
+ dbus_message_iter_get_basic (&_tmp30, &_tmp31);
+ dbus_message_iter_next (&_tmp30);
+ _key = g_strdup (_tmp31);
+ dbus_message_iter_recurse (&_tmp30, &_tmp33);
+ if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_BYTE) {
+ guint8 _tmp34;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp34);
+ g_value_init (&_tmp32, G_TYPE_UCHAR);
+ g_value_set_uchar (&_tmp32, _tmp34);
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_BOOLEAN) {
+ dbus_bool_t _tmp35;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp35);
+ g_value_init (&_tmp32, G_TYPE_BOOLEAN);
+ g_value_set_boolean (&_tmp32, _tmp35);
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_INT16) {
+ dbus_int16_t _tmp36;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp36);
+ g_value_init (&_tmp32, G_TYPE_INT);
+ g_value_set_int (&_tmp32, _tmp36);
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_UINT16) {
+ dbus_uint16_t _tmp37;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp37);
+ g_value_init (&_tmp32, G_TYPE_UINT);
+ g_value_set_uint (&_tmp32, _tmp37);
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_INT32) {
+ dbus_int32_t _tmp38;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp38);
+ g_value_init (&_tmp32, G_TYPE_INT);
+ g_value_set_int (&_tmp32, _tmp38);
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_UINT32) {
+ dbus_uint32_t _tmp39;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp39);
+ g_value_init (&_tmp32, G_TYPE_UINT);
+ g_value_set_uint (&_tmp32, _tmp39);
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_INT64) {
+ dbus_int64_t _tmp40;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp40);
+ g_value_init (&_tmp32, G_TYPE_INT64);
+ g_value_set_int64 (&_tmp32, _tmp40);
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_UINT64) {
+ dbus_uint64_t _tmp41;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp41);
+ g_value_init (&_tmp32, G_TYPE_UINT64);
+ g_value_set_uint64 (&_tmp32, _tmp41);
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_DOUBLE) {
+ double _tmp42;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp42);
+ g_value_init (&_tmp32, G_TYPE_DOUBLE);
+ g_value_set_double (&_tmp32, _tmp42);
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_STRING) {
+ const char* _tmp43;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp43);
+ g_value_init (&_tmp32, G_TYPE_STRING);
+ g_value_take_string (&_tmp32, g_strdup (_tmp43));
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_OBJECT_PATH) {
+ const char* _tmp44;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp44);
+ g_value_init (&_tmp32, G_TYPE_STRING);
+ g_value_take_string (&_tmp32, g_strdup (_tmp44));
+ } else if (dbus_message_iter_get_arg_type (&_tmp33) == DBUS_TYPE_SIGNATURE) {
+ const char* _tmp45;
+ dbus_message_iter_get_basic (&_tmp33, &_tmp45);
+ g_value_init (&_tmp32, G_TYPE_STRING);
+ g_value_take_string (&_tmp32, g_strdup (_tmp45));
+ }
+ dbus_message_iter_next (&_tmp30);
+ _value = g_memdup (&_tmp32, sizeof (GValue));
+ g_hash_table_insert (_tmp28, _key, _value);
+ dbus_message_iter_next (&_tmp29);
+ }
+ dbus_message_iter_next (&_iter);
+ _values = _tmp28;
+ *values = _values;
+ _undeterminable_keys_length1 = 0;
+ _tmp46 = g_new (char*, 5);
+ _tmp46_length = 0;
+ _tmp46_size = 4;
+ _tmp46_length1 = 0;
+ dbus_message_iter_recurse (&_iter, &_tmp47);
+ for (; dbus_message_iter_get_arg_type (&_tmp47); _tmp46_length1++) {
+ const char* _tmp48;
+ if (_tmp46_size == _tmp46_length) {
+ _tmp46_size = 2 * _tmp46_size;
+ _tmp46 = g_renew (char*, _tmp46, _tmp46_size + 1);
+ }
+ dbus_message_iter_get_basic (&_tmp47, &_tmp48);
+ dbus_message_iter_next (&_tmp47);
+ _tmp46[_tmp46_length++] = g_strdup (_tmp48);
+ }
+ _undeterminable_keys_length1 = _tmp46_length1;
+ _tmp46[_tmp46_length] = NULL;
+ dbus_message_iter_next (&_iter);
+ _undeterminable_keys = _tmp46;
+ *undeterminable_keys = _undeterminable_keys;
+ *undeterminable_keys_length1 = _undeterminable_keys_length1;
+ dbus_message_unref (_reply);
+}
+
+
+static char* context_provider_dbus_manager_dbus_proxy_GetSubscriber (ContextProviderDBusManager* self, const char* name, GError** error) {
+ DBusGConnection *_connection;
+ DBusMessage *_message, *_reply;
+ DBusMessageIter _iter;
+ char* _result;
+ const char* _tmp49;
+ _message = dbus_message_new_method_call (dbus_g_proxy_get_bus_name ((DBusGProxy*) self), dbus_g_proxy_get_path ((DBusGProxy*) self), "org.freedesktop.ContextKit.Manager", "GetSubscriber");
+ dbus_message_iter_init_append (_message, &_iter);
+ g_object_get (self, "connection", &_connection, NULL);
+ _reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (_connection), _message, -1, NULL);
+ dbus_g_connection_unref (_connection);
+ dbus_message_unref (_message);
+ dbus_message_iter_init (_reply, &_iter);
+ dbus_message_iter_get_basic (&_iter, &_tmp49);
+ dbus_message_iter_next (&_iter);
+ _result = g_strdup (_tmp49);
+ dbus_message_unref (_reply);
+ return _result;
+}
+
+
+static void context_provider_dbus_manager_dbus_proxy_interface_init (ContextProviderDBusManagerIface* iface) {
+ iface->Get = context_provider_dbus_manager_dbus_proxy_Get;
+ iface->GetSubscriber = context_provider_dbus_manager_dbus_proxy_GetSubscriber;
+}
+
+
+void context_provider_dbus_subscriber_Subscribe (ContextProviderDBusSubscriber* self, char** keys, int keys_length1, GHashTable** values, char*** undeterminable_keys, int* undeterminable_keys_length1) {
+ CONTEXT_PROVIDER_DBUS_SUBSCRIBER_GET_INTERFACE (self)->Subscribe (self, keys, keys_length1, values, undeterminable_keys, undeterminable_keys_length1);
+}
+
+
+void context_provider_dbus_subscriber_Unsubscribe (ContextProviderDBusSubscriber* self, char** keys, int keys_length1) {
+ CONTEXT_PROVIDER_DBUS_SUBSCRIBER_GET_INTERFACE (self)->Unsubscribe (self, keys, keys_length1);
+}
+
+
+void _context_provider_dbus_subscriber_dbus_unregister (DBusConnection* connection, void* user_data) {
+}
+
+
+static DBusMessage* _dbus_context_provider_dbus_subscriber_introspect (ContextProviderDBusSubscriber* self, DBusConnection* connection, DBusMessage* message) {
+ DBusMessage* reply;
+ DBusMessageIter iter;
+ GString* xml_data;
+ char** children;
+ int i;
+ reply = dbus_message_new_method_return (message);
+ dbus_message_iter_init_append (reply, &iter);
+ xml_data = g_string_new ("<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n");
+ g_string_append (xml_data, "<node>\n<interface name=\"org.freedesktop.DBus.Introspectable\">\n <method name=\"Introspect\">\n <arg name=\"data\" direction=\"out\" type=\"s\"/>\n </method>\n</interface>\n<interface name=\"org.freedesktop.DBus.Properties\">\n <method name=\"Get\">\n <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n <arg name=\"propname\" direction=\"in\" type=\"s\"/>\n <arg name=\"value\" direction=\"out\" type=\"v\"/>\n </method>\n <method name=\"Set\">\n <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n <arg name=\"propname\" direction=\"in\" type=\"s\"/>\n <arg name=\"value\" direction=\"in\" type=\"v\"/>\n </method>\n <method name=\"GetAll\">\n <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n <arg name=\"props\" direction=\"out\" type=\"a{sv}\"/>\n </method>\n</interface>\n<interface name=\"org.freedesktop.ContextKit.Subscriber\">\n <method name=\"Subscribe\">\n <arg name=\"keys\" type=\"as\" direction=\"in\"/>\n <arg name=\"values\" type=\"a{sv}\" direction=\"out\"/>\n <arg name=\"undeterminable_keys\" type=\"as\" direction=\"out\"/>\n </method>\n <method name=\"Unsubscribe\">\n <arg name=\"keys\" type=\"as\" direction=\"in\"/>\n </method>\n <signal name=\"Changed\">\n <arg name=\"values\" type=\"a{sv}\"/>\n <arg name=\"undeterminable_keys\" type=\"as\"/>\n </signal>\n</interface>\n");
+ dbus_connection_list_registered (connection, g_object_get_data ((GObject *) self, "dbus_object_path"), &children);
+ for (i = 0; children[i]; i++) {
+ g_string_append_printf (xml_data, "<node name=\"%s\"/>\n", children[i]);
+ }
+ g_string_append (xml_data, "</node>\n");
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &xml_data->str);
+ g_string_free (xml_data, TRUE);
+ return reply;
+}
+
+
+static DBusMessage* _dbus_context_provider_dbus_subscriber_property_get_all (ContextProviderDBusSubscriber* self, DBusConnection* connection, DBusMessage* message) {
+ DBusMessage* reply;
+ DBusMessageIter iter, reply_iter, subiter;
+ char* interface_name;
+ const char* _tmp50;
+ if (strcmp (dbus_message_get_signature (message), "s")) {
+ return NULL;
+ }
+ dbus_message_iter_init (message, &iter);
+ reply = dbus_message_new_method_return (message);
+ dbus_message_iter_init_append (reply, &reply_iter);
+ dbus_message_iter_get_basic (&iter, &_tmp50);
+ dbus_message_iter_next (&iter);
+ interface_name = g_strdup (_tmp50);
+ if (strcmp (interface_name, "org.freedesktop.ContextKit.Subscriber") == 0) {
+ dbus_message_iter_open_container (&reply_iter, DBUS_TYPE_ARRAY, "{sv}", &subiter);
+ dbus_message_iter_close_container (&reply_iter, &subiter);
+ } else {
+ return NULL;
+ }
+ return reply;
+}
+
+
+static DBusMessage* _dbus_context_provider_dbus_subscriber_Subscribe (ContextProviderDBusSubscriber* self, DBusConnection* connection, DBusMessage* message) {
+ DBusMessageIter iter;
+ GError* error;
+ char** keys;
+ int keys_length1;
+ char** _tmp51;
+ int _tmp51_length;
+ int _tmp51_size;
+ int _tmp51_length1;
+ DBusMessageIter _tmp52;
+ GHashTable* values;
+ char** undeterminable_keys;
+ int undeterminable_keys_length1;
+ DBusMessage* reply;
+ DBusMessageIter _tmp54, _tmp55;
+ GHashTableIter _tmp56;
+ gpointer _tmp57, _tmp58;
+ char** _tmp69;
+ DBusMessageIter _tmp70;
+ int _tmp71;
+ error = NULL;
+ if (strcmp (dbus_message_get_signature (message), "as")) {
+ return NULL;
+ }
+ dbus_message_iter_init (message, &iter);
+ keys = NULL;
+ keys_length1 = 0;
+ _tmp51 = g_new (char*, 5);
+ _tmp51_length = 0;
+ _tmp51_size = 4;
+ _tmp51_length1 = 0;
+ dbus_message_iter_recurse (&iter, &_tmp52);
+ for (; dbus_message_iter_get_arg_type (&_tmp52); _tmp51_length1++) {
+ const char* _tmp53;
+ if (_tmp51_size == _tmp51_length) {
+ _tmp51_size = 2 * _tmp51_size;
+ _tmp51 = g_renew (char*, _tmp51, _tmp51_size + 1);
+ }
+ dbus_message_iter_get_basic (&_tmp52, &_tmp53);
+ dbus_message_iter_next (&_tmp52);
+ _tmp51[_tmp51_length++] = g_strdup (_tmp53);
+ }
+ keys_length1 = _tmp51_length1;
+ _tmp51[_tmp51_length] = NULL;
+ dbus_message_iter_next (&iter);
+ keys = _tmp51;
+ values = NULL;
+ undeterminable_keys = NULL;
+ undeterminable_keys_length1 = 0;
+ context_provider_dbus_subscriber_Subscribe (self, keys, keys_length1, &values, &undeterminable_keys, &undeterminable_keys_length1);
+ reply = dbus_message_new_method_return (message);
+ dbus_message_iter_init_append (reply, &iter);
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "{sv}", &_tmp54);
+ g_hash_table_iter_init (&_tmp56, values);
+ while (g_hash_table_iter_next (&_tmp56, &_tmp57, &_tmp58)) {
+ char* _key;
+ GValue* _value;
+ const char* _tmp59;
+ DBusMessageIter _tmp60;
+ dbus_message_iter_open_container (&_tmp54, DBUS_TYPE_DICT_ENTRY, NULL, &_tmp55);
+ _key = (char*) _tmp57;
+ _value = (GValue*) _tmp58;
+ _tmp59 = _key;
+ dbus_message_iter_append_basic (&_tmp55, DBUS_TYPE_STRING, &_tmp59);
+ if (G_VALUE_TYPE (&(*_value)) == G_TYPE_UCHAR) {
+ guint8 _tmp61;
+ dbus_message_iter_open_container (&_tmp55, DBUS_TYPE_VARIANT, "y", &_tmp60);
+ _tmp61 = g_value_get_uchar (&(*_value));
+ dbus_message_iter_append_basic (&_tmp60, DBUS_TYPE_BYTE, &_tmp61);
+ dbus_message_iter_close_container (&_tmp55, &_tmp60);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_BOOLEAN) {
+ dbus_bool_t _tmp62;
+ dbus_message_iter_open_container (&_tmp55, DBUS_TYPE_VARIANT, "b", &_tmp60);
+ _tmp62 = g_value_get_boolean (&(*_value));
+ dbus_message_iter_append_basic (&_tmp60, DBUS_TYPE_BOOLEAN, &_tmp62);
+ dbus_message_iter_close_container (&_tmp55, &_tmp60);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_INT) {
+ dbus_int32_t _tmp63;
+ dbus_message_iter_open_container (&_tmp55, DBUS_TYPE_VARIANT, "i", &_tmp60);
+ _tmp63 = g_value_get_int (&(*_value));
+ dbus_message_iter_append_basic (&_tmp60, DBUS_TYPE_INT32, &_tmp63);
+ dbus_message_iter_close_container (&_tmp55, &_tmp60);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_UINT) {
+ dbus_uint32_t _tmp64;
+ dbus_message_iter_open_container (&_tmp55, DBUS_TYPE_VARIANT, "u", &_tmp60);
+ _tmp64 = g_value_get_uint (&(*_value));
+ dbus_message_iter_append_basic (&_tmp60, DBUS_TYPE_UINT32, &_tmp64);
+ dbus_message_iter_close_container (&_tmp55, &_tmp60);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_INT64) {
+ dbus_int64_t _tmp65;
+ dbus_message_iter_open_container (&_tmp55, DBUS_TYPE_VARIANT, "x", &_tmp60);
+ _tmp65 = g_value_get_int64 (&(*_value));
+ dbus_message_iter_append_basic (&_tmp60, DBUS_TYPE_INT64, &_tmp65);
+ dbus_message_iter_close_container (&_tmp55, &_tmp60);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_UINT64) {
+ dbus_uint64_t _tmp66;
+ dbus_message_iter_open_container (&_tmp55, DBUS_TYPE_VARIANT, "t", &_tmp60);
+ _tmp66 = g_value_get_uint64 (&(*_value));
+ dbus_message_iter_append_basic (&_tmp60, DBUS_TYPE_UINT64, &_tmp66);
+ dbus_message_iter_close_container (&_tmp55, &_tmp60);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_DOUBLE) {
+ double _tmp67;
+ dbus_message_iter_open_container (&_tmp55, DBUS_TYPE_VARIANT, "d", &_tmp60);
+ _tmp67 = g_value_get_double (&(*_value));
+ dbus_message_iter_append_basic (&_tmp60, DBUS_TYPE_DOUBLE, &_tmp67);
+ dbus_message_iter_close_container (&_tmp55, &_tmp60);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_STRING) {
+ const char* _tmp68;
+ dbus_message_iter_open_container (&_tmp55, DBUS_TYPE_VARIANT, "s", &_tmp60);
+ _tmp68 = g_value_get_string (&(*_value));
+ dbus_message_iter_append_basic (&_tmp60, DBUS_TYPE_STRING, &_tmp68);
+ dbus_message_iter_close_container (&_tmp55, &_tmp60);
+ }
+ dbus_message_iter_close_container (&_tmp54, &_tmp55);
+ }
+ dbus_message_iter_close_container (&iter, &_tmp54);
+ _tmp69 = undeterminable_keys;
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "s", &_tmp70);
+ for (_tmp71 = 0; _tmp71 < undeterminable_keys_length1; _tmp71++) {
+ const char* _tmp72;
+ _tmp72 = *(_tmp69++);
+ dbus_message_iter_append_basic (&_tmp70, DBUS_TYPE_STRING, &_tmp72);
+ }
+ dbus_message_iter_close_container (&iter, &_tmp70);
+ return reply;
+}
+
+
+static DBusMessage* _dbus_context_provider_dbus_subscriber_Unsubscribe (ContextProviderDBusSubscriber* self, DBusConnection* connection, DBusMessage* message) {
+ DBusMessageIter iter;
+ GError* error;
+ char** keys;
+ int keys_length1;
+ char** _tmp73;
+ int _tmp73_length;
+ int _tmp73_size;
+ int _tmp73_length1;
+ DBusMessageIter _tmp74;
+ DBusMessage* reply;
+ error = NULL;
+ if (strcmp (dbus_message_get_signature (message), "as")) {
+ return NULL;
+ }
+ dbus_message_iter_init (message, &iter);
+ keys = NULL;
+ keys_length1 = 0;
+ _tmp73 = g_new (char*, 5);
+ _tmp73_length = 0;
+ _tmp73_size = 4;
+ _tmp73_length1 = 0;
+ dbus_message_iter_recurse (&iter, &_tmp74);
+ for (; dbus_message_iter_get_arg_type (&_tmp74); _tmp73_length1++) {
+ const char* _tmp75;
+ if (_tmp73_size == _tmp73_length) {
+ _tmp73_size = 2 * _tmp73_size;
+ _tmp73 = g_renew (char*, _tmp73, _tmp73_size + 1);
+ }
+ dbus_message_iter_get_basic (&_tmp74, &_tmp75);
+ dbus_message_iter_next (&_tmp74);
+ _tmp73[_tmp73_length++] = g_strdup (_tmp75);
+ }
+ keys_length1 = _tmp73_length1;
+ _tmp73[_tmp73_length] = NULL;
+ dbus_message_iter_next (&iter);
+ keys = _tmp73;
+ context_provider_dbus_subscriber_Unsubscribe (self, keys, keys_length1);
+ reply = dbus_message_new_method_return (message);
+ dbus_message_iter_init_append (reply, &iter);
+ return reply;
+}
+
+
+DBusHandlerResult context_provider_dbus_subscriber_dbus_message (DBusConnection* connection, DBusMessage* message, void* object) {
+ DBusMessage* reply;
+ reply = NULL;
+ if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Introspectable", "Introspect")) {
+ reply = _dbus_context_provider_dbus_subscriber_introspect (object, connection, message);
+ } else if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Properties", "GetAll")) {
+ reply = _dbus_context_provider_dbus_subscriber_property_get_all (object, connection, message);
+ } else if (dbus_message_is_method_call (message, "org.freedesktop.ContextKit.Subscriber", "Subscribe")) {
+ reply = _dbus_context_provider_dbus_subscriber_Subscribe (object, connection, message);
+ } else if (dbus_message_is_method_call (message, "org.freedesktop.ContextKit.Subscriber", "Unsubscribe")) {
+ reply = _dbus_context_provider_dbus_subscriber_Unsubscribe (object, connection, message);
+ }
+ if (reply) {
+ dbus_connection_send (connection, reply, NULL);
+ dbus_message_unref (reply);
+ return DBUS_HANDLER_RESULT_HANDLED;
+ } else {
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+}
+
+
+static void _dbus_context_provider_dbus_subscriber_changed (GObject* _sender, GHashTable* values, char** undeterminable_keys, int undeterminable_keys_length1, DBusConnection* _connection) {
+ const char * _path;
+ DBusMessage *_message;
+ DBusMessageIter _iter;
+ DBusMessageIter _tmp76, _tmp77;
+ GHashTableIter _tmp78;
+ gpointer _tmp79, _tmp80;
+ char** _tmp91;
+ DBusMessageIter _tmp92;
+ int _tmp93;
+ _path = g_object_get_data (_sender, "dbus_object_path");
+ _message = dbus_message_new_signal (_path, "org.freedesktop.ContextKit.Subscriber", "Changed");
+ dbus_message_iter_init_append (_message, &_iter);
+ dbus_message_iter_open_container (&_iter, DBUS_TYPE_ARRAY, "{sv}", &_tmp76);
+ g_hash_table_iter_init (&_tmp78, values);
+ while (g_hash_table_iter_next (&_tmp78, &_tmp79, &_tmp80)) {
+ char* _key;
+ GValue* _value;
+ const char* _tmp81;
+ DBusMessageIter _tmp82;
+ dbus_message_iter_open_container (&_tmp76, DBUS_TYPE_DICT_ENTRY, NULL, &_tmp77);
+ _key = (char*) _tmp79;
+ _value = (GValue*) _tmp80;
+ _tmp81 = _key;
+ dbus_message_iter_append_basic (&_tmp77, DBUS_TYPE_STRING, &_tmp81);
+ if (G_VALUE_TYPE (&(*_value)) == G_TYPE_UCHAR) {
+ guint8 _tmp83;
+ dbus_message_iter_open_container (&_tmp77, DBUS_TYPE_VARIANT, "y", &_tmp82);
+ _tmp83 = g_value_get_uchar (&(*_value));
+ dbus_message_iter_append_basic (&_tmp82, DBUS_TYPE_BYTE, &_tmp83);
+ dbus_message_iter_close_container (&_tmp77, &_tmp82);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_BOOLEAN) {
+ dbus_bool_t _tmp84;
+ dbus_message_iter_open_container (&_tmp77, DBUS_TYPE_VARIANT, "b", &_tmp82);
+ _tmp84 = g_value_get_boolean (&(*_value));
+ dbus_message_iter_append_basic (&_tmp82, DBUS_TYPE_BOOLEAN, &_tmp84);
+ dbus_message_iter_close_container (&_tmp77, &_tmp82);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_INT) {
+ dbus_int32_t _tmp85;
+ dbus_message_iter_open_container (&_tmp77, DBUS_TYPE_VARIANT, "i", &_tmp82);
+ _tmp85 = g_value_get_int (&(*_value));
+ dbus_message_iter_append_basic (&_tmp82, DBUS_TYPE_INT32, &_tmp85);
+ dbus_message_iter_close_container (&_tmp77, &_tmp82);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_UINT) {
+ dbus_uint32_t _tmp86;
+ dbus_message_iter_open_container (&_tmp77, DBUS_TYPE_VARIANT, "u", &_tmp82);
+ _tmp86 = g_value_get_uint (&(*_value));
+ dbus_message_iter_append_basic (&_tmp82, DBUS_TYPE_UINT32, &_tmp86);
+ dbus_message_iter_close_container (&_tmp77, &_tmp82);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_INT64) {
+ dbus_int64_t _tmp87;
+ dbus_message_iter_open_container (&_tmp77, DBUS_TYPE_VARIANT, "x", &_tmp82);
+ _tmp87 = g_value_get_int64 (&(*_value));
+ dbus_message_iter_append_basic (&_tmp82, DBUS_TYPE_INT64, &_tmp87);
+ dbus_message_iter_close_container (&_tmp77, &_tmp82);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_UINT64) {
+ dbus_uint64_t _tmp88;
+ dbus_message_iter_open_container (&_tmp77, DBUS_TYPE_VARIANT, "t", &_tmp82);
+ _tmp88 = g_value_get_uint64 (&(*_value));
+ dbus_message_iter_append_basic (&_tmp82, DBUS_TYPE_UINT64, &_tmp88);
+ dbus_message_iter_close_container (&_tmp77, &_tmp82);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_DOUBLE) {
+ double _tmp89;
+ dbus_message_iter_open_container (&_tmp77, DBUS_TYPE_VARIANT, "d", &_tmp82);
+ _tmp89 = g_value_get_double (&(*_value));
+ dbus_message_iter_append_basic (&_tmp82, DBUS_TYPE_DOUBLE, &_tmp89);
+ dbus_message_iter_close_container (&_tmp77, &_tmp82);
+ } else if (G_VALUE_TYPE (&(*_value)) == G_TYPE_STRING) {
+ const char* _tmp90;
+ dbus_message_iter_open_container (&_tmp77, DBUS_TYPE_VARIANT, "s", &_tmp82);
+ _tmp90 = g_value_get_string (&(*_value));
+ dbus_message_iter_append_basic (&_tmp82, DBUS_TYPE_STRING, &_tmp90);
+ dbus_message_iter_close_container (&_tmp77, &_tmp82);
+ }
+ dbus_message_iter_close_container (&_tmp76, &_tmp77);
+ }
+ dbus_message_iter_close_container (&_iter, &_tmp76);
+ _tmp91 = undeterminable_keys;
+ dbus_message_iter_open_container (&_iter, DBUS_TYPE_ARRAY, "s", &_tmp92);
+ for (_tmp93 = 0; _tmp93 < undeterminable_keys_length1; _tmp93++) {
+ const char* _tmp94;
+ _tmp94 = *(_tmp91++);
+ dbus_message_iter_append_basic (&_tmp92, DBUS_TYPE_STRING, &_tmp94);
+ }
+ dbus_message_iter_close_container (&_iter, &_tmp92);
+ dbus_connection_send (_connection, _message, NULL);
+ dbus_message_unref (_message);
+}
+
+
+void context_provider_dbus_subscriber_dbus_register_object (DBusConnection* connection, const char* path, void* object) {
+ if (!g_object_get_data (object, "dbus_object_path")) {
+ g_object_set_data (object, "dbus_object_path", g_strdup (path));
+ dbus_connection_register_object_path (connection, path, &_context_provider_dbus_subscriber_dbus_path_vtable, object);
+ }
+ g_signal_connect (object, "changed", (GCallback) _dbus_context_provider_dbus_subscriber_changed, connection);
+}
+
+
+static void context_provider_dbus_subscriber_base_init (ContextProviderDBusSubscriberIface * iface) {
+ static gboolean initialized = FALSE;
+ if (!initialized) {
+ initialized = TRUE;
+ g_signal_new ("changed", CONTEXT_PROVIDER_TYPE_DBUS_SUBSCRIBER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__BOXED_BOXED_INT, G_TYPE_NONE, 3, G_TYPE_HASH_TABLE, G_TYPE_STRV, G_TYPE_INT);
+ g_type_set_qdata (CONTEXT_PROVIDER_TYPE_DBUS_SUBSCRIBER, g_quark_from_static_string ("DBusObjectVTable"), (void*) (&_context_provider_dbus_subscriber_dbus_vtable));
+ }
+}
+
+
+GType context_provider_dbus_subscriber_get_type (void) {
+ static GType context_provider_dbus_subscriber_type_id = 0;
+ if (context_provider_dbus_subscriber_type_id == 0) {
+ static const GTypeInfo g_define_type_info = { sizeof (ContextProviderDBusSubscriberIface), (GBaseInitFunc) context_provider_dbus_subscriber_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
+ context_provider_dbus_subscriber_type_id = g_type_register_static (G_TYPE_INTERFACE, "ContextProviderDBusSubscriber", &g_define_type_info, 0);
+ g_type_interface_add_prerequisite (context_provider_dbus_subscriber_type_id, G_TYPE_OBJECT);
+ }
+ return context_provider_dbus_subscriber_type_id;
+}
+
+
+G_DEFINE_TYPE_EXTENDED (ContextProviderDBusSubscriberDBusProxy, context_provider_dbus_subscriber_dbus_proxy, DBUS_TYPE_G_PROXY, 0, G_IMPLEMENT_INTERFACE (CONTEXT_PROVIDER_TYPE_DBUS_SUBSCRIBER, context_provider_dbus_subscriber_dbus_proxy_interface_init));
+ContextProviderDBusSubscriber* context_provider_dbus_subscriber_dbus_proxy_new (DBusGConnection* connection, const char* name, const char* path) {
+ ContextProviderDBusSubscriber* self;
+ char* filter;
+ self = g_object_new (context_provider_dbus_subscriber_dbus_proxy_get_type (), "connection", connection, "name", name, "path", path, "interface", "org.freedesktop.ContextKit.Subscriber", NULL);
+ dbus_connection_add_filter (dbus_g_connection_get_connection (connection), context_provider_dbus_subscriber_dbus_proxy_filter, self, NULL);
+ filter = g_strdup_printf ("type='signal',path='%s'", path);
+ dbus_bus_add_match (dbus_g_connection_get_connection (connection), filter, NULL);
+ g_free (filter);
+ return self;
+}
+
+
+static void _dbus_handle_context_provider_dbus_subscriber_changed (ContextProviderDBusSubscriber* self, DBusConnection* connection, DBusMessage* message) {
+ DBusMessageIter iter;
+ GHashTable* values;
+ GHashTable* _tmp95;
+ DBusMessageIter _tmp96;
+ DBusMessageIter _tmp97;
+ char** undeterminable_keys;
+ int undeterminable_keys_length1;
+ char** _tmp113;
+ int _tmp113_length;
+ int _tmp113_size;
+ int _tmp113_length1;
+ DBusMessageIter _tmp114;
+ DBusMessage* reply;
+ if (strcmp (dbus_message_get_signature (message), "a{sv}as")) {
+ return;
+ }
+ dbus_message_iter_init (message, &iter);
+ values = NULL;
+ _tmp95 = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+ dbus_message_iter_recurse (&iter, &_tmp96);
+ while (dbus_message_iter_get_arg_type (&_tmp96)) {
+ char* _key;
+ GValue* _value;
+ const char* _tmp98;
+ GValue _tmp99 = {0};
+ DBusMessageIter _tmp100;
+ dbus_message_iter_recurse (&_tmp96, &_tmp97);
+ dbus_message_iter_get_basic (&_tmp97, &_tmp98);
+ dbus_message_iter_next (&_tmp97);
+ _key = g_strdup (_tmp98);
+ dbus_message_iter_recurse (&_tmp97, &_tmp100);
+ if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_BYTE) {
+ guint8 _tmp101;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp101);
+ g_value_init (&_tmp99, G_TYPE_UCHAR);
+ g_value_set_uchar (&_tmp99, _tmp101);
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_BOOLEAN) {
+ dbus_bool_t _tmp102;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp102);
+ g_value_init (&_tmp99, G_TYPE_BOOLEAN);
+ g_value_set_boolean (&_tmp99, _tmp102);
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_INT16) {
+ dbus_int16_t _tmp103;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp103);
+ g_value_init (&_tmp99, G_TYPE_INT);
+ g_value_set_int (&_tmp99, _tmp103);
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_UINT16) {
+ dbus_uint16_t _tmp104;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp104);
+ g_value_init (&_tmp99, G_TYPE_UINT);
+ g_value_set_uint (&_tmp99, _tmp104);
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_INT32) {
+ dbus_int32_t _tmp105;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp105);
+ g_value_init (&_tmp99, G_TYPE_INT);
+ g_value_set_int (&_tmp99, _tmp105);
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_UINT32) {
+ dbus_uint32_t _tmp106;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp106);
+ g_value_init (&_tmp99, G_TYPE_UINT);
+ g_value_set_uint (&_tmp99, _tmp106);
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_INT64) {
+ dbus_int64_t _tmp107;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp107);
+ g_value_init (&_tmp99, G_TYPE_INT64);
+ g_value_set_int64 (&_tmp99, _tmp107);
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_UINT64) {
+ dbus_uint64_t _tmp108;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp108);
+ g_value_init (&_tmp99, G_TYPE_UINT64);
+ g_value_set_uint64 (&_tmp99, _tmp108);
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_DOUBLE) {
+ double _tmp109;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp109);
+ g_value_init (&_tmp99, G_TYPE_DOUBLE);
+ g_value_set_double (&_tmp99, _tmp109);
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_STRING) {
+ const char* _tmp110;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp110);
+ g_value_init (&_tmp99, G_TYPE_STRING);
+ g_value_take_string (&_tmp99, g_strdup (_tmp110));
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_OBJECT_PATH) {
+ const char* _tmp111;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp111);
+ g_value_init (&_tmp99, G_TYPE_STRING);
+ g_value_take_string (&_tmp99, g_strdup (_tmp111));
+ } else if (dbus_message_iter_get_arg_type (&_tmp100) == DBUS_TYPE_SIGNATURE) {
+ const char* _tmp112;
+ dbus_message_iter_get_basic (&_tmp100, &_tmp112);
+ g_value_init (&_tmp99, G_TYPE_STRING);
+ g_value_take_string (&_tmp99, g_strdup (_tmp112));
+ }
+ dbus_message_iter_next (&_tmp97);
+ _value = g_memdup (&_tmp99, sizeof (GValue));
+ g_hash_table_insert (_tmp95, _key, _value);
+ dbus_message_iter_next (&_tmp96);
+ }
+ dbus_message_iter_next (&iter);
+ values = _tmp95;
+ undeterminable_keys = NULL;
+ undeterminable_keys_length1 = 0;
+ _tmp113 = g_new (char*, 5);
+ _tmp113_length = 0;
+ _tmp113_size = 4;
+ _tmp113_length1 = 0;
+ dbus_message_iter_recurse (&iter, &_tmp114);
+ for (; dbus_message_iter_get_arg_type (&_tmp114); _tmp113_length1++) {
+ const char* _tmp115;
+ if (_tmp113_size == _tmp113_length) {
+ _tmp113_size = 2 * _tmp113_size;
+ _tmp113 = g_renew (char*, _tmp113, _tmp113_size + 1);
+ }
+ dbus_message_iter_get_basic (&_tmp114, &_tmp115);
+ dbus_message_iter_next (&_tmp114);
+ _tmp113[_tmp113_length++] = g_strdup (_tmp115);
+ }
+ undeterminable_keys_length1 = _tmp113_length1;
+ _tmp113[_tmp113_length] = NULL;
+ dbus_message_iter_next (&iter);
+ undeterminable_keys = _tmp113;
+ g_signal_emit_by_name (self, "changed", values, undeterminable_keys, undeterminable_keys_length1);
+}
+
+
+DBusHandlerResult context_provider_dbus_subscriber_dbus_proxy_filter (DBusConnection* connection, DBusMessage* message, void* user_data) {
+ if (dbus_message_has_path (message, dbus_g_proxy_get_path (user_data))) {
+ if (dbus_message_is_signal (message, "org.freedesktop.ContextKit.Subscriber", "Changed")) {
+ _dbus_handle_context_provider_dbus_subscriber_changed (user_data, connection, message);
+ }
+ }
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+
+static void context_provider_dbus_subscriber_dbus_proxy_dispose (GObject* self) {
+ DBusGConnection *connection;
+ g_object_get (self, "connection", &connection, NULL);
+ dbus_connection_remove_filter (dbus_g_connection_get_connection (connection), context_provider_dbus_subscriber_dbus_proxy_filter, self);
+ G_OBJECT_CLASS (context_provider_dbus_subscriber_dbus_proxy_parent_class)->dispose (self);
+}
+
+
+static void context_provider_dbus_subscriber_dbus_proxy_class_init (ContextProviderDBusSubscriberDBusProxyClass* klass) {
+ G_OBJECT_CLASS (klass)->dispose = context_provider_dbus_subscriber_dbus_proxy_dispose;
+}
+
+
+static void context_provider_dbus_subscriber_dbus_proxy_init (ContextProviderDBusSubscriberDBusProxy* self) {
+}
+
+
+static void context_provider_dbus_subscriber_dbus_proxy_Subscribe (ContextProviderDBusSubscriber* self, char** keys, int keys_length1, GHashTable** values, char*** undeterminable_keys, int* undeterminable_keys_length1) {
+ DBusGConnection *_connection;
+ DBusMessage *_message, *_reply;
+ DBusMessageIter _iter;
+ char** _tmp116;
+ DBusMessageIter _tmp117;
+ int _tmp118;
+ GHashTable* _values;
+ GHashTable* _tmp120;
+ DBusMessageIter _tmp121;
+ DBusMessageIter _tmp122;
+ char** _undeterminable_keys;
+ int _undeterminable_keys_length1;
+ char** _tmp138;
+ int _tmp138_length;
+ int _tmp138_size;
+ int _tmp138_length1;
+ DBusMessageIter _tmp139;
+ _message = dbus_message_new_method_call (dbus_g_proxy_get_bus_name ((DBusGProxy*) self), dbus_g_proxy_get_path ((DBusGProxy*) self), "org.freedesktop.ContextKit.Subscriber", "Subscribe");
+ dbus_message_iter_init_append (_message, &_iter);
+ _tmp116 = keys;
+ dbus_message_iter_open_container (&_iter, DBUS_TYPE_ARRAY, "s", &_tmp117);
+ for (_tmp118 = 0; _tmp118 < keys_length1; _tmp118++) {
+ const char* _tmp119;
+ _tmp119 = *(_tmp116++);
+ dbus_message_iter_append_basic (&_tmp117, DBUS_TYPE_STRING, &_tmp119);
+ }
+ dbus_message_iter_close_container (&_iter, &_tmp117);
+ g_object_get (self, "connection", &_connection, NULL);
+ _reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (_connection), _message, -1, NULL);
+ dbus_g_connection_unref (_connection);
+ dbus_message_unref (_message);
+ dbus_message_iter_init (_reply, &_iter);
+ _tmp120 = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+ dbus_message_iter_recurse (&_iter, &_tmp121);
+ while (dbus_message_iter_get_arg_type (&_tmp121)) {
+ char* _key;
+ GValue* _value;
+ const char* _tmp123;
+ GValue _tmp124 = {0};
+ DBusMessageIter _tmp125;
+ dbus_message_iter_recurse (&_tmp121, &_tmp122);
+ dbus_message_iter_get_basic (&_tmp122, &_tmp123);
+ dbus_message_iter_next (&_tmp122);
+ _key = g_strdup (_tmp123);
+ dbus_message_iter_recurse (&_tmp122, &_tmp125);
+ if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_BYTE) {
+ guint8 _tmp126;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp126);
+ g_value_init (&_tmp124, G_TYPE_UCHAR);
+ g_value_set_uchar (&_tmp124, _tmp126);
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_BOOLEAN) {
+ dbus_bool_t _tmp127;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp127);
+ g_value_init (&_tmp124, G_TYPE_BOOLEAN);
+ g_value_set_boolean (&_tmp124, _tmp127);
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_INT16) {
+ dbus_int16_t _tmp128;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp128);
+ g_value_init (&_tmp124, G_TYPE_INT);
+ g_value_set_int (&_tmp124, _tmp128);
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_UINT16) {
+ dbus_uint16_t _tmp129;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp129);
+ g_value_init (&_tmp124, G_TYPE_UINT);
+ g_value_set_uint (&_tmp124, _tmp129);
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_INT32) {
+ dbus_int32_t _tmp130;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp130);
+ g_value_init (&_tmp124, G_TYPE_INT);
+ g_value_set_int (&_tmp124, _tmp130);
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_UINT32) {
+ dbus_uint32_t _tmp131;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp131);
+ g_value_init (&_tmp124, G_TYPE_UINT);
+ g_value_set_uint (&_tmp124, _tmp131);
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_INT64) {
+ dbus_int64_t _tmp132;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp132);
+ g_value_init (&_tmp124, G_TYPE_INT64);
+ g_value_set_int64 (&_tmp124, _tmp132);
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_UINT64) {
+ dbus_uint64_t _tmp133;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp133);
+ g_value_init (&_tmp124, G_TYPE_UINT64);
+ g_value_set_uint64 (&_tmp124, _tmp133);
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_DOUBLE) {
+ double _tmp134;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp134);
+ g_value_init (&_tmp124, G_TYPE_DOUBLE);
+ g_value_set_double (&_tmp124, _tmp134);
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_STRING) {
+ const char* _tmp135;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp135);
+ g_value_init (&_tmp124, G_TYPE_STRING);
+ g_value_take_string (&_tmp124, g_strdup (_tmp135));
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_OBJECT_PATH) {
+ const char* _tmp136;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp136);
+ g_value_init (&_tmp124, G_TYPE_STRING);
+ g_value_take_string (&_tmp124, g_strdup (_tmp136));
+ } else if (dbus_message_iter_get_arg_type (&_tmp125) == DBUS_TYPE_SIGNATURE) {
+ const char* _tmp137;
+ dbus_message_iter_get_basic (&_tmp125, &_tmp137);
+ g_value_init (&_tmp124, G_TYPE_STRING);
+ g_value_take_string (&_tmp124, g_strdup (_tmp137));
+ }
+ dbus_message_iter_next (&_tmp122);
+ _value = g_memdup (&_tmp124, sizeof (GValue));
+ g_hash_table_insert (_tmp120, _key, _value);
+ dbus_message_iter_next (&_tmp121);
+ }
+ dbus_message_iter_next (&_iter);
+ _values = _tmp120;
+ *values = _values;
+ _undeterminable_keys_length1 = 0;
+ _tmp138 = g_new (char*, 5);
+ _tmp138_length = 0;
+ _tmp138_size = 4;
+ _tmp138_length1 = 0;
+ dbus_message_iter_recurse (&_iter, &_tmp139);
+ for (; dbus_message_iter_get_arg_type (&_tmp139); _tmp138_length1++) {
+ const char* _tmp140;
+ if (_tmp138_size == _tmp138_length) {
+ _tmp138_size = 2 * _tmp138_size;
+ _tmp138 = g_renew (char*, _tmp138, _tmp138_size + 1);
+ }
+ dbus_message_iter_get_basic (&_tmp139, &_tmp140);
+ dbus_message_iter_next (&_tmp139);
+ _tmp138[_tmp138_length++] = g_strdup (_tmp140);
+ }
+ _undeterminable_keys_length1 = _tmp138_length1;
+ _tmp138[_tmp138_length] = NULL;
+ dbus_message_iter_next (&_iter);
+ _undeterminable_keys = _tmp138;
+ *undeterminable_keys = _undeterminable_keys;
+ *undeterminable_keys_length1 = _undeterminable_keys_length1;
+ dbus_message_unref (_reply);
+}
+
+
+static void context_provider_dbus_subscriber_dbus_proxy_Unsubscribe (ContextProviderDBusSubscriber* self, char** keys, int keys_length1) {
+ DBusGConnection *_connection;
+ DBusMessage *_message, *_reply;
+ DBusMessageIter _iter;
+ char** _tmp141;
+ DBusMessageIter _tmp142;
+ int _tmp143;
+ _message = dbus_message_new_method_call (dbus_g_proxy_get_bus_name ((DBusGProxy*) self), dbus_g_proxy_get_path ((DBusGProxy*) self), "org.freedesktop.ContextKit.Subscriber", "Unsubscribe");
+ dbus_message_iter_init_append (_message, &_iter);
+ _tmp141 = keys;
+ dbus_message_iter_open_container (&_iter, DBUS_TYPE_ARRAY, "s", &_tmp142);
+ for (_tmp143 = 0; _tmp143 < keys_length1; _tmp143++) {
+ const char* _tmp144;
+ _tmp144 = *(_tmp141++);
+ dbus_message_iter_append_basic (&_tmp142, DBUS_TYPE_STRING, &_tmp144);
+ }
+ dbus_message_iter_close_container (&_iter, &_tmp142);
+ g_object_get (self, "connection", &_connection, NULL);
+ _reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (_connection), _message, -1, NULL);
+ dbus_g_connection_unref (_connection);
+ dbus_message_unref (_message);
+ dbus_message_iter_init (_reply, &_iter);
+ dbus_message_unref (_reply);
+}
+
+
+static void context_provider_dbus_subscriber_dbus_proxy_interface_init (ContextProviderDBusSubscriberIface* iface) {
+ iface->Subscribe = context_provider_dbus_subscriber_dbus_proxy_Subscribe;
+ iface->Unsubscribe = context_provider_dbus_subscriber_dbus_proxy_Unsubscribe;
+}
+
+
+static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object) {
+ const _DBusObjectVTable * vtable;
+ vtable = g_type_get_qdata (G_TYPE_FROM_INSTANCE (object), g_quark_from_static_string ("DBusObjectVTable"));
+ if (vtable) {
+ vtable->register_object (connection, path, object);
+ } else {
+ g_warning ("Object does not implement any D-Bus interface");
+ }
+}
+
+
+
+static void g_cclosure_user_marshal_VOID__BOXED_BOXED_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
+ typedef void (*GMarshalFunc_VOID__BOXED_BOXED_INT) (gpointer data1, gpointer arg_1, gpointer arg_2, gint arg_3, gpointer data2);
+ register GMarshalFunc_VOID__BOXED_BOXED_INT callback;
+ register GCClosure * cc;
+ register gpointer data1, data2;
+ cc = (GCClosure *) closure;
+ g_return_if_fail (n_param_values == 4);
+ if (G_CCLOSURE_SWAP_DATA (closure)) {
+ data1 = closure->data;
+ data2 = param_values->data[0].v_pointer;
+ } else {
+ data1 = param_values->data[0].v_pointer;
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__BOXED_BOXED_INT) (marshal_data ? marshal_data : cc->callback);
+ callback (data1, g_value_get_boxed (param_values + 1), g_value_get_boxed (param_values + 2), g_value_get_int (param_values + 3), data2);
+}
+
+
+