From f2a2eefabf1252301070f249f2249758e648f5bf Mon Sep 17 00:00:00 2001 From: Matt Ranostay Date: Tue, 5 Sep 2017 13:22:28 -0700 Subject: binding: media: add binding to its own repo Initial commit for agl-service-media repo. This change enables cmake builds, and it being a standalone binding independent of the MediaPlayer application. Bug-AGL: SPEC-848 Change-Id: I1234c0d0dde4379b5697cc3fe3e16e27f8b73a7c Signed-off-by: Matt Ranostay --- .gitmodules | 3 + CMakeLists.txt | 21 + LICENSE | 54 + binding.pri | 6 - binding.pro | 16 - binding/CMakeLists.txt | 43 + binding/gdbus/api/org.lightmediascanner.xml | 75 + binding/gdbus/generate_interfaces.sh | 9 + binding/gdbus/lightmediascanner_interface.c | 5755 +++++++++++++++++++++++++++ binding/gdbus/lightmediascanner_interface.h | 896 +++++ binding/media-api.c | 173 + binding/media-manager.c | 294 ++ binding/media-manager.h | 103 + conf.d/app-templates | 1 + conf.d/autobuild/agl/autobuild | 60 + conf.d/autobuild/linux/autobuild | 60 + conf.d/cmake/config.cmake | 153 + conf.d/wgt/config.xml.in | 22 + export.map | 1 - gdbus/api/org.lightmediascanner.xml | 75 - gdbus/generate_interfaces.sh | 9 - gdbus/lightmediascanner_interface.c | 5755 --------------------------- gdbus/lightmediascanner_interface.h | 896 ----- mediaplayer-api.c | 173 - mediaplayer-manager.c | 294 -- mediaplayer-manager.h | 103 - 26 files changed, 7722 insertions(+), 7328 deletions(-) create mode 100644 .gitmodules create mode 100644 CMakeLists.txt create mode 100644 LICENSE delete mode 100644 binding.pri delete mode 100644 binding.pro create mode 100644 binding/CMakeLists.txt create mode 100644 binding/gdbus/api/org.lightmediascanner.xml create mode 100755 binding/gdbus/generate_interfaces.sh create mode 100644 binding/gdbus/lightmediascanner_interface.c create mode 100644 binding/gdbus/lightmediascanner_interface.h create mode 100644 binding/media-api.c create mode 100644 binding/media-manager.c create mode 100644 binding/media-manager.h create mode 160000 conf.d/app-templates create mode 100755 conf.d/autobuild/agl/autobuild create mode 100755 conf.d/autobuild/linux/autobuild create mode 100644 conf.d/cmake/config.cmake create mode 100644 conf.d/wgt/config.xml.in delete mode 100644 export.map delete mode 100644 gdbus/api/org.lightmediascanner.xml delete mode 100755 gdbus/generate_interfaces.sh delete mode 100644 gdbus/lightmediascanner_interface.c delete mode 100644 gdbus/lightmediascanner_interface.h delete mode 100644 mediaplayer-api.c delete mode 100644 mediaplayer-manager.c delete mode 100644 mediaplayer-manager.h diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b545da1 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "conf.d/app-templates"] + path = conf.d/app-templates + url = https://gerrit.automotivelinux.org/gerrit/apps/app-templates diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b485097 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,21 @@ +########################################################################### +# Copyright 2015, 2016, 2017 IoT.bzh +# +# author: Romain Forlot +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + +CMAKE_MINIMUM_REQUIRED(VERSION 3.3) + +include(${CMAKE_CURRENT_SOURCE_DIR}/conf.d/cmake/config.cmake) diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..31c692a --- /dev/null +++ b/LICENSE @@ -0,0 +1,54 @@ +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + You must give any other recipients of the Work or Derivative Works a copy of this License; and + You must cause any modified files to carry prominent notices stating that You changed the files; and + You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS diff --git a/binding.pri b/binding.pri deleted file mode 100644 index 3448a56..0000000 --- a/binding.pri +++ /dev/null @@ -1,6 +0,0 @@ -TEMPLATE = lib -CONFIG += plugin use_c_linker -CONFIG -= qt -QMAKE_CFLAGS += -Wextra -Wconversion -Wno-unused-parameter -Werror=maybe-uninitialized -Werror=implicit-function-declaration -ffunction-sections -fdata-sections -Wl,--as-needed -Wl,--gc-sections - -DESTDIR = $${OUT_PWD}/../package/root/lib diff --git a/binding.pro b/binding.pro deleted file mode 100644 index 8a3ef73..0000000 --- a/binding.pro +++ /dev/null @@ -1,16 +0,0 @@ -TARGET = mediaplayer-binding - -HEADERS = mediaplayer-manager.h \ - gdbus/lightmediascanner_interface.h - -SOURCES = mediaplayer-api.c \ - mediaplayer-manager.c \ - gdbus/lightmediascanner_interface.c - -LIBS += -Wl,--version-script=$$PWD/export.map - -CONFIG += link_pkgconfig -INCLUDEPATH += $$PWD/gdbus -PKGCONFIG += json-c afb-daemon sqlite3 glib-2.0 gio-2.0 gio-unix-2.0 zlib - -include(binding.pri) diff --git a/binding/CMakeLists.txt b/binding/CMakeLists.txt new file mode 100644 index 0000000..bbb6fd6 --- /dev/null +++ b/binding/CMakeLists.txt @@ -0,0 +1,43 @@ +########################################################################### +# Copyright 2015, 2016, 2017 IoT.bzh +# +# author: Fulup Ar Foll +# contrib: Romain Forlot +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + +# Add target to project dependency list +PROJECT_TARGET_ADD(mediascanner-binding) + + # Define project Targets + add_library(${TARGET_NAME} MODULE + media-api.c + media-manager.c + gdbus/lightmediascanner_interface.c) + + # Binder exposes a unique public entry point + SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES + PREFIX "libafm-" + LABELS "BINDING" + LINK_FLAGS ${BINDINGS_LINK_FLAG} + OUTPUT_NAME ${TARGET_NAME} + ) + + # Library dependencies (include updates automatically) + TARGET_LINK_LIBRARIES(${TARGET_NAME} ${link_libraries}) + + # installation directory + INSTALL(TARGETS ${TARGET_NAME} + LIBRARY DESTINATION ${BINDINGS_INSTALL_DIR}) + diff --git a/binding/gdbus/api/org.lightmediascanner.xml b/binding/gdbus/api/org.lightmediascanner.xml new file mode 100644 index 0000000..1651b47 --- /dev/null +++ b/binding/gdbus/api/org.lightmediascanner.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/binding/gdbus/generate_interfaces.sh b/binding/gdbus/generate_interfaces.sh new file mode 100755 index 0000000..f5cbc66 --- /dev/null +++ b/binding/gdbus/generate_interfaces.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +CG=gdbus-codegen +API=api + +$CG \ + --interface-prefix org.lightmediascanner. \ + --generate-c-code lightmediascanner_interface \ + $API/org.lightmediascanner.xml diff --git a/binding/gdbus/lightmediascanner_interface.c b/binding/gdbus/lightmediascanner_interface.c new file mode 100644 index 0000000..6269a7d --- /dev/null +++ b/binding/gdbus/lightmediascanner_interface.c @@ -0,0 +1,5755 @@ +/* + * Generated by gdbus-codegen 2.52.0. DO NOT EDIT. + * + * The license of this code is the same as for the source it was derived from. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "lightmediascanner_interface.h" + +#include +#ifdef G_OS_UNIX +# include +#endif + +typedef struct +{ + GDBusArgInfo parent_struct; + gboolean use_gvariant; +} _ExtendedGDBusArgInfo; + +typedef struct +{ + GDBusMethodInfo parent_struct; + const gchar *signal_name; + gboolean pass_fdlist; +} _ExtendedGDBusMethodInfo; + +typedef struct +{ + GDBusSignalInfo parent_struct; + const gchar *signal_name; +} _ExtendedGDBusSignalInfo; + +typedef struct +{ + GDBusPropertyInfo parent_struct; + const gchar *hyphen_name; + gboolean use_gvariant; +} _ExtendedGDBusPropertyInfo; + +typedef struct +{ + GDBusInterfaceInfo parent_struct; + const gchar *hyphen_name; +} _ExtendedGDBusInterfaceInfo; + +typedef struct +{ + const _ExtendedGDBusPropertyInfo *info; + guint prop_id; + GValue orig_value; /* the value before the change */ +} ChangedProperty; + +static void +_changed_property_free (ChangedProperty *data) +{ + g_value_unset (&data->orig_value); + g_free (data); +} + +static gboolean +_g_strv_equal0 (gchar **a, gchar **b) +{ + gboolean ret = FALSE; + guint n; + if (a == NULL && b == NULL) + { + ret = TRUE; + goto out; + } + if (a == NULL || b == NULL) + goto out; + if (g_strv_length (a) != g_strv_length (b)) + goto out; + for (n = 0; a[n] != NULL; n++) + if (g_strcmp0 (a[n], b[n]) != 0) + goto out; + ret = TRUE; +out: + return ret; +} + +static gboolean +_g_variant_equal0 (GVariant *a, GVariant *b) +{ + gboolean ret = FALSE; + if (a == NULL && b == NULL) + { + ret = TRUE; + goto out; + } + if (a == NULL || b == NULL) + goto out; + ret = g_variant_equal (a, b); +out: + return ret; +} + +G_GNUC_UNUSED static gboolean +_g_value_equal (const GValue *a, const GValue *b) +{ + gboolean ret = FALSE; + g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b)); + switch (G_VALUE_TYPE (a)) + { + case G_TYPE_BOOLEAN: + ret = (g_value_get_boolean (a) == g_value_get_boolean (b)); + break; + case G_TYPE_UCHAR: + ret = (g_value_get_uchar (a) == g_value_get_uchar (b)); + break; + case G_TYPE_INT: + ret = (g_value_get_int (a) == g_value_get_int (b)); + break; + case G_TYPE_UINT: + ret = (g_value_get_uint (a) == g_value_get_uint (b)); + break; + case G_TYPE_INT64: + ret = (g_value_get_int64 (a) == g_value_get_int64 (b)); + break; + case G_TYPE_UINT64: + ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b)); + break; + case G_TYPE_DOUBLE: + { + /* Avoid -Wfloat-equal warnings by doing a direct bit compare */ + gdouble da = g_value_get_double (a); + gdouble db = g_value_get_double (b); + ret = memcmp (&da, &db, sizeof (gdouble)) == 0; + } + break; + case G_TYPE_STRING: + ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0); + break; + case G_TYPE_VARIANT: + ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b)); + break; + default: + if (G_VALUE_TYPE (a) == G_TYPE_STRV) + ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b)); + else + g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a))); + break; + } + return ret; +} + +/* ------------------------------------------------------------------------ + * Code for interface org.freedesktop.DBus.Properties + * ------------------------------------------------------------------------ + */ + +/** + * SECTION:OrgFreedesktopDBusProperties + * @title: OrgFreedesktopDBusProperties + * @short_description: Generated C code for the org.freedesktop.DBus.Properties D-Bus interface + * + * This section contains code for working with the org.freedesktop.DBus.Properties D-Bus interface in C. + */ + +/* ---- Introspection data for org.freedesktop.DBus.Properties ---- */ + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_IN_ARG_interface_name = +{ + { + -1, + (gchar *) "interface_name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_IN_ARG_property_name = +{ + { + -1, + (gchar *) "property_name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_IN_ARG_pointers[] = +{ + &_org_freedesktop_dbus_properties_method_info_get_IN_ARG_interface_name, + &_org_freedesktop_dbus_properties_method_info_get_IN_ARG_property_name, + NULL +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_OUT_ARG_value = +{ + { + -1, + (gchar *) "value", + (gchar *) "v", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_OUT_ARG_pointers[] = +{ + &_org_freedesktop_dbus_properties_method_info_get_OUT_ARG_value, + NULL +}; + +static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_properties_method_info_get = +{ + { + -1, + (gchar *) "Get", + (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_IN_ARG_pointers, + (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_OUT_ARG_pointers, + NULL + }, + "handle-get", + FALSE +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_interface_name = +{ + { + -1, + (gchar *) "interface_name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_pointers[] = +{ + &_org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_interface_name, + NULL +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_properties = +{ + { + -1, + (gchar *) "properties", + (gchar *) "a{sv}", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_pointers[] = +{ + &_org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_properties, + NULL +}; + +static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_properties_method_info_get_all = +{ + { + -1, + (gchar *) "GetAll", + (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_pointers, + (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_pointers, + NULL + }, + "handle-get-all", + FALSE +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_set_IN_ARG_interface_name = +{ + { + -1, + (gchar *) "interface_name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_set_IN_ARG_property_name = +{ + { + -1, + (gchar *) "property_name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_set_IN_ARG_value = +{ + { + -1, + (gchar *) "value", + (gchar *) "v", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_set_IN_ARG_pointers[] = +{ + &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_interface_name, + &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_property_name, + &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_value, + NULL +}; + +static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_properties_method_info_set = +{ + { + -1, + (gchar *) "Set", + (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_pointers, + NULL, + NULL + }, + "handle-set", + FALSE +}; + +static const _ExtendedGDBusMethodInfo * const _org_freedesktop_dbus_properties_method_info_pointers[] = +{ + &_org_freedesktop_dbus_properties_method_info_get, + &_org_freedesktop_dbus_properties_method_info_get_all, + &_org_freedesktop_dbus_properties_method_info_set, + NULL +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_interface_name = +{ + { + -1, + (gchar *) "interface_name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_changed_properties = +{ + { + -1, + (gchar *) "changed_properties", + (gchar *) "a{sv}", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_invalidated_properties = +{ + { + -1, + (gchar *) "invalidated_properties", + (gchar *) "as", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_pointers[] = +{ + &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_interface_name, + &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_changed_properties, + &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_invalidated_properties, + NULL +}; + +static const _ExtendedGDBusSignalInfo _org_freedesktop_dbus_properties_signal_info_properties_changed = +{ + { + -1, + (gchar *) "PropertiesChanged", + (GDBusArgInfo **) &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_pointers, + NULL + }, + "properties-changed" +}; + +static const _ExtendedGDBusSignalInfo * const _org_freedesktop_dbus_properties_signal_info_pointers[] = +{ + &_org_freedesktop_dbus_properties_signal_info_properties_changed, + NULL +}; + +static const _ExtendedGDBusInterfaceInfo _org_freedesktop_dbus_properties_interface_info = +{ + { + -1, + (gchar *) "org.freedesktop.DBus.Properties", + (GDBusMethodInfo **) &_org_freedesktop_dbus_properties_method_info_pointers, + (GDBusSignalInfo **) &_org_freedesktop_dbus_properties_signal_info_pointers, + NULL, + NULL + }, + "org-freedesktop-dbus-properties", +}; + + +/** + * org_freedesktop_dbus_properties_interface_info: + * + * Gets a machine-readable description of the org.freedesktop.DBus.Properties D-Bus interface. + * + * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. + */ +GDBusInterfaceInfo * +org_freedesktop_dbus_properties_interface_info (void) +{ + return (GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct; +} + +/** + * org_freedesktop_dbus_properties_override_properties: + * @klass: The class structure for a #GObject-derived class. + * @property_id_begin: The property id to assign to the first overridden property. + * + * Overrides all #GObject properties in the #OrgFreedesktopDBusProperties interface for a concrete class. + * The properties are overridden in the order they are defined. + * + * Returns: The last property id. + */ +guint +org_freedesktop_dbus_properties_override_properties (GObjectClass *klass, guint property_id_begin) +{ + return property_id_begin - 1; +} + + + +/** + * OrgFreedesktopDBusProperties: + * + * Abstract interface type for the D-Bus interface org.freedesktop.DBus.Properties. + */ + +/** + * OrgFreedesktopDBusPropertiesIface: + * @parent_iface: The parent interface. + * @handle_get: Handler for the #OrgFreedesktopDBusProperties::handle-get signal. + * @handle_get_all: Handler for the #OrgFreedesktopDBusProperties::handle-get-all signal. + * @handle_set: Handler for the #OrgFreedesktopDBusProperties::handle-set signal. + * @properties_changed: Handler for the #OrgFreedesktopDBusProperties::properties-changed signal. + * + * Virtual table for the D-Bus interface org.freedesktop.DBus.Properties. + */ + +typedef OrgFreedesktopDBusPropertiesIface OrgFreedesktopDBusPropertiesInterface; +G_DEFINE_INTERFACE (OrgFreedesktopDBusProperties, org_freedesktop_dbus_properties, G_TYPE_OBJECT); + +static void +org_freedesktop_dbus_properties_default_init (OrgFreedesktopDBusPropertiesIface *iface) +{ + /* GObject signals for incoming D-Bus method calls: */ + /** + * OrgFreedesktopDBusProperties::handle-get: + * @object: A #OrgFreedesktopDBusProperties. + * @invocation: A #GDBusMethodInvocation. + * @arg_interface_name: Argument passed by remote caller. + * @arg_property_name: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the Get() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_properties_complete_get() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-get", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, handle_get), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 3, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING); + + /** + * OrgFreedesktopDBusProperties::handle-get-all: + * @object: A #OrgFreedesktopDBusProperties. + * @invocation: A #GDBusMethodInvocation. + * @arg_interface_name: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the GetAll() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_properties_complete_get_all() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-get-all", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, handle_get_all), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); + + /** + * OrgFreedesktopDBusProperties::handle-set: + * @object: A #OrgFreedesktopDBusProperties. + * @invocation: A #GDBusMethodInvocation. + * @arg_interface_name: Argument passed by remote caller. + * @arg_property_name: Argument passed by remote caller. + * @arg_value: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the Set() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_properties_complete_set() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-set", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, handle_set), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 4, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT); + + /* GObject signals for received D-Bus signals: */ + /** + * OrgFreedesktopDBusProperties::properties-changed: + * @object: A #OrgFreedesktopDBusProperties. + * @arg_interface_name: Argument. + * @arg_changed_properties: Argument. + * @arg_invalidated_properties: Argument. + * + * On the client-side, this signal is emitted whenever the D-Bus signal "PropertiesChanged" is received. + * + * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. + */ + g_signal_new ("properties-changed", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, properties_changed), + NULL, + NULL, + g_cclosure_marshal_generic, + G_TYPE_NONE, + 3, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_STRV); + +} + +/** + * org_freedesktop_dbus_properties_emit_properties_changed: + * @object: A #OrgFreedesktopDBusProperties. + * @arg_interface_name: Argument to pass with the signal. + * @arg_changed_properties: Argument to pass with the signal. + * @arg_invalidated_properties: Argument to pass with the signal. + * + * Emits the "PropertiesChanged" D-Bus signal. + */ +void +org_freedesktop_dbus_properties_emit_properties_changed ( + OrgFreedesktopDBusProperties *object, + const gchar *arg_interface_name, + GVariant *arg_changed_properties, + const gchar *const *arg_invalidated_properties) +{ + g_signal_emit_by_name (object, "properties-changed", arg_interface_name, arg_changed_properties, arg_invalidated_properties); +} + +/** + * org_freedesktop_dbus_properties_call_get: + * @proxy: A #OrgFreedesktopDBusPropertiesProxy. + * @arg_interface_name: Argument to pass with the method invocation. + * @arg_property_name: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the Get() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_properties_call_get_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_properties_call_get_sync() for the synchronous, blocking version of this method. + */ +void +org_freedesktop_dbus_properties_call_get ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + const gchar *arg_property_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "Get", + g_variant_new ("(ss)", + arg_interface_name, + arg_property_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * org_freedesktop_dbus_properties_call_get_finish: + * @proxy: A #OrgFreedesktopDBusPropertiesProxy. + * @out_value: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_call_get(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with org_freedesktop_dbus_properties_call_get(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_properties_call_get_finish ( + OrgFreedesktopDBusProperties *proxy, + GVariant **out_value, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(@v)", + out_value); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_properties_call_get_sync: + * @proxy: A #OrgFreedesktopDBusPropertiesProxy. + * @arg_interface_name: Argument to pass with the method invocation. + * @arg_property_name: Argument to pass with the method invocation. + * @out_value: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the Get() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_properties_call_get() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_properties_call_get_sync ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + const gchar *arg_property_name, + GVariant **out_value, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "Get", + g_variant_new ("(ss)", + arg_interface_name, + arg_property_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(@v)", + out_value); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_properties_call_get_all: + * @proxy: A #OrgFreedesktopDBusPropertiesProxy. + * @arg_interface_name: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the GetAll() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_properties_call_get_all_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_properties_call_get_all_sync() for the synchronous, blocking version of this method. + */ +void +org_freedesktop_dbus_properties_call_get_all ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "GetAll", + g_variant_new ("(s)", + arg_interface_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * org_freedesktop_dbus_properties_call_get_all_finish: + * @proxy: A #OrgFreedesktopDBusPropertiesProxy. + * @out_properties: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_call_get_all(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with org_freedesktop_dbus_properties_call_get_all(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_properties_call_get_all_finish ( + OrgFreedesktopDBusProperties *proxy, + GVariant **out_properties, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(@a{sv})", + out_properties); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_properties_call_get_all_sync: + * @proxy: A #OrgFreedesktopDBusPropertiesProxy. + * @arg_interface_name: Argument to pass with the method invocation. + * @out_properties: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the GetAll() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_properties_call_get_all() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_properties_call_get_all_sync ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + GVariant **out_properties, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "GetAll", + g_variant_new ("(s)", + arg_interface_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(@a{sv})", + out_properties); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_properties_call_set: + * @proxy: A #OrgFreedesktopDBusPropertiesProxy. + * @arg_interface_name: Argument to pass with the method invocation. + * @arg_property_name: Argument to pass with the method invocation. + * @arg_value: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the Set() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_properties_call_set_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_properties_call_set_sync() for the synchronous, blocking version of this method. + */ +void +org_freedesktop_dbus_properties_call_set ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + const gchar *arg_property_name, + GVariant *arg_value, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "Set", + g_variant_new ("(ss@v)", + arg_interface_name, + arg_property_name, + arg_value), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * org_freedesktop_dbus_properties_call_set_finish: + * @proxy: A #OrgFreedesktopDBusPropertiesProxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_call_set(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with org_freedesktop_dbus_properties_call_set(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_properties_call_set_finish ( + OrgFreedesktopDBusProperties *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_properties_call_set_sync: + * @proxy: A #OrgFreedesktopDBusPropertiesProxy. + * @arg_interface_name: Argument to pass with the method invocation. + * @arg_property_name: Argument to pass with the method invocation. + * @arg_value: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the Set() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_properties_call_set() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_properties_call_set_sync ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + const gchar *arg_property_name, + GVariant *arg_value, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "Set", + g_variant_new ("(ss@v)", + arg_interface_name, + arg_property_name, + arg_value), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_properties_complete_get: + * @object: A #OrgFreedesktopDBusProperties. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @value: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the Get() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +org_freedesktop_dbus_properties_complete_get ( + OrgFreedesktopDBusProperties *object, + GDBusMethodInvocation *invocation, + GVariant *value) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(@v)", + value)); +} + +/** + * org_freedesktop_dbus_properties_complete_get_all: + * @object: A #OrgFreedesktopDBusProperties. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @properties: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the GetAll() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +org_freedesktop_dbus_properties_complete_get_all ( + OrgFreedesktopDBusProperties *object, + GDBusMethodInvocation *invocation, + GVariant *properties) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(@a{sv})", + properties)); +} + +/** + * org_freedesktop_dbus_properties_complete_set: + * @object: A #OrgFreedesktopDBusProperties. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the Set() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +org_freedesktop_dbus_properties_complete_set ( + OrgFreedesktopDBusProperties *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/* ------------------------------------------------------------------------ */ + +/** + * OrgFreedesktopDBusPropertiesProxy: + * + * The #OrgFreedesktopDBusPropertiesProxy structure contains only private data and should only be accessed using the provided API. + */ + +/** + * OrgFreedesktopDBusPropertiesProxyClass: + * @parent_class: The parent class. + * + * Class structure for #OrgFreedesktopDBusPropertiesProxy. + */ + +struct _OrgFreedesktopDBusPropertiesProxyPrivate +{ + GData *qdata; +}; + +static void org_freedesktop_dbus_properties_proxy_iface_init (OrgFreedesktopDBusPropertiesIface *iface); + +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesProxy, org_freedesktop_dbus_properties_proxy, G_TYPE_DBUS_PROXY, + G_ADD_PRIVATE (OrgFreedesktopDBusPropertiesProxy) + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_proxy_iface_init)); + +#else +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesProxy, org_freedesktop_dbus_properties_proxy, G_TYPE_DBUS_PROXY, + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_proxy_iface_init)); + +#endif +static void +org_freedesktop_dbus_properties_proxy_finalize (GObject *object) +{ + OrgFreedesktopDBusPropertiesProxy *proxy = ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY (object); + g_datalist_clear (&proxy->priv->qdata); + G_OBJECT_CLASS (org_freedesktop_dbus_properties_proxy_parent_class)->finalize (object); +} + +static void +org_freedesktop_dbus_properties_proxy_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ +} + +static void +org_freedesktop_dbus_properties_proxy_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ +} + +static void +org_freedesktop_dbus_properties_proxy_g_signal (GDBusProxy *proxy, + const gchar *sender_name G_GNUC_UNUSED, + const gchar *signal_name, + GVariant *parameters) +{ + _ExtendedGDBusSignalInfo *info; + GVariantIter iter; + GVariant *child; + GValue *paramv; + gsize num_params; + gsize n; + guint signal_id; + info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, signal_name); + if (info == NULL) + return; + num_params = g_variant_n_children (parameters); + paramv = g_new0 (GValue, num_params + 1); + g_value_init (¶mv[0], TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES); + g_value_set_object (¶mv[0], proxy); + g_variant_iter_init (&iter, parameters); + n = 1; + while ((child = g_variant_iter_next_value (&iter)) != NULL) + { + _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; + if (arg_info->use_gvariant) + { + g_value_init (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); + g_variant_unref (child); + } + signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES); + g_signal_emitv (paramv, signal_id, 0, NULL); + for (n = 0; n < num_params + 1; n++) + g_value_unset (¶mv[n]); + g_free (paramv); +} + +static void +org_freedesktop_dbus_properties_proxy_g_properties_changed (GDBusProxy *_proxy, + GVariant *changed_properties, + const gchar *const *invalidated_properties) +{ + OrgFreedesktopDBusPropertiesProxy *proxy = ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY (_proxy); + guint n; + const gchar *key; + GVariantIter *iter; + _ExtendedGDBusPropertyInfo *info; + g_variant_get (changed_properties, "a{sv}", &iter); + while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) + { + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, key); + g_datalist_remove_data (&proxy->priv->qdata, key); + if (info != NULL) + g_object_notify (G_OBJECT (proxy), info->hyphen_name); + } + g_variant_iter_free (iter); + for (n = 0; invalidated_properties[n] != NULL; n++) + { + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, invalidated_properties[n]); + g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); + if (info != NULL) + g_object_notify (G_OBJECT (proxy), info->hyphen_name); + } +} + +static void +org_freedesktop_dbus_properties_proxy_init (OrgFreedesktopDBusPropertiesProxy *proxy) +{ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 + proxy->priv = org_freedesktop_dbus_properties_proxy_get_instance_private (proxy); +#else + proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxyPrivate); +#endif + + g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_freedesktop_dbus_properties_interface_info ()); +} + +static void +org_freedesktop_dbus_properties_proxy_class_init (OrgFreedesktopDBusPropertiesProxyClass *klass) +{ + GObjectClass *gobject_class; + GDBusProxyClass *proxy_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = org_freedesktop_dbus_properties_proxy_finalize; + gobject_class->get_property = org_freedesktop_dbus_properties_proxy_get_property; + gobject_class->set_property = org_freedesktop_dbus_properties_proxy_set_property; + + proxy_class = G_DBUS_PROXY_CLASS (klass); + proxy_class->g_signal = org_freedesktop_dbus_properties_proxy_g_signal; + proxy_class->g_properties_changed = org_freedesktop_dbus_properties_proxy_g_properties_changed; + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 + g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPropertiesProxyPrivate)); +#endif +} + +static void +org_freedesktop_dbus_properties_proxy_iface_init (OrgFreedesktopDBusPropertiesIface *iface) +{ +} + +/** + * org_freedesktop_dbus_properties_proxy_new: + * @connection: A #GDBusConnection. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied. + * @user_data: User data to pass to @callback. + * + * Asynchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Properties. See g_dbus_proxy_new() for more details. + * + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_properties_proxy_new_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_properties_proxy_new_sync() for the synchronous, blocking version of this constructor. + */ +void +org_freedesktop_dbus_properties_proxy_new ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL); +} + +/** + * org_freedesktop_dbus_properties_proxy_new_finish: + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_proxy_new(). + * @error: Return location for error or %NULL + * + * Finishes an operation started with org_freedesktop_dbus_properties_proxy_new(). + * + * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusProperties * +org_freedesktop_dbus_properties_proxy_new_finish ( + GAsyncResult *res, + GError **error) +{ + GObject *ret; + GObject *source_object; + source_object = g_async_result_get_source_object (res); + ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); + g_object_unref (source_object); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret); + else + return NULL; +} + +/** + * org_freedesktop_dbus_properties_proxy_new_sync: + * @connection: A #GDBusConnection. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL + * + * Synchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Properties. See g_dbus_proxy_new_sync() for more details. + * + * The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_properties_proxy_new() for the asynchronous version of this constructor. + * + * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusProperties * +org_freedesktop_dbus_properties_proxy_new_sync ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error) +{ + GInitable *ret; + ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret); + else + return NULL; +} + + +/** + * org_freedesktop_dbus_properties_proxy_new_for_bus: + * @bus_type: A #GBusType. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: A bus name (well-known or unique). + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied. + * @user_data: User data to pass to @callback. + * + * Like org_freedesktop_dbus_properties_proxy_new() but takes a #GBusType instead of a #GDBusConnection. + * + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_properties_proxy_new_for_bus_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_properties_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. + */ +void +org_freedesktop_dbus_properties_proxy_new_for_bus ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL); +} + +/** + * org_freedesktop_dbus_properties_proxy_new_for_bus_finish: + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_proxy_new_for_bus(). + * @error: Return location for error or %NULL + * + * Finishes an operation started with org_freedesktop_dbus_properties_proxy_new_for_bus(). + * + * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusProperties * +org_freedesktop_dbus_properties_proxy_new_for_bus_finish ( + GAsyncResult *res, + GError **error) +{ + GObject *ret; + GObject *source_object; + source_object = g_async_result_get_source_object (res); + ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); + g_object_unref (source_object); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret); + else + return NULL; +} + +/** + * org_freedesktop_dbus_properties_proxy_new_for_bus_sync: + * @bus_type: A #GBusType. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: A bus name (well-known or unique). + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL + * + * Like org_freedesktop_dbus_properties_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. + * + * The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_properties_proxy_new_for_bus() for the asynchronous version of this constructor. + * + * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusProperties * +org_freedesktop_dbus_properties_proxy_new_for_bus_sync ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error) +{ + GInitable *ret; + ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret); + else + return NULL; +} + + +/* ------------------------------------------------------------------------ */ + +/** + * OrgFreedesktopDBusPropertiesSkeleton: + * + * The #OrgFreedesktopDBusPropertiesSkeleton structure contains only private data and should only be accessed using the provided API. + */ + +/** + * OrgFreedesktopDBusPropertiesSkeletonClass: + * @parent_class: The parent class. + * + * Class structure for #OrgFreedesktopDBusPropertiesSkeleton. + */ + +struct _OrgFreedesktopDBusPropertiesSkeletonPrivate +{ + GValue *properties; + GList *changed_properties; + GSource *changed_properties_idle_source; + GMainContext *context; + GMutex lock; +}; + +static void +_org_freedesktop_dbus_properties_skeleton_handle_method_call ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer user_data) +{ + OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (user_data); + _ExtendedGDBusMethodInfo *info; + GVariantIter iter; + GVariant *child; + GValue *paramv; + gsize num_params; + guint num_extra; + gsize n; + guint signal_id; + GValue return_value = G_VALUE_INIT; + info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); + g_assert (info != NULL); + num_params = g_variant_n_children (parameters); + num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); + n = 0; + g_value_init (¶mv[n], TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); +#else + g_assert_not_reached (); +#endif + } + g_variant_iter_init (&iter, parameters); + while ((child = g_variant_iter_next_value (&iter)) != NULL) + { + _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; + if (arg_info->use_gvariant) + { + g_value_init (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); + g_variant_unref (child); + } + signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES); + g_value_init (&return_value, G_TYPE_BOOLEAN); + g_signal_emitv (paramv, signal_id, 0, &return_value); + if (!g_value_get_boolean (&return_value)) + g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); + g_value_unset (&return_value); + for (n = 0; n < num_params + num_extra; n++) + g_value_unset (¶mv[n]); + g_free (paramv); +} + +static GVariant * +_org_freedesktop_dbus_properties_skeleton_handle_get_property ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name G_GNUC_UNUSED, + const gchar *property_name, + GError **error, + gpointer user_data) +{ + OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (user_data); + GValue value = G_VALUE_INIT; + GParamSpec *pspec; + _ExtendedGDBusPropertyInfo *info; + GVariant *ret; + ret = NULL; + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, property_name); + g_assert (info != NULL); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); + if (pspec == NULL) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); + } + else + { + g_value_init (&value, pspec->value_type); + g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); + ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); + g_value_unset (&value); + } + return ret; +} + +static gboolean +_org_freedesktop_dbus_properties_skeleton_handle_set_property ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name G_GNUC_UNUSED, + const gchar *property_name, + GVariant *variant, + GError **error, + gpointer user_data) +{ + OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (user_data); + GValue value = G_VALUE_INIT; + GParamSpec *pspec; + _ExtendedGDBusPropertyInfo *info; + gboolean ret; + ret = FALSE; + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, property_name); + g_assert (info != NULL); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); + if (pspec == NULL) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); + } + else + { + if (info->use_gvariant) + g_value_set_variant (&value, variant); + else + g_dbus_gvariant_to_gvalue (variant, &value); + g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); + g_value_unset (&value); + ret = TRUE; + } + return ret; +} + +static const GDBusInterfaceVTable _org_freedesktop_dbus_properties_skeleton_vtable = +{ + _org_freedesktop_dbus_properties_skeleton_handle_method_call, + _org_freedesktop_dbus_properties_skeleton_handle_get_property, + _org_freedesktop_dbus_properties_skeleton_handle_set_property, + {NULL} +}; + +static GDBusInterfaceInfo * +org_freedesktop_dbus_properties_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) +{ + return org_freedesktop_dbus_properties_interface_info (); +} + +static GDBusInterfaceVTable * +org_freedesktop_dbus_properties_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) +{ + return (GDBusInterfaceVTable *) &_org_freedesktop_dbus_properties_skeleton_vtable; +} + +static GVariant * +org_freedesktop_dbus_properties_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) +{ + OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (_skeleton); + + GVariantBuilder builder; + guint n; + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); + if (_org_freedesktop_dbus_properties_interface_info.parent_struct.properties == NULL) + goto out; + for (n = 0; _org_freedesktop_dbus_properties_interface_info.parent_struct.properties[n] != NULL; n++) + { + GDBusPropertyInfo *info = _org_freedesktop_dbus_properties_interface_info.parent_struct.properties[n]; + if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) + { + GVariant *value; + value = _org_freedesktop_dbus_properties_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", info->name, NULL, skeleton); + if (value != NULL) + { + g_variant_take_ref (value); + g_variant_builder_add (&builder, "{sv}", info->name, value); + g_variant_unref (value); + } + } + } +out: + return g_variant_builder_end (&builder); +} + +static void +org_freedesktop_dbus_properties_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) +{ +} + +static void +_org_freedesktop_dbus_properties_on_signal_properties_changed ( + OrgFreedesktopDBusProperties *object, + const gchar *arg_interface_name, + GVariant *arg_changed_properties, + const gchar *const *arg_invalidated_properties) +{ + OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (object); + + GList *connections, *l; + GVariant *signal_variant; + connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); + + signal_variant = g_variant_ref_sink (g_variant_new ("(s@a{sv}^as)", + arg_interface_name, + arg_changed_properties, + arg_invalidated_properties)); + for (l = connections; l != NULL; l = l->next) + { + GDBusConnection *connection = l->data; + g_dbus_connection_emit_signal (connection, + NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", + signal_variant, NULL); + } + g_variant_unref (signal_variant); + g_list_free_full (connections, g_object_unref); +} + +static void org_freedesktop_dbus_properties_skeleton_iface_init (OrgFreedesktopDBusPropertiesIface *iface); +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesSkeleton, org_freedesktop_dbus_properties_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, + G_ADD_PRIVATE (OrgFreedesktopDBusPropertiesSkeleton) + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_skeleton_iface_init)); + +#else +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesSkeleton, org_freedesktop_dbus_properties_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_skeleton_iface_init)); + +#endif +static void +org_freedesktop_dbus_properties_skeleton_finalize (GObject *object) +{ + OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (object); + g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); + if (skeleton->priv->changed_properties_idle_source != NULL) + g_source_destroy (skeleton->priv->changed_properties_idle_source); + g_main_context_unref (skeleton->priv->context); + g_mutex_clear (&skeleton->priv->lock); + G_OBJECT_CLASS (org_freedesktop_dbus_properties_skeleton_parent_class)->finalize (object); +} + +static void +org_freedesktop_dbus_properties_skeleton_init (OrgFreedesktopDBusPropertiesSkeleton *skeleton) +{ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 + skeleton->priv = org_freedesktop_dbus_properties_skeleton_get_instance_private (skeleton); +#else + skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeletonPrivate); +#endif + + g_mutex_init (&skeleton->priv->lock); + skeleton->priv->context = g_main_context_ref_thread_default (); +} + +static void +org_freedesktop_dbus_properties_skeleton_class_init (OrgFreedesktopDBusPropertiesSkeletonClass *klass) +{ + GObjectClass *gobject_class; + GDBusInterfaceSkeletonClass *skeleton_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = org_freedesktop_dbus_properties_skeleton_finalize; + + skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); + skeleton_class->get_info = org_freedesktop_dbus_properties_skeleton_dbus_interface_get_info; + skeleton_class->get_properties = org_freedesktop_dbus_properties_skeleton_dbus_interface_get_properties; + skeleton_class->flush = org_freedesktop_dbus_properties_skeleton_dbus_interface_flush; + skeleton_class->get_vtable = org_freedesktop_dbus_properties_skeleton_dbus_interface_get_vtable; + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 + g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPropertiesSkeletonPrivate)); +#endif +} + +static void +org_freedesktop_dbus_properties_skeleton_iface_init (OrgFreedesktopDBusPropertiesIface *iface) +{ + iface->properties_changed = _org_freedesktop_dbus_properties_on_signal_properties_changed; +} + +/** + * org_freedesktop_dbus_properties_skeleton_new: + * + * Creates a skeleton object for the D-Bus interface org.freedesktop.DBus.Properties. + * + * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesSkeleton): The skeleton object. + */ +OrgFreedesktopDBusProperties * +org_freedesktop_dbus_properties_skeleton_new (void) +{ + return ORG_FREEDESKTOP_DBUS_PROPERTIES (g_object_new (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, NULL)); +} + +/* ------------------------------------------------------------------------ + * Code for interface org.freedesktop.DBus.Introspectable + * ------------------------------------------------------------------------ + */ + +/** + * SECTION:OrgFreedesktopDBusIntrospectable + * @title: OrgFreedesktopDBusIntrospectable + * @short_description: Generated C code for the org.freedesktop.DBus.Introspectable D-Bus interface + * + * This section contains code for working with the org.freedesktop.DBus.Introspectable D-Bus interface in C. + */ + +/* ---- Introspection data for org.freedesktop.DBus.Introspectable ---- */ + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_xml_data = +{ + { + -1, + (gchar *) "xml_data", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_pointers[] = +{ + &_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_xml_data, + NULL +}; + +static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_introspectable_method_info_introspect = +{ + { + -1, + (gchar *) "Introspect", + NULL, + (GDBusArgInfo **) &_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_pointers, + NULL + }, + "handle-introspect", + FALSE +}; + +static const _ExtendedGDBusMethodInfo * const _org_freedesktop_dbus_introspectable_method_info_pointers[] = +{ + &_org_freedesktop_dbus_introspectable_method_info_introspect, + NULL +}; + +static const _ExtendedGDBusInterfaceInfo _org_freedesktop_dbus_introspectable_interface_info = +{ + { + -1, + (gchar *) "org.freedesktop.DBus.Introspectable", + (GDBusMethodInfo **) &_org_freedesktop_dbus_introspectable_method_info_pointers, + NULL, + NULL, + NULL + }, + "org-freedesktop-dbus-introspectable", +}; + + +/** + * org_freedesktop_dbus_introspectable_interface_info: + * + * Gets a machine-readable description of the org.freedesktop.DBus.Introspectable D-Bus interface. + * + * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. + */ +GDBusInterfaceInfo * +org_freedesktop_dbus_introspectable_interface_info (void) +{ + return (GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct; +} + +/** + * org_freedesktop_dbus_introspectable_override_properties: + * @klass: The class structure for a #GObject-derived class. + * @property_id_begin: The property id to assign to the first overridden property. + * + * Overrides all #GObject properties in the #OrgFreedesktopDBusIntrospectable interface for a concrete class. + * The properties are overridden in the order they are defined. + * + * Returns: The last property id. + */ +guint +org_freedesktop_dbus_introspectable_override_properties (GObjectClass *klass, guint property_id_begin) +{ + return property_id_begin - 1; +} + + + +/** + * OrgFreedesktopDBusIntrospectable: + * + * Abstract interface type for the D-Bus interface org.freedesktop.DBus.Introspectable. + */ + +/** + * OrgFreedesktopDBusIntrospectableIface: + * @parent_iface: The parent interface. + * @handle_introspect: Handler for the #OrgFreedesktopDBusIntrospectable::handle-introspect signal. + * + * Virtual table for the D-Bus interface org.freedesktop.DBus.Introspectable. + */ + +typedef OrgFreedesktopDBusIntrospectableIface OrgFreedesktopDBusIntrospectableInterface; +G_DEFINE_INTERFACE (OrgFreedesktopDBusIntrospectable, org_freedesktop_dbus_introspectable, G_TYPE_OBJECT); + +static void +org_freedesktop_dbus_introspectable_default_init (OrgFreedesktopDBusIntrospectableIface *iface) +{ + /* GObject signals for incoming D-Bus method calls: */ + /** + * OrgFreedesktopDBusIntrospectable::handle-introspect: + * @object: A #OrgFreedesktopDBusIntrospectable. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the Introspect() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_introspectable_complete_introspect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-introspect", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (OrgFreedesktopDBusIntrospectableIface, handle_introspect), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + +} + +/** + * org_freedesktop_dbus_introspectable_call_introspect: + * @proxy: A #OrgFreedesktopDBusIntrospectableProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the Introspect() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_introspectable_call_introspect_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_introspectable_call_introspect_sync() for the synchronous, blocking version of this method. + */ +void +org_freedesktop_dbus_introspectable_call_introspect ( + OrgFreedesktopDBusIntrospectable *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "Introspect", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * org_freedesktop_dbus_introspectable_call_introspect_finish: + * @proxy: A #OrgFreedesktopDBusIntrospectableProxy. + * @out_xml_data: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_introspectable_call_introspect(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with org_freedesktop_dbus_introspectable_call_introspect(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_introspectable_call_introspect_finish ( + OrgFreedesktopDBusIntrospectable *proxy, + gchar **out_xml_data, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(s)", + out_xml_data); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_introspectable_call_introspect_sync: + * @proxy: A #OrgFreedesktopDBusIntrospectableProxy. + * @out_xml_data: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the Introspect() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_introspectable_call_introspect() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_introspectable_call_introspect_sync ( + OrgFreedesktopDBusIntrospectable *proxy, + gchar **out_xml_data, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "Introspect", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(s)", + out_xml_data); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_introspectable_complete_introspect: + * @object: A #OrgFreedesktopDBusIntrospectable. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @xml_data: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the Introspect() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +org_freedesktop_dbus_introspectable_complete_introspect ( + OrgFreedesktopDBusIntrospectable *object, + GDBusMethodInvocation *invocation, + const gchar *xml_data) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(s)", + xml_data)); +} + +/* ------------------------------------------------------------------------ */ + +/** + * OrgFreedesktopDBusIntrospectableProxy: + * + * The #OrgFreedesktopDBusIntrospectableProxy structure contains only private data and should only be accessed using the provided API. + */ + +/** + * OrgFreedesktopDBusIntrospectableProxyClass: + * @parent_class: The parent class. + * + * Class structure for #OrgFreedesktopDBusIntrospectableProxy. + */ + +struct _OrgFreedesktopDBusIntrospectableProxyPrivate +{ + GData *qdata; +}; + +static void org_freedesktop_dbus_introspectable_proxy_iface_init (OrgFreedesktopDBusIntrospectableIface *iface); + +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableProxy, org_freedesktop_dbus_introspectable_proxy, G_TYPE_DBUS_PROXY, + G_ADD_PRIVATE (OrgFreedesktopDBusIntrospectableProxy) + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_proxy_iface_init)); + +#else +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableProxy, org_freedesktop_dbus_introspectable_proxy, G_TYPE_DBUS_PROXY, + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_proxy_iface_init)); + +#endif +static void +org_freedesktop_dbus_introspectable_proxy_finalize (GObject *object) +{ + OrgFreedesktopDBusIntrospectableProxy *proxy = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (object); + g_datalist_clear (&proxy->priv->qdata); + G_OBJECT_CLASS (org_freedesktop_dbus_introspectable_proxy_parent_class)->finalize (object); +} + +static void +org_freedesktop_dbus_introspectable_proxy_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ +} + +static void +org_freedesktop_dbus_introspectable_proxy_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ +} + +static void +org_freedesktop_dbus_introspectable_proxy_g_signal (GDBusProxy *proxy, + const gchar *sender_name G_GNUC_UNUSED, + const gchar *signal_name, + GVariant *parameters) +{ + _ExtendedGDBusSignalInfo *info; + GVariantIter iter; + GVariant *child; + GValue *paramv; + gsize num_params; + gsize n; + guint signal_id; + info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, signal_name); + if (info == NULL) + return; + num_params = g_variant_n_children (parameters); + paramv = g_new0 (GValue, num_params + 1); + g_value_init (¶mv[0], TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); + g_value_set_object (¶mv[0], proxy); + g_variant_iter_init (&iter, parameters); + n = 1; + while ((child = g_variant_iter_next_value (&iter)) != NULL) + { + _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; + if (arg_info->use_gvariant) + { + g_value_init (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); + g_variant_unref (child); + } + signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); + g_signal_emitv (paramv, signal_id, 0, NULL); + for (n = 0; n < num_params + 1; n++) + g_value_unset (¶mv[n]); + g_free (paramv); +} + +static void +org_freedesktop_dbus_introspectable_proxy_g_properties_changed (GDBusProxy *_proxy, + GVariant *changed_properties, + const gchar *const *invalidated_properties) +{ + OrgFreedesktopDBusIntrospectableProxy *proxy = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (_proxy); + guint n; + const gchar *key; + GVariantIter *iter; + _ExtendedGDBusPropertyInfo *info; + g_variant_get (changed_properties, "a{sv}", &iter); + while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) + { + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, key); + g_datalist_remove_data (&proxy->priv->qdata, key); + if (info != NULL) + g_object_notify (G_OBJECT (proxy), info->hyphen_name); + } + g_variant_iter_free (iter); + for (n = 0; invalidated_properties[n] != NULL; n++) + { + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, invalidated_properties[n]); + g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); + if (info != NULL) + g_object_notify (G_OBJECT (proxy), info->hyphen_name); + } +} + +static void +org_freedesktop_dbus_introspectable_proxy_init (OrgFreedesktopDBusIntrospectableProxy *proxy) +{ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 + proxy->priv = org_freedesktop_dbus_introspectable_proxy_get_instance_private (proxy); +#else + proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxyPrivate); +#endif + + g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_freedesktop_dbus_introspectable_interface_info ()); +} + +static void +org_freedesktop_dbus_introspectable_proxy_class_init (OrgFreedesktopDBusIntrospectableProxyClass *klass) +{ + GObjectClass *gobject_class; + GDBusProxyClass *proxy_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = org_freedesktop_dbus_introspectable_proxy_finalize; + gobject_class->get_property = org_freedesktop_dbus_introspectable_proxy_get_property; + gobject_class->set_property = org_freedesktop_dbus_introspectable_proxy_set_property; + + proxy_class = G_DBUS_PROXY_CLASS (klass); + proxy_class->g_signal = org_freedesktop_dbus_introspectable_proxy_g_signal; + proxy_class->g_properties_changed = org_freedesktop_dbus_introspectable_proxy_g_properties_changed; + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 + g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusIntrospectableProxyPrivate)); +#endif +} + +static void +org_freedesktop_dbus_introspectable_proxy_iface_init (OrgFreedesktopDBusIntrospectableIface *iface) +{ +} + +/** + * org_freedesktop_dbus_introspectable_proxy_new: + * @connection: A #GDBusConnection. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied. + * @user_data: User data to pass to @callback. + * + * Asynchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Introspectable. See g_dbus_proxy_new() for more details. + * + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_introspectable_proxy_new_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_introspectable_proxy_new_sync() for the synchronous, blocking version of this constructor. + */ +void +org_freedesktop_dbus_introspectable_proxy_new ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL); +} + +/** + * org_freedesktop_dbus_introspectable_proxy_new_finish: + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_introspectable_proxy_new(). + * @error: Return location for error or %NULL + * + * Finishes an operation started with org_freedesktop_dbus_introspectable_proxy_new(). + * + * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusIntrospectable * +org_freedesktop_dbus_introspectable_proxy_new_finish ( + GAsyncResult *res, + GError **error) +{ + GObject *ret; + GObject *source_object; + source_object = g_async_result_get_source_object (res); + ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); + g_object_unref (source_object); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret); + else + return NULL; +} + +/** + * org_freedesktop_dbus_introspectable_proxy_new_sync: + * @connection: A #GDBusConnection. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL + * + * Synchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Introspectable. See g_dbus_proxy_new_sync() for more details. + * + * The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_introspectable_proxy_new() for the asynchronous version of this constructor. + * + * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusIntrospectable * +org_freedesktop_dbus_introspectable_proxy_new_sync ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error) +{ + GInitable *ret; + ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret); + else + return NULL; +} + + +/** + * org_freedesktop_dbus_introspectable_proxy_new_for_bus: + * @bus_type: A #GBusType. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: A bus name (well-known or unique). + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied. + * @user_data: User data to pass to @callback. + * + * Like org_freedesktop_dbus_introspectable_proxy_new() but takes a #GBusType instead of a #GDBusConnection. + * + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. + */ +void +org_freedesktop_dbus_introspectable_proxy_new_for_bus ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL); +} + +/** + * org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish: + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_introspectable_proxy_new_for_bus(). + * @error: Return location for error or %NULL + * + * Finishes an operation started with org_freedesktop_dbus_introspectable_proxy_new_for_bus(). + * + * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusIntrospectable * +org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish ( + GAsyncResult *res, + GError **error) +{ + GObject *ret; + GObject *source_object; + source_object = g_async_result_get_source_object (res); + ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); + g_object_unref (source_object); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret); + else + return NULL; +} + +/** + * org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync: + * @bus_type: A #GBusType. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: A bus name (well-known or unique). + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL + * + * Like org_freedesktop_dbus_introspectable_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. + * + * The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_introspectable_proxy_new_for_bus() for the asynchronous version of this constructor. + * + * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusIntrospectable * +org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error) +{ + GInitable *ret; + ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret); + else + return NULL; +} + + +/* ------------------------------------------------------------------------ */ + +/** + * OrgFreedesktopDBusIntrospectableSkeleton: + * + * The #OrgFreedesktopDBusIntrospectableSkeleton structure contains only private data and should only be accessed using the provided API. + */ + +/** + * OrgFreedesktopDBusIntrospectableSkeletonClass: + * @parent_class: The parent class. + * + * Class structure for #OrgFreedesktopDBusIntrospectableSkeleton. + */ + +struct _OrgFreedesktopDBusIntrospectableSkeletonPrivate +{ + GValue *properties; + GList *changed_properties; + GSource *changed_properties_idle_source; + GMainContext *context; + GMutex lock; +}; + +static void +_org_freedesktop_dbus_introspectable_skeleton_handle_method_call ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer user_data) +{ + OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data); + _ExtendedGDBusMethodInfo *info; + GVariantIter iter; + GVariant *child; + GValue *paramv; + gsize num_params; + guint num_extra; + gsize n; + guint signal_id; + GValue return_value = G_VALUE_INIT; + info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); + g_assert (info != NULL); + num_params = g_variant_n_children (parameters); + num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); + n = 0; + g_value_init (¶mv[n], TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); +#else + g_assert_not_reached (); +#endif + } + g_variant_iter_init (&iter, parameters); + while ((child = g_variant_iter_next_value (&iter)) != NULL) + { + _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; + if (arg_info->use_gvariant) + { + g_value_init (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); + g_variant_unref (child); + } + signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); + g_value_init (&return_value, G_TYPE_BOOLEAN); + g_signal_emitv (paramv, signal_id, 0, &return_value); + if (!g_value_get_boolean (&return_value)) + g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); + g_value_unset (&return_value); + for (n = 0; n < num_params + num_extra; n++) + g_value_unset (¶mv[n]); + g_free (paramv); +} + +static GVariant * +_org_freedesktop_dbus_introspectable_skeleton_handle_get_property ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name G_GNUC_UNUSED, + const gchar *property_name, + GError **error, + gpointer user_data) +{ + OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data); + GValue value = G_VALUE_INIT; + GParamSpec *pspec; + _ExtendedGDBusPropertyInfo *info; + GVariant *ret; + ret = NULL; + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, property_name); + g_assert (info != NULL); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); + if (pspec == NULL) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); + } + else + { + g_value_init (&value, pspec->value_type); + g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); + ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); + g_value_unset (&value); + } + return ret; +} + +static gboolean +_org_freedesktop_dbus_introspectable_skeleton_handle_set_property ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name G_GNUC_UNUSED, + const gchar *property_name, + GVariant *variant, + GError **error, + gpointer user_data) +{ + OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data); + GValue value = G_VALUE_INIT; + GParamSpec *pspec; + _ExtendedGDBusPropertyInfo *info; + gboolean ret; + ret = FALSE; + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, property_name); + g_assert (info != NULL); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); + if (pspec == NULL) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); + } + else + { + if (info->use_gvariant) + g_value_set_variant (&value, variant); + else + g_dbus_gvariant_to_gvalue (variant, &value); + g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); + g_value_unset (&value); + ret = TRUE; + } + return ret; +} + +static const GDBusInterfaceVTable _org_freedesktop_dbus_introspectable_skeleton_vtable = +{ + _org_freedesktop_dbus_introspectable_skeleton_handle_method_call, + _org_freedesktop_dbus_introspectable_skeleton_handle_get_property, + _org_freedesktop_dbus_introspectable_skeleton_handle_set_property, + {NULL} +}; + +static GDBusInterfaceInfo * +org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) +{ + return org_freedesktop_dbus_introspectable_interface_info (); +} + +static GDBusInterfaceVTable * +org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) +{ + return (GDBusInterfaceVTable *) &_org_freedesktop_dbus_introspectable_skeleton_vtable; +} + +static GVariant * +org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) +{ + OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (_skeleton); + + GVariantBuilder builder; + guint n; + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); + if (_org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties == NULL) + goto out; + for (n = 0; _org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties[n] != NULL; n++) + { + GDBusPropertyInfo *info = _org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties[n]; + if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) + { + GVariant *value; + value = _org_freedesktop_dbus_introspectable_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Introspectable", info->name, NULL, skeleton); + if (value != NULL) + { + g_variant_take_ref (value); + g_variant_builder_add (&builder, "{sv}", info->name, value); + g_variant_unref (value); + } + } + } +out: + return g_variant_builder_end (&builder); +} + +static void +org_freedesktop_dbus_introspectable_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) +{ +} + +static void org_freedesktop_dbus_introspectable_skeleton_iface_init (OrgFreedesktopDBusIntrospectableIface *iface); +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableSkeleton, org_freedesktop_dbus_introspectable_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, + G_ADD_PRIVATE (OrgFreedesktopDBusIntrospectableSkeleton) + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_skeleton_iface_init)); + +#else +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableSkeleton, org_freedesktop_dbus_introspectable_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_skeleton_iface_init)); + +#endif +static void +org_freedesktop_dbus_introspectable_skeleton_finalize (GObject *object) +{ + OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (object); + g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); + if (skeleton->priv->changed_properties_idle_source != NULL) + g_source_destroy (skeleton->priv->changed_properties_idle_source); + g_main_context_unref (skeleton->priv->context); + g_mutex_clear (&skeleton->priv->lock); + G_OBJECT_CLASS (org_freedesktop_dbus_introspectable_skeleton_parent_class)->finalize (object); +} + +static void +org_freedesktop_dbus_introspectable_skeleton_init (OrgFreedesktopDBusIntrospectableSkeleton *skeleton) +{ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 + skeleton->priv = org_freedesktop_dbus_introspectable_skeleton_get_instance_private (skeleton); +#else + skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeletonPrivate); +#endif + + g_mutex_init (&skeleton->priv->lock); + skeleton->priv->context = g_main_context_ref_thread_default (); +} + +static void +org_freedesktop_dbus_introspectable_skeleton_class_init (OrgFreedesktopDBusIntrospectableSkeletonClass *klass) +{ + GObjectClass *gobject_class; + GDBusInterfaceSkeletonClass *skeleton_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = org_freedesktop_dbus_introspectable_skeleton_finalize; + + skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); + skeleton_class->get_info = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_info; + skeleton_class->get_properties = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_properties; + skeleton_class->flush = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_flush; + skeleton_class->get_vtable = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_vtable; + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 + g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusIntrospectableSkeletonPrivate)); +#endif +} + +static void +org_freedesktop_dbus_introspectable_skeleton_iface_init (OrgFreedesktopDBusIntrospectableIface *iface) +{ +} + +/** + * org_freedesktop_dbus_introspectable_skeleton_new: + * + * Creates a skeleton object for the D-Bus interface org.freedesktop.DBus.Introspectable. + * + * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableSkeleton): The skeleton object. + */ +OrgFreedesktopDBusIntrospectable * +org_freedesktop_dbus_introspectable_skeleton_new (void) +{ + return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (g_object_new (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, NULL)); +} + +/* ------------------------------------------------------------------------ + * Code for interface org.freedesktop.DBus.Peer + * ------------------------------------------------------------------------ + */ + +/** + * SECTION:OrgFreedesktopDBusPeer + * @title: OrgFreedesktopDBusPeer + * @short_description: Generated C code for the org.freedesktop.DBus.Peer D-Bus interface + * + * This section contains code for working with the org.freedesktop.DBus.Peer D-Bus interface in C. + */ + +/* ---- Introspection data for org.freedesktop.DBus.Peer ---- */ + +static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_peer_method_info_ping = +{ + { + -1, + (gchar *) "Ping", + NULL, + NULL, + NULL + }, + "handle-ping", + FALSE +}; + +static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_machine_uuid = +{ + { + -1, + (gchar *) "machine_uuid", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_pointers[] = +{ + &_org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_machine_uuid, + NULL +}; + +static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_peer_method_info_get_machine_id = +{ + { + -1, + (gchar *) "GetMachineId", + NULL, + (GDBusArgInfo **) &_org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_pointers, + NULL + }, + "handle-get-machine-id", + FALSE +}; + +static const _ExtendedGDBusMethodInfo * const _org_freedesktop_dbus_peer_method_info_pointers[] = +{ + &_org_freedesktop_dbus_peer_method_info_ping, + &_org_freedesktop_dbus_peer_method_info_get_machine_id, + NULL +}; + +static const _ExtendedGDBusInterfaceInfo _org_freedesktop_dbus_peer_interface_info = +{ + { + -1, + (gchar *) "org.freedesktop.DBus.Peer", + (GDBusMethodInfo **) &_org_freedesktop_dbus_peer_method_info_pointers, + NULL, + NULL, + NULL + }, + "org-freedesktop-dbus-peer", +}; + + +/** + * org_freedesktop_dbus_peer_interface_info: + * + * Gets a machine-readable description of the org.freedesktop.DBus.Peer D-Bus interface. + * + * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. + */ +GDBusInterfaceInfo * +org_freedesktop_dbus_peer_interface_info (void) +{ + return (GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct; +} + +/** + * org_freedesktop_dbus_peer_override_properties: + * @klass: The class structure for a #GObject-derived class. + * @property_id_begin: The property id to assign to the first overridden property. + * + * Overrides all #GObject properties in the #OrgFreedesktopDBusPeer interface for a concrete class. + * The properties are overridden in the order they are defined. + * + * Returns: The last property id. + */ +guint +org_freedesktop_dbus_peer_override_properties (GObjectClass *klass, guint property_id_begin) +{ + return property_id_begin - 1; +} + + + +/** + * OrgFreedesktopDBusPeer: + * + * Abstract interface type for the D-Bus interface org.freedesktop.DBus.Peer. + */ + +/** + * OrgFreedesktopDBusPeerIface: + * @parent_iface: The parent interface. + * @handle_get_machine_id: Handler for the #OrgFreedesktopDBusPeer::handle-get-machine-id signal. + * @handle_ping: Handler for the #OrgFreedesktopDBusPeer::handle-ping signal. + * + * Virtual table for the D-Bus interface org.freedesktop.DBus.Peer. + */ + +typedef OrgFreedesktopDBusPeerIface OrgFreedesktopDBusPeerInterface; +G_DEFINE_INTERFACE (OrgFreedesktopDBusPeer, org_freedesktop_dbus_peer, G_TYPE_OBJECT); + +static void +org_freedesktop_dbus_peer_default_init (OrgFreedesktopDBusPeerIface *iface) +{ + /* GObject signals for incoming D-Bus method calls: */ + /** + * OrgFreedesktopDBusPeer::handle-ping: + * @object: A #OrgFreedesktopDBusPeer. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the Ping() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_peer_complete_ping() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-ping", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (OrgFreedesktopDBusPeerIface, handle_ping), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + + /** + * OrgFreedesktopDBusPeer::handle-get-machine-id: + * @object: A #OrgFreedesktopDBusPeer. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the GetMachineId() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_peer_complete_get_machine_id() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-get-machine-id", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (OrgFreedesktopDBusPeerIface, handle_get_machine_id), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + +} + +/** + * org_freedesktop_dbus_peer_call_ping: + * @proxy: A #OrgFreedesktopDBusPeerProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the Ping() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_peer_call_ping_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_peer_call_ping_sync() for the synchronous, blocking version of this method. + */ +void +org_freedesktop_dbus_peer_call_ping ( + OrgFreedesktopDBusPeer *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "Ping", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * org_freedesktop_dbus_peer_call_ping_finish: + * @proxy: A #OrgFreedesktopDBusPeerProxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_call_ping(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with org_freedesktop_dbus_peer_call_ping(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_peer_call_ping_finish ( + OrgFreedesktopDBusPeer *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_peer_call_ping_sync: + * @proxy: A #OrgFreedesktopDBusPeerProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the Ping() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_peer_call_ping() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_peer_call_ping_sync ( + OrgFreedesktopDBusPeer *proxy, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "Ping", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_peer_call_get_machine_id: + * @proxy: A #OrgFreedesktopDBusPeerProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the GetMachineId() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_peer_call_get_machine_id_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_peer_call_get_machine_id_sync() for the synchronous, blocking version of this method. + */ +void +org_freedesktop_dbus_peer_call_get_machine_id ( + OrgFreedesktopDBusPeer *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "GetMachineId", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * org_freedesktop_dbus_peer_call_get_machine_id_finish: + * @proxy: A #OrgFreedesktopDBusPeerProxy. + * @out_machine_uuid: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_call_get_machine_id(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with org_freedesktop_dbus_peer_call_get_machine_id(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_peer_call_get_machine_id_finish ( + OrgFreedesktopDBusPeer *proxy, + gchar **out_machine_uuid, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(s)", + out_machine_uuid); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_peer_call_get_machine_id_sync: + * @proxy: A #OrgFreedesktopDBusPeerProxy. + * @out_machine_uuid: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the GetMachineId() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_peer_call_get_machine_id() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +org_freedesktop_dbus_peer_call_get_machine_id_sync ( + OrgFreedesktopDBusPeer *proxy, + gchar **out_machine_uuid, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "GetMachineId", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(s)", + out_machine_uuid); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * org_freedesktop_dbus_peer_complete_ping: + * @object: A #OrgFreedesktopDBusPeer. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the Ping() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +org_freedesktop_dbus_peer_complete_ping ( + OrgFreedesktopDBusPeer *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/** + * org_freedesktop_dbus_peer_complete_get_machine_id: + * @object: A #OrgFreedesktopDBusPeer. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @machine_uuid: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the GetMachineId() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +org_freedesktop_dbus_peer_complete_get_machine_id ( + OrgFreedesktopDBusPeer *object, + GDBusMethodInvocation *invocation, + const gchar *machine_uuid) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(s)", + machine_uuid)); +} + +/* ------------------------------------------------------------------------ */ + +/** + * OrgFreedesktopDBusPeerProxy: + * + * The #OrgFreedesktopDBusPeerProxy structure contains only private data and should only be accessed using the provided API. + */ + +/** + * OrgFreedesktopDBusPeerProxyClass: + * @parent_class: The parent class. + * + * Class structure for #OrgFreedesktopDBusPeerProxy. + */ + +struct _OrgFreedesktopDBusPeerProxyPrivate +{ + GData *qdata; +}; + +static void org_freedesktop_dbus_peer_proxy_iface_init (OrgFreedesktopDBusPeerIface *iface); + +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerProxy, org_freedesktop_dbus_peer_proxy, G_TYPE_DBUS_PROXY, + G_ADD_PRIVATE (OrgFreedesktopDBusPeerProxy) + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_proxy_iface_init)); + +#else +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerProxy, org_freedesktop_dbus_peer_proxy, G_TYPE_DBUS_PROXY, + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_proxy_iface_init)); + +#endif +static void +org_freedesktop_dbus_peer_proxy_finalize (GObject *object) +{ + OrgFreedesktopDBusPeerProxy *proxy = ORG_FREEDESKTOP_DBUS_PEER_PROXY (object); + g_datalist_clear (&proxy->priv->qdata); + G_OBJECT_CLASS (org_freedesktop_dbus_peer_proxy_parent_class)->finalize (object); +} + +static void +org_freedesktop_dbus_peer_proxy_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ +} + +static void +org_freedesktop_dbus_peer_proxy_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ +} + +static void +org_freedesktop_dbus_peer_proxy_g_signal (GDBusProxy *proxy, + const gchar *sender_name G_GNUC_UNUSED, + const gchar *signal_name, + GVariant *parameters) +{ + _ExtendedGDBusSignalInfo *info; + GVariantIter iter; + GVariant *child; + GValue *paramv; + gsize num_params; + gsize n; + guint signal_id; + info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, signal_name); + if (info == NULL) + return; + num_params = g_variant_n_children (parameters); + paramv = g_new0 (GValue, num_params + 1); + g_value_init (¶mv[0], TYPE_ORG_FREEDESKTOP_DBUS_PEER); + g_value_set_object (¶mv[0], proxy); + g_variant_iter_init (&iter, parameters); + n = 1; + while ((child = g_variant_iter_next_value (&iter)) != NULL) + { + _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; + if (arg_info->use_gvariant) + { + g_value_init (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); + g_variant_unref (child); + } + signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PEER); + g_signal_emitv (paramv, signal_id, 0, NULL); + for (n = 0; n < num_params + 1; n++) + g_value_unset (¶mv[n]); + g_free (paramv); +} + +static void +org_freedesktop_dbus_peer_proxy_g_properties_changed (GDBusProxy *_proxy, + GVariant *changed_properties, + const gchar *const *invalidated_properties) +{ + OrgFreedesktopDBusPeerProxy *proxy = ORG_FREEDESKTOP_DBUS_PEER_PROXY (_proxy); + guint n; + const gchar *key; + GVariantIter *iter; + _ExtendedGDBusPropertyInfo *info; + g_variant_get (changed_properties, "a{sv}", &iter); + while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) + { + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, key); + g_datalist_remove_data (&proxy->priv->qdata, key); + if (info != NULL) + g_object_notify (G_OBJECT (proxy), info->hyphen_name); + } + g_variant_iter_free (iter); + for (n = 0; invalidated_properties[n] != NULL; n++) + { + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, invalidated_properties[n]); + g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); + if (info != NULL) + g_object_notify (G_OBJECT (proxy), info->hyphen_name); + } +} + +static void +org_freedesktop_dbus_peer_proxy_init (OrgFreedesktopDBusPeerProxy *proxy) +{ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 + proxy->priv = org_freedesktop_dbus_peer_proxy_get_instance_private (proxy); +#else + proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxyPrivate); +#endif + + g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_freedesktop_dbus_peer_interface_info ()); +} + +static void +org_freedesktop_dbus_peer_proxy_class_init (OrgFreedesktopDBusPeerProxyClass *klass) +{ + GObjectClass *gobject_class; + GDBusProxyClass *proxy_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = org_freedesktop_dbus_peer_proxy_finalize; + gobject_class->get_property = org_freedesktop_dbus_peer_proxy_get_property; + gobject_class->set_property = org_freedesktop_dbus_peer_proxy_set_property; + + proxy_class = G_DBUS_PROXY_CLASS (klass); + proxy_class->g_signal = org_freedesktop_dbus_peer_proxy_g_signal; + proxy_class->g_properties_changed = org_freedesktop_dbus_peer_proxy_g_properties_changed; + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 + g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPeerProxyPrivate)); +#endif +} + +static void +org_freedesktop_dbus_peer_proxy_iface_init (OrgFreedesktopDBusPeerIface *iface) +{ +} + +/** + * org_freedesktop_dbus_peer_proxy_new: + * @connection: A #GDBusConnection. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied. + * @user_data: User data to pass to @callback. + * + * Asynchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Peer. See g_dbus_proxy_new() for more details. + * + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_peer_proxy_new_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_peer_proxy_new_sync() for the synchronous, blocking version of this constructor. + */ +void +org_freedesktop_dbus_peer_proxy_new ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL); +} + +/** + * org_freedesktop_dbus_peer_proxy_new_finish: + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_proxy_new(). + * @error: Return location for error or %NULL + * + * Finishes an operation started with org_freedesktop_dbus_peer_proxy_new(). + * + * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusPeer * +org_freedesktop_dbus_peer_proxy_new_finish ( + GAsyncResult *res, + GError **error) +{ + GObject *ret; + GObject *source_object; + source_object = g_async_result_get_source_object (res); + ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); + g_object_unref (source_object); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_PEER (ret); + else + return NULL; +} + +/** + * org_freedesktop_dbus_peer_proxy_new_sync: + * @connection: A #GDBusConnection. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL + * + * Synchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Peer. See g_dbus_proxy_new_sync() for more details. + * + * The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_peer_proxy_new() for the asynchronous version of this constructor. + * + * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusPeer * +org_freedesktop_dbus_peer_proxy_new_sync ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error) +{ + GInitable *ret; + ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_PEER (ret); + else + return NULL; +} + + +/** + * org_freedesktop_dbus_peer_proxy_new_for_bus: + * @bus_type: A #GBusType. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: A bus name (well-known or unique). + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied. + * @user_data: User data to pass to @callback. + * + * Like org_freedesktop_dbus_peer_proxy_new() but takes a #GBusType instead of a #GDBusConnection. + * + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call org_freedesktop_dbus_peer_proxy_new_for_bus_finish() to get the result of the operation. + * + * See org_freedesktop_dbus_peer_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. + */ +void +org_freedesktop_dbus_peer_proxy_new_for_bus ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL); +} + +/** + * org_freedesktop_dbus_peer_proxy_new_for_bus_finish: + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_proxy_new_for_bus(). + * @error: Return location for error or %NULL + * + * Finishes an operation started with org_freedesktop_dbus_peer_proxy_new_for_bus(). + * + * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusPeer * +org_freedesktop_dbus_peer_proxy_new_for_bus_finish ( + GAsyncResult *res, + GError **error) +{ + GObject *ret; + GObject *source_object; + source_object = g_async_result_get_source_object (res); + ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); + g_object_unref (source_object); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_PEER (ret); + else + return NULL; +} + +/** + * org_freedesktop_dbus_peer_proxy_new_for_bus_sync: + * @bus_type: A #GBusType. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: A bus name (well-known or unique). + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL + * + * Like org_freedesktop_dbus_peer_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. + * + * The calling thread is blocked until a reply is received. + * + * See org_freedesktop_dbus_peer_proxy_new_for_bus() for the asynchronous version of this constructor. + * + * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set. + */ +OrgFreedesktopDBusPeer * +org_freedesktop_dbus_peer_proxy_new_for_bus_sync ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error) +{ + GInitable *ret; + ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL); + if (ret != NULL) + return ORG_FREEDESKTOP_DBUS_PEER (ret); + else + return NULL; +} + + +/* ------------------------------------------------------------------------ */ + +/** + * OrgFreedesktopDBusPeerSkeleton: + * + * The #OrgFreedesktopDBusPeerSkeleton structure contains only private data and should only be accessed using the provided API. + */ + +/** + * OrgFreedesktopDBusPeerSkeletonClass: + * @parent_class: The parent class. + * + * Class structure for #OrgFreedesktopDBusPeerSkeleton. + */ + +struct _OrgFreedesktopDBusPeerSkeletonPrivate +{ + GValue *properties; + GList *changed_properties; + GSource *changed_properties_idle_source; + GMainContext *context; + GMutex lock; +}; + +static void +_org_freedesktop_dbus_peer_skeleton_handle_method_call ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer user_data) +{ + OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (user_data); + _ExtendedGDBusMethodInfo *info; + GVariantIter iter; + GVariant *child; + GValue *paramv; + gsize num_params; + guint num_extra; + gsize n; + guint signal_id; + GValue return_value = G_VALUE_INIT; + info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); + g_assert (info != NULL); + num_params = g_variant_n_children (parameters); + num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); + n = 0; + g_value_init (¶mv[n], TYPE_ORG_FREEDESKTOP_DBUS_PEER); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); +#else + g_assert_not_reached (); +#endif + } + g_variant_iter_init (&iter, parameters); + while ((child = g_variant_iter_next_value (&iter)) != NULL) + { + _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; + if (arg_info->use_gvariant) + { + g_value_init (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); + g_variant_unref (child); + } + signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PEER); + g_value_init (&return_value, G_TYPE_BOOLEAN); + g_signal_emitv (paramv, signal_id, 0, &return_value); + if (!g_value_get_boolean (&return_value)) + g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); + g_value_unset (&return_value); + for (n = 0; n < num_params + num_extra; n++) + g_value_unset (¶mv[n]); + g_free (paramv); +} + +static GVariant * +_org_freedesktop_dbus_peer_skeleton_handle_get_property ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name G_GNUC_UNUSED, + const gchar *property_name, + GError **error, + gpointer user_data) +{ + OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (user_data); + GValue value = G_VALUE_INIT; + GParamSpec *pspec; + _ExtendedGDBusPropertyInfo *info; + GVariant *ret; + ret = NULL; + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, property_name); + g_assert (info != NULL); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); + if (pspec == NULL) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); + } + else + { + g_value_init (&value, pspec->value_type); + g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); + ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); + g_value_unset (&value); + } + return ret; +} + +static gboolean +_org_freedesktop_dbus_peer_skeleton_handle_set_property ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name G_GNUC_UNUSED, + const gchar *property_name, + GVariant *variant, + GError **error, + gpointer user_data) +{ + OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (user_data); + GValue value = G_VALUE_INIT; + GParamSpec *pspec; + _ExtendedGDBusPropertyInfo *info; + gboolean ret; + ret = FALSE; + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, property_name); + g_assert (info != NULL); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); + if (pspec == NULL) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); + } + else + { + if (info->use_gvariant) + g_value_set_variant (&value, variant); + else + g_dbus_gvariant_to_gvalue (variant, &value); + g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); + g_value_unset (&value); + ret = TRUE; + } + return ret; +} + +static const GDBusInterfaceVTable _org_freedesktop_dbus_peer_skeleton_vtable = +{ + _org_freedesktop_dbus_peer_skeleton_handle_method_call, + _org_freedesktop_dbus_peer_skeleton_handle_get_property, + _org_freedesktop_dbus_peer_skeleton_handle_set_property, + {NULL} +}; + +static GDBusInterfaceInfo * +org_freedesktop_dbus_peer_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) +{ + return org_freedesktop_dbus_peer_interface_info (); +} + +static GDBusInterfaceVTable * +org_freedesktop_dbus_peer_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) +{ + return (GDBusInterfaceVTable *) &_org_freedesktop_dbus_peer_skeleton_vtable; +} + +static GVariant * +org_freedesktop_dbus_peer_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) +{ + OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (_skeleton); + + GVariantBuilder builder; + guint n; + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); + if (_org_freedesktop_dbus_peer_interface_info.parent_struct.properties == NULL) + goto out; + for (n = 0; _org_freedesktop_dbus_peer_interface_info.parent_struct.properties[n] != NULL; n++) + { + GDBusPropertyInfo *info = _org_freedesktop_dbus_peer_interface_info.parent_struct.properties[n]; + if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) + { + GVariant *value; + value = _org_freedesktop_dbus_peer_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Peer", info->name, NULL, skeleton); + if (value != NULL) + { + g_variant_take_ref (value); + g_variant_builder_add (&builder, "{sv}", info->name, value); + g_variant_unref (value); + } + } + } +out: + return g_variant_builder_end (&builder); +} + +static void +org_freedesktop_dbus_peer_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) +{ +} + +static void org_freedesktop_dbus_peer_skeleton_iface_init (OrgFreedesktopDBusPeerIface *iface); +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerSkeleton, org_freedesktop_dbus_peer_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, + G_ADD_PRIVATE (OrgFreedesktopDBusPeerSkeleton) + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_skeleton_iface_init)); + +#else +G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerSkeleton, org_freedesktop_dbus_peer_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, + G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_skeleton_iface_init)); + +#endif +static void +org_freedesktop_dbus_peer_skeleton_finalize (GObject *object) +{ + OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (object); + g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); + if (skeleton->priv->changed_properties_idle_source != NULL) + g_source_destroy (skeleton->priv->changed_properties_idle_source); + g_main_context_unref (skeleton->priv->context); + g_mutex_clear (&skeleton->priv->lock); + G_OBJECT_CLASS (org_freedesktop_dbus_peer_skeleton_parent_class)->finalize (object); +} + +static void +org_freedesktop_dbus_peer_skeleton_init (OrgFreedesktopDBusPeerSkeleton *skeleton) +{ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 + skeleton->priv = org_freedesktop_dbus_peer_skeleton_get_instance_private (skeleton); +#else + skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeletonPrivate); +#endif + + g_mutex_init (&skeleton->priv->lock); + skeleton->priv->context = g_main_context_ref_thread_default (); +} + +static void +org_freedesktop_dbus_peer_skeleton_class_init (OrgFreedesktopDBusPeerSkeletonClass *klass) +{ + GObjectClass *gobject_class; + GDBusInterfaceSkeletonClass *skeleton_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = org_freedesktop_dbus_peer_skeleton_finalize; + + skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); + skeleton_class->get_info = org_freedesktop_dbus_peer_skeleton_dbus_interface_get_info; + skeleton_class->get_properties = org_freedesktop_dbus_peer_skeleton_dbus_interface_get_properties; + skeleton_class->flush = org_freedesktop_dbus_peer_skeleton_dbus_interface_flush; + skeleton_class->get_vtable = org_freedesktop_dbus_peer_skeleton_dbus_interface_get_vtable; + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 + g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPeerSkeletonPrivate)); +#endif +} + +static void +org_freedesktop_dbus_peer_skeleton_iface_init (OrgFreedesktopDBusPeerIface *iface) +{ +} + +/** + * org_freedesktop_dbus_peer_skeleton_new: + * + * Creates a skeleton object for the D-Bus interface org.freedesktop.DBus.Peer. + * + * Returns: (transfer full) (type OrgFreedesktopDBusPeerSkeleton): The skeleton object. + */ +OrgFreedesktopDBusPeer * +org_freedesktop_dbus_peer_skeleton_new (void) +{ + return ORG_FREEDESKTOP_DBUS_PEER (g_object_new (TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, NULL)); +} + +/* ------------------------------------------------------------------------ + * Code for interface org.lightmediascanner.Scanner1 + * ------------------------------------------------------------------------ + */ + +/** + * SECTION:Scanner1 + * @title: Scanner1 + * @short_description: Generated C code for the org.lightmediascanner.Scanner1 D-Bus interface + * + * This section contains code for working with the org.lightmediascanner.Scanner1 D-Bus interface in C. + */ + +/* ---- Introspection data for org.lightmediascanner.Scanner1 ---- */ + +static const _ExtendedGDBusArgInfo _scanner1_method_info_scan_IN_ARG_specification = +{ + { + -1, + (gchar *) "specification", + (gchar *) "a{sv}", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _scanner1_method_info_scan_IN_ARG_pointers[] = +{ + &_scanner1_method_info_scan_IN_ARG_specification, + NULL +}; + +static const _ExtendedGDBusMethodInfo _scanner1_method_info_scan = +{ + { + -1, + (gchar *) "Scan", + (GDBusArgInfo **) &_scanner1_method_info_scan_IN_ARG_pointers, + NULL, + NULL + }, + "handle-scan", + FALSE +}; + +static const _ExtendedGDBusMethodInfo _scanner1_method_info_stop = +{ + { + -1, + (gchar *) "Stop", + NULL, + NULL, + NULL + }, + "handle-stop", + FALSE +}; + +static const _ExtendedGDBusMethodInfo _scanner1_method_info_request_write_lock = +{ + { + -1, + (gchar *) "RequestWriteLock", + NULL, + NULL, + NULL + }, + "handle-request-write-lock", + FALSE +}; + +static const _ExtendedGDBusMethodInfo _scanner1_method_info_release_write_lock = +{ + { + -1, + (gchar *) "ReleaseWriteLock", + NULL, + NULL, + NULL + }, + "handle-release-write-lock", + FALSE +}; + +static const _ExtendedGDBusMethodInfo * const _scanner1_method_info_pointers[] = +{ + &_scanner1_method_info_scan, + &_scanner1_method_info_stop, + &_scanner1_method_info_request_write_lock, + &_scanner1_method_info_release_write_lock, + NULL +}; + +static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Category = +{ + { + -1, + (gchar *) "Category", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Path = +{ + { + -1, + (gchar *) "Path", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_UpToDate = +{ + { + -1, + (gchar *) "UpToDate", + (gchar *) "t", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Processed = +{ + { + -1, + (gchar *) "Processed", + (gchar *) "t", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Deleted = +{ + { + -1, + (gchar *) "Deleted", + (gchar *) "t", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Skipped = +{ + { + -1, + (gchar *) "Skipped", + (gchar *) "t", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Errors = +{ + { + -1, + (gchar *) "Errors", + (gchar *) "t", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _scanner1_signal_info_scan_progress_ARG_pointers[] = +{ + &_scanner1_signal_info_scan_progress_ARG_Category, + &_scanner1_signal_info_scan_progress_ARG_Path, + &_scanner1_signal_info_scan_progress_ARG_UpToDate, + &_scanner1_signal_info_scan_progress_ARG_Processed, + &_scanner1_signal_info_scan_progress_ARG_Deleted, + &_scanner1_signal_info_scan_progress_ARG_Skipped, + &_scanner1_signal_info_scan_progress_ARG_Errors, + NULL +}; + +static const _ExtendedGDBusSignalInfo _scanner1_signal_info_scan_progress = +{ + { + -1, + (gchar *) "ScanProgress", + (GDBusArgInfo **) &_scanner1_signal_info_scan_progress_ARG_pointers, + NULL + }, + "scan-progress" +}; + +static const _ExtendedGDBusSignalInfo * const _scanner1_signal_info_pointers[] = +{ + &_scanner1_signal_info_scan_progress, + NULL +}; + +static const _ExtendedGDBusPropertyInfo _scanner1_property_info_data_base_path = +{ + { + -1, + (gchar *) "DataBasePath", + (gchar *) "s", + G_DBUS_PROPERTY_INFO_FLAGS_READABLE, + NULL + }, + "data-base-path", + FALSE +}; + +static const _ExtendedGDBusPropertyInfo _scanner1_property_info_is_scanning = +{ + { + -1, + (gchar *) "IsScanning", + (gchar *) "b", + G_DBUS_PROPERTY_INFO_FLAGS_READABLE, + NULL + }, + "is-scanning", + FALSE +}; + +static const _ExtendedGDBusPropertyInfo _scanner1_property_info_write_locked = +{ + { + -1, + (gchar *) "WriteLocked", + (gchar *) "b", + G_DBUS_PROPERTY_INFO_FLAGS_READABLE, + NULL + }, + "write-locked", + FALSE +}; + +static const _ExtendedGDBusPropertyInfo _scanner1_property_info_update_id = +{ + { + -1, + (gchar *) "UpdateID", + (gchar *) "t", + G_DBUS_PROPERTY_INFO_FLAGS_READABLE, + NULL + }, + "update-id", + FALSE +}; + +static const _ExtendedGDBusPropertyInfo _scanner1_property_info_categories = +{ + { + -1, + (gchar *) "Categories", + (gchar *) "a{sv}", + G_DBUS_PROPERTY_INFO_FLAGS_READABLE, + NULL + }, + "categories", + FALSE +}; + +static const _ExtendedGDBusPropertyInfo * const _scanner1_property_info_pointers[] = +{ + &_scanner1_property_info_data_base_path, + &_scanner1_property_info_is_scanning, + &_scanner1_property_info_write_locked, + &_scanner1_property_info_update_id, + &_scanner1_property_info_categories, + NULL +}; + +static const _ExtendedGDBusInterfaceInfo _scanner1_interface_info = +{ + { + -1, + (gchar *) "org.lightmediascanner.Scanner1", + (GDBusMethodInfo **) &_scanner1_method_info_pointers, + (GDBusSignalInfo **) &_scanner1_signal_info_pointers, + (GDBusPropertyInfo **) &_scanner1_property_info_pointers, + NULL + }, + "scanner1", +}; + + +/** + * scanner1_interface_info: + * + * Gets a machine-readable description of the org.lightmediascanner.Scanner1 D-Bus interface. + * + * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. + */ +GDBusInterfaceInfo * +scanner1_interface_info (void) +{ + return (GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct; +} + +/** + * scanner1_override_properties: + * @klass: The class structure for a #GObject-derived class. + * @property_id_begin: The property id to assign to the first overridden property. + * + * Overrides all #GObject properties in the #Scanner1 interface for a concrete class. + * The properties are overridden in the order they are defined. + * + * Returns: The last property id. + */ +guint +scanner1_override_properties (GObjectClass *klass, guint property_id_begin) +{ + g_object_class_override_property (klass, property_id_begin++, "data-base-path"); + g_object_class_override_property (klass, property_id_begin++, "is-scanning"); + g_object_class_override_property (klass, property_id_begin++, "write-locked"); + g_object_class_override_property (klass, property_id_begin++, "update-id"); + g_object_class_override_property (klass, property_id_begin++, "categories"); + return property_id_begin - 1; +} + + + +/** + * Scanner1: + * + * Abstract interface type for the D-Bus interface org.lightmediascanner.Scanner1. + */ + +/** + * Scanner1Iface: + * @parent_iface: The parent interface. + * @handle_release_write_lock: Handler for the #Scanner1::handle-release-write-lock signal. + * @handle_request_write_lock: Handler for the #Scanner1::handle-request-write-lock signal. + * @handle_scan: Handler for the #Scanner1::handle-scan signal. + * @handle_stop: Handler for the #Scanner1::handle-stop signal. + * @get_categories: Getter for the #Scanner1:categories property. + * @get_data_base_path: Getter for the #Scanner1:data-base-path property. + * @get_is_scanning: Getter for the #Scanner1:is-scanning property. + * @get_update_id: Getter for the #Scanner1:update-id property. + * @get_write_locked: Getter for the #Scanner1:write-locked property. + * @scan_progress: Handler for the #Scanner1::scan-progress signal. + * + * Virtual table for the D-Bus interface org.lightmediascanner.Scanner1. + */ + +typedef Scanner1Iface Scanner1Interface; +G_DEFINE_INTERFACE (Scanner1, scanner1, G_TYPE_OBJECT); + +static void +scanner1_default_init (Scanner1Iface *iface) +{ + /* GObject signals for incoming D-Bus method calls: */ + /** + * Scanner1::handle-scan: + * @object: A #Scanner1. + * @invocation: A #GDBusMethodInvocation. + * @arg_specification: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the Scan() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_scan() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-scan", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (Scanner1Iface, handle_scan), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT); + + /** + * Scanner1::handle-stop: + * @object: A #Scanner1. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the Stop() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_stop() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-stop", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (Scanner1Iface, handle_stop), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + + /** + * Scanner1::handle-request-write-lock: + * @object: A #Scanner1. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the RequestWriteLock() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_request_write_lock() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-request-write-lock", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (Scanner1Iface, handle_request_write_lock), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + + /** + * Scanner1::handle-release-write-lock: + * @object: A #Scanner1. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the ReleaseWriteLock() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_release_write_lock() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-release-write-lock", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (Scanner1Iface, handle_release_write_lock), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + + /* GObject signals for received D-Bus signals: */ + /** + * Scanner1::scan-progress: + * @object: A #Scanner1. + * @arg_Category: Argument. + * @arg_Path: Argument. + * @arg_UpToDate: Argument. + * @arg_Processed: Argument. + * @arg_Deleted: Argument. + * @arg_Skipped: Argument. + * @arg_Errors: Argument. + * + * On the client-side, this signal is emitted whenever the D-Bus signal "ScanProgress" is received. + * + * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. + */ + g_signal_new ("scan-progress", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (Scanner1Iface, scan_progress), + NULL, + NULL, + g_cclosure_marshal_generic, + G_TYPE_NONE, + 7, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_UINT64, G_TYPE_UINT64, G_TYPE_UINT64, G_TYPE_UINT64); + + /* GObject properties for D-Bus properties: */ + /** + * Scanner1:data-base-path: + * + * Represents the D-Bus property "DataBasePath". + * + * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. + */ + g_object_interface_install_property (iface, + g_param_spec_string ("data-base-path", "DataBasePath", "DataBasePath", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * Scanner1:is-scanning: + * + * Represents the D-Bus property "IsScanning". + * + * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. + */ + g_object_interface_install_property (iface, + g_param_spec_boolean ("is-scanning", "IsScanning", "IsScanning", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * Scanner1:write-locked: + * + * Represents the D-Bus property "WriteLocked". + * + * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. + */ + g_object_interface_install_property (iface, + g_param_spec_boolean ("write-locked", "WriteLocked", "WriteLocked", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * Scanner1:update-id: + * + * Represents the D-Bus property "UpdateID". + * + * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. + */ + g_object_interface_install_property (iface, + g_param_spec_uint64 ("update-id", "UpdateID", "UpdateID", 0, G_MAXUINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * Scanner1:categories: + * + * Represents the D-Bus property "Categories". + * + * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. + */ + g_object_interface_install_property (iface, + g_param_spec_variant ("categories", "Categories", "Categories", G_VARIANT_TYPE ("a{sv}"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); +} + +/** + * scanner1_get_data_base_path: (skip) + * @object: A #Scanner1. + * + * Gets the value of the "DataBasePath" D-Bus property. + * + * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. + * + * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use scanner1_dup_data_base_path() if on another thread. + * + * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. + */ +const gchar * +scanner1_get_data_base_path (Scanner1 *object) +{ + return SCANNER1_GET_IFACE (object)->get_data_base_path (object); +} + +/** + * scanner1_dup_data_base_path: (skip) + * @object: A #Scanner1. + * + * Gets a copy of the "DataBasePath" D-Bus property. + * + * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. + * + * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). + */ +gchar * +scanner1_dup_data_base_path (Scanner1 *object) +{ + gchar *value; + g_object_get (G_OBJECT (object), "data-base-path", &value, NULL); + return value; +} + +/** + * scanner1_set_data_base_path: (skip) + * @object: A #Scanner1. + * @value: The value to set. + * + * Sets the "DataBasePath" D-Bus property to @value. + * + * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. + */ +void +scanner1_set_data_base_path (Scanner1 *object, const gchar *value) +{ + g_object_set (G_OBJECT (object), "data-base-path", value, NULL); +} + +/** + * scanner1_get_is_scanning: (skip) + * @object: A #Scanner1. + * + * Gets the value of the "IsScanning" D-Bus property. + * + * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. + * + * Returns: The property value. + */ +gboolean +scanner1_get_is_scanning (Scanner1 *object) +{ + return SCANNER1_GET_IFACE (object)->get_is_scanning (object); +} + +/** + * scanner1_set_is_scanning: (skip) + * @object: A #Scanner1. + * @value: The value to set. + * + * Sets the "IsScanning" D-Bus property to @value. + * + * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. + */ +void +scanner1_set_is_scanning (Scanner1 *object, gboolean value) +{ + g_object_set (G_OBJECT (object), "is-scanning", value, NULL); +} + +/** + * scanner1_get_write_locked: (skip) + * @object: A #Scanner1. + * + * Gets the value of the "WriteLocked" D-Bus property. + * + * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. + * + * Returns: The property value. + */ +gboolean +scanner1_get_write_locked (Scanner1 *object) +{ + return SCANNER1_GET_IFACE (object)->get_write_locked (object); +} + +/** + * scanner1_set_write_locked: (skip) + * @object: A #Scanner1. + * @value: The value to set. + * + * Sets the "WriteLocked" D-Bus property to @value. + * + * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. + */ +void +scanner1_set_write_locked (Scanner1 *object, gboolean value) +{ + g_object_set (G_OBJECT (object), "write-locked", value, NULL); +} + +/** + * scanner1_get_update_id: (skip) + * @object: A #Scanner1. + * + * Gets the value of the "UpdateID" D-Bus property. + * + * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. + * + * Returns: The property value. + */ +guint64 +scanner1_get_update_id (Scanner1 *object) +{ + return SCANNER1_GET_IFACE (object)->get_update_id (object); +} + +/** + * scanner1_set_update_id: (skip) + * @object: A #Scanner1. + * @value: The value to set. + * + * Sets the "UpdateID" D-Bus property to @value. + * + * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. + */ +void +scanner1_set_update_id (Scanner1 *object, guint64 value) +{ + g_object_set (G_OBJECT (object), "update-id", value, NULL); +} + +/** + * scanner1_get_categories: (skip) + * @object: A #Scanner1. + * + * Gets the value of the "Categories" D-Bus property. + * + * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. + * + * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use scanner1_dup_categories() if on another thread. + * + * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. + */ +GVariant * +scanner1_get_categories (Scanner1 *object) +{ + return SCANNER1_GET_IFACE (object)->get_categories (object); +} + +/** + * scanner1_dup_categories: (skip) + * @object: A #Scanner1. + * + * Gets a copy of the "Categories" D-Bus property. + * + * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. + * + * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref(). + */ +GVariant * +scanner1_dup_categories (Scanner1 *object) +{ + GVariant *value; + g_object_get (G_OBJECT (object), "categories", &value, NULL); + return value; +} + +/** + * scanner1_set_categories: (skip) + * @object: A #Scanner1. + * @value: The value to set. + * + * Sets the "Categories" D-Bus property to @value. + * + * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. + */ +void +scanner1_set_categories (Scanner1 *object, GVariant *value) +{ + g_object_set (G_OBJECT (object), "categories", value, NULL); +} + +/** + * scanner1_emit_scan_progress: + * @object: A #Scanner1. + * @arg_Category: Argument to pass with the signal. + * @arg_Path: Argument to pass with the signal. + * @arg_UpToDate: Argument to pass with the signal. + * @arg_Processed: Argument to pass with the signal. + * @arg_Deleted: Argument to pass with the signal. + * @arg_Skipped: Argument to pass with the signal. + * @arg_Errors: Argument to pass with the signal. + * + * Emits the "ScanProgress" D-Bus signal. + */ +void +scanner1_emit_scan_progress ( + Scanner1 *object, + const gchar *arg_Category, + const gchar *arg_Path, + guint64 arg_UpToDate, + guint64 arg_Processed, + guint64 arg_Deleted, + guint64 arg_Skipped, + guint64 arg_Errors) +{ + g_signal_emit_by_name (object, "scan-progress", arg_Category, arg_Path, arg_UpToDate, arg_Processed, arg_Deleted, arg_Skipped, arg_Errors); +} + +/** + * scanner1_call_scan: + * @proxy: A #Scanner1Proxy. + * @arg_specification: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the Scan() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call scanner1_call_scan_finish() to get the result of the operation. + * + * See scanner1_call_scan_sync() for the synchronous, blocking version of this method. + */ +void +scanner1_call_scan ( + Scanner1 *proxy, + GVariant *arg_specification, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "Scan", + g_variant_new ("(@a{sv})", + arg_specification), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * scanner1_call_scan_finish: + * @proxy: A #Scanner1Proxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_scan(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with scanner1_call_scan(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +scanner1_call_scan_finish ( + Scanner1 *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * scanner1_call_scan_sync: + * @proxy: A #Scanner1Proxy. + * @arg_specification: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the Scan() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See scanner1_call_scan() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +scanner1_call_scan_sync ( + Scanner1 *proxy, + GVariant *arg_specification, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "Scan", + g_variant_new ("(@a{sv})", + arg_specification), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * scanner1_call_stop: + * @proxy: A #Scanner1Proxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the Stop() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call scanner1_call_stop_finish() to get the result of the operation. + * + * See scanner1_call_stop_sync() for the synchronous, blocking version of this method. + */ +void +scanner1_call_stop ( + Scanner1 *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "Stop", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * scanner1_call_stop_finish: + * @proxy: A #Scanner1Proxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_stop(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with scanner1_call_stop(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +scanner1_call_stop_finish ( + Scanner1 *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * scanner1_call_stop_sync: + * @proxy: A #Scanner1Proxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the Stop() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See scanner1_call_stop() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +scanner1_call_stop_sync ( + Scanner1 *proxy, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "Stop", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * scanner1_call_request_write_lock: + * @proxy: A #Scanner1Proxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the RequestWriteLock() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call scanner1_call_request_write_lock_finish() to get the result of the operation. + * + * See scanner1_call_request_write_lock_sync() for the synchronous, blocking version of this method. + */ +void +scanner1_call_request_write_lock ( + Scanner1 *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "RequestWriteLock", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * scanner1_call_request_write_lock_finish: + * @proxy: A #Scanner1Proxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_request_write_lock(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with scanner1_call_request_write_lock(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +scanner1_call_request_write_lock_finish ( + Scanner1 *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * scanner1_call_request_write_lock_sync: + * @proxy: A #Scanner1Proxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the RequestWriteLock() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See scanner1_call_request_write_lock() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +scanner1_call_request_write_lock_sync ( + Scanner1 *proxy, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "RequestWriteLock", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * scanner1_call_release_write_lock: + * @proxy: A #Scanner1Proxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the ReleaseWriteLock() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call scanner1_call_release_write_lock_finish() to get the result of the operation. + * + * See scanner1_call_release_write_lock_sync() for the synchronous, blocking version of this method. + */ +void +scanner1_call_release_write_lock ( + Scanner1 *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "ReleaseWriteLock", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * scanner1_call_release_write_lock_finish: + * @proxy: A #Scanner1Proxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_release_write_lock(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with scanner1_call_release_write_lock(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +scanner1_call_release_write_lock_finish ( + Scanner1 *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * scanner1_call_release_write_lock_sync: + * @proxy: A #Scanner1Proxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the ReleaseWriteLock() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See scanner1_call_release_write_lock() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +scanner1_call_release_write_lock_sync ( + Scanner1 *proxy, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "ReleaseWriteLock", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * scanner1_complete_scan: + * @object: A #Scanner1. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the Scan() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +scanner1_complete_scan ( + Scanner1 *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/** + * scanner1_complete_stop: + * @object: A #Scanner1. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the Stop() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +scanner1_complete_stop ( + Scanner1 *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/** + * scanner1_complete_request_write_lock: + * @object: A #Scanner1. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the RequestWriteLock() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +scanner1_complete_request_write_lock ( + Scanner1 *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/** + * scanner1_complete_release_write_lock: + * @object: A #Scanner1. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the ReleaseWriteLock() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +scanner1_complete_release_write_lock ( + Scanner1 *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/* ------------------------------------------------------------------------ */ + +/** + * Scanner1Proxy: + * + * The #Scanner1Proxy structure contains only private data and should only be accessed using the provided API. + */ + +/** + * Scanner1ProxyClass: + * @parent_class: The parent class. + * + * Class structure for #Scanner1Proxy. + */ + +struct _Scanner1ProxyPrivate +{ + GData *qdata; +}; + +static void scanner1_proxy_iface_init (Scanner1Iface *iface); + +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +G_DEFINE_TYPE_WITH_CODE (Scanner1Proxy, scanner1_proxy, G_TYPE_DBUS_PROXY, + G_ADD_PRIVATE (Scanner1Proxy) + G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_proxy_iface_init)); + +#else +G_DEFINE_TYPE_WITH_CODE (Scanner1Proxy, scanner1_proxy, G_TYPE_DBUS_PROXY, + G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_proxy_iface_init)); + +#endif +static void +scanner1_proxy_finalize (GObject *object) +{ + Scanner1Proxy *proxy = SCANNER1_PROXY (object); + g_datalist_clear (&proxy->priv->qdata); + G_OBJECT_CLASS (scanner1_proxy_parent_class)->finalize (object); +} + +static void +scanner1_proxy_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ + const _ExtendedGDBusPropertyInfo *info; + GVariant *variant; + g_assert (prop_id != 0 && prop_id - 1 < 5); + info = _scanner1_property_info_pointers[prop_id - 1]; + variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); + if (info->use_gvariant) + { + g_value_set_variant (value, variant); + } + else + { + if (variant != NULL) + g_dbus_gvariant_to_gvalue (variant, value); + } + if (variant != NULL) + g_variant_unref (variant); +} + +static void +scanner1_proxy_set_property_cb (GDBusProxy *proxy, + GAsyncResult *res, + gpointer user_data) +{ + const _ExtendedGDBusPropertyInfo *info = user_data; + GError *error; + GVariant *_ret; + error = NULL; + _ret = g_dbus_proxy_call_finish (proxy, res, &error); + if (!_ret) + { + g_warning ("Error setting property '%s' on interface org.lightmediascanner.Scanner1: %s (%s, %d)", + info->parent_struct.name, + error->message, g_quark_to_string (error->domain), error->code); + g_error_free (error); + } + else + { + g_variant_unref (_ret); + } +} + +static void +scanner1_proxy_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ + const _ExtendedGDBusPropertyInfo *info; + GVariant *variant; + g_assert (prop_id != 0 && prop_id - 1 < 5); + info = _scanner1_property_info_pointers[prop_id - 1]; + variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); + g_dbus_proxy_call (G_DBUS_PROXY (object), + "org.freedesktop.DBus.Properties.Set", + g_variant_new ("(ssv)", "org.lightmediascanner.Scanner1", info->parent_struct.name, variant), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, (GAsyncReadyCallback) scanner1_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); + g_variant_unref (variant); +} + +static void +scanner1_proxy_g_signal (GDBusProxy *proxy, + const gchar *sender_name G_GNUC_UNUSED, + const gchar *signal_name, + GVariant *parameters) +{ + _ExtendedGDBusSignalInfo *info; + GVariantIter iter; + GVariant *child; + GValue *paramv; + gsize num_params; + gsize n; + guint signal_id; + info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, signal_name); + if (info == NULL) + return; + num_params = g_variant_n_children (parameters); + paramv = g_new0 (GValue, num_params + 1); + g_value_init (¶mv[0], TYPE_SCANNER1); + g_value_set_object (¶mv[0], proxy); + g_variant_iter_init (&iter, parameters); + n = 1; + while ((child = g_variant_iter_next_value (&iter)) != NULL) + { + _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; + if (arg_info->use_gvariant) + { + g_value_init (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); + g_variant_unref (child); + } + signal_id = g_signal_lookup (info->signal_name, TYPE_SCANNER1); + g_signal_emitv (paramv, signal_id, 0, NULL); + for (n = 0; n < num_params + 1; n++) + g_value_unset (¶mv[n]); + g_free (paramv); +} + +static void +scanner1_proxy_g_properties_changed (GDBusProxy *_proxy, + GVariant *changed_properties, + const gchar *const *invalidated_properties) +{ + Scanner1Proxy *proxy = SCANNER1_PROXY (_proxy); + guint n; + const gchar *key; + GVariantIter *iter; + _ExtendedGDBusPropertyInfo *info; + g_variant_get (changed_properties, "a{sv}", &iter); + while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) + { + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, key); + g_datalist_remove_data (&proxy->priv->qdata, key); + if (info != NULL) + g_object_notify (G_OBJECT (proxy), info->hyphen_name); + } + g_variant_iter_free (iter); + for (n = 0; invalidated_properties[n] != NULL; n++) + { + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, invalidated_properties[n]); + g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); + if (info != NULL) + g_object_notify (G_OBJECT (proxy), info->hyphen_name); + } +} + +static const gchar * +scanner1_proxy_get_data_base_path (Scanner1 *object) +{ + Scanner1Proxy *proxy = SCANNER1_PROXY (object); + GVariant *variant; + const gchar *value = NULL; + variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "DataBasePath"); + if (variant != NULL) + { + value = g_variant_get_string (variant, NULL); + g_variant_unref (variant); + } + return value; +} + +static gboolean +scanner1_proxy_get_is_scanning (Scanner1 *object) +{ + Scanner1Proxy *proxy = SCANNER1_PROXY (object); + GVariant *variant; + gboolean value = 0; + variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "IsScanning"); + if (variant != NULL) + { + value = g_variant_get_boolean (variant); + g_variant_unref (variant); + } + return value; +} + +static gboolean +scanner1_proxy_get_write_locked (Scanner1 *object) +{ + Scanner1Proxy *proxy = SCANNER1_PROXY (object); + GVariant *variant; + gboolean value = 0; + variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "WriteLocked"); + if (variant != NULL) + { + value = g_variant_get_boolean (variant); + g_variant_unref (variant); + } + return value; +} + +static guint64 +scanner1_proxy_get_update_id (Scanner1 *object) +{ + Scanner1Proxy *proxy = SCANNER1_PROXY (object); + GVariant *variant; + guint64 value = 0; + variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "UpdateID"); + if (variant != NULL) + { + value = g_variant_get_uint64 (variant); + g_variant_unref (variant); + } + return value; +} + +static GVariant * +scanner1_proxy_get_categories (Scanner1 *object) +{ + Scanner1Proxy *proxy = SCANNER1_PROXY (object); + GVariant *variant; + GVariant *value = NULL; + variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Categories"); + value = variant; + if (variant != NULL) + g_variant_unref (variant); + return value; +} + +static void +scanner1_proxy_init (Scanner1Proxy *proxy) +{ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 + proxy->priv = scanner1_proxy_get_instance_private (proxy); +#else + proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_SCANNER1_PROXY, Scanner1ProxyPrivate); +#endif + + g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), scanner1_interface_info ()); +} + +static void +scanner1_proxy_class_init (Scanner1ProxyClass *klass) +{ + GObjectClass *gobject_class; + GDBusProxyClass *proxy_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = scanner1_proxy_finalize; + gobject_class->get_property = scanner1_proxy_get_property; + gobject_class->set_property = scanner1_proxy_set_property; + + proxy_class = G_DBUS_PROXY_CLASS (klass); + proxy_class->g_signal = scanner1_proxy_g_signal; + proxy_class->g_properties_changed = scanner1_proxy_g_properties_changed; + + scanner1_override_properties (gobject_class, 1); + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 + g_type_class_add_private (klass, sizeof (Scanner1ProxyPrivate)); +#endif +} + +static void +scanner1_proxy_iface_init (Scanner1Iface *iface) +{ + iface->get_data_base_path = scanner1_proxy_get_data_base_path; + iface->get_is_scanning = scanner1_proxy_get_is_scanning; + iface->get_write_locked = scanner1_proxy_get_write_locked; + iface->get_update_id = scanner1_proxy_get_update_id; + iface->get_categories = scanner1_proxy_get_categories; +} + +/** + * scanner1_proxy_new: + * @connection: A #GDBusConnection. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied. + * @user_data: User data to pass to @callback. + * + * Asynchronously creates a proxy for the D-Bus interface org.lightmediascanner.Scanner1. See g_dbus_proxy_new() for more details. + * + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call scanner1_proxy_new_finish() to get the result of the operation. + * + * See scanner1_proxy_new_sync() for the synchronous, blocking version of this constructor. + */ +void +scanner1_proxy_new ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_async_initable_new_async (TYPE_SCANNER1_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL); +} + +/** + * scanner1_proxy_new_finish: + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_proxy_new(). + * @error: Return location for error or %NULL + * + * Finishes an operation started with scanner1_proxy_new(). + * + * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set. + */ +Scanner1 * +scanner1_proxy_new_finish ( + GAsyncResult *res, + GError **error) +{ + GObject *ret; + GObject *source_object; + source_object = g_async_result_get_source_object (res); + ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); + g_object_unref (source_object); + if (ret != NULL) + return SCANNER1 (ret); + else + return NULL; +} + +/** + * scanner1_proxy_new_sync: + * @connection: A #GDBusConnection. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL + * + * Synchronously creates a proxy for the D-Bus interface org.lightmediascanner.Scanner1. See g_dbus_proxy_new_sync() for more details. + * + * The calling thread is blocked until a reply is received. + * + * See scanner1_proxy_new() for the asynchronous version of this constructor. + * + * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set. + */ +Scanner1 * +scanner1_proxy_new_sync ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error) +{ + GInitable *ret; + ret = g_initable_new (TYPE_SCANNER1_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL); + if (ret != NULL) + return SCANNER1 (ret); + else + return NULL; +} + + +/** + * scanner1_proxy_new_for_bus: + * @bus_type: A #GBusType. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: A bus name (well-known or unique). + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied. + * @user_data: User data to pass to @callback. + * + * Like scanner1_proxy_new() but takes a #GBusType instead of a #GDBusConnection. + * + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call scanner1_proxy_new_for_bus_finish() to get the result of the operation. + * + * See scanner1_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. + */ +void +scanner1_proxy_new_for_bus ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_async_initable_new_async (TYPE_SCANNER1_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL); +} + +/** + * scanner1_proxy_new_for_bus_finish: + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_proxy_new_for_bus(). + * @error: Return location for error or %NULL + * + * Finishes an operation started with scanner1_proxy_new_for_bus(). + * + * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set. + */ +Scanner1 * +scanner1_proxy_new_for_bus_finish ( + GAsyncResult *res, + GError **error) +{ + GObject *ret; + GObject *source_object; + source_object = g_async_result_get_source_object (res); + ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); + g_object_unref (source_object); + if (ret != NULL) + return SCANNER1 (ret); + else + return NULL; +} + +/** + * scanner1_proxy_new_for_bus_sync: + * @bus_type: A #GBusType. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: A bus name (well-known or unique). + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL + * + * Like scanner1_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. + * + * The calling thread is blocked until a reply is received. + * + * See scanner1_proxy_new_for_bus() for the asynchronous version of this constructor. + * + * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set. + */ +Scanner1 * +scanner1_proxy_new_for_bus_sync ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error) +{ + GInitable *ret; + ret = g_initable_new (TYPE_SCANNER1_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL); + if (ret != NULL) + return SCANNER1 (ret); + else + return NULL; +} + + +/* ------------------------------------------------------------------------ */ + +/** + * Scanner1Skeleton: + * + * The #Scanner1Skeleton structure contains only private data and should only be accessed using the provided API. + */ + +/** + * Scanner1SkeletonClass: + * @parent_class: The parent class. + * + * Class structure for #Scanner1Skeleton. + */ + +struct _Scanner1SkeletonPrivate +{ + GValue *properties; + GList *changed_properties; + GSource *changed_properties_idle_source; + GMainContext *context; + GMutex lock; +}; + +static void +_scanner1_skeleton_handle_method_call ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer user_data) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data); + _ExtendedGDBusMethodInfo *info; + GVariantIter iter; + GVariant *child; + GValue *paramv; + gsize num_params; + guint num_extra; + gsize n; + guint signal_id; + GValue return_value = G_VALUE_INIT; + info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); + g_assert (info != NULL); + num_params = g_variant_n_children (parameters); + num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); + n = 0; + g_value_init (¶mv[n], TYPE_SCANNER1); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); +#else + g_assert_not_reached (); +#endif + } + g_variant_iter_init (&iter, parameters); + while ((child = g_variant_iter_next_value (&iter)) != NULL) + { + _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; + if (arg_info->use_gvariant) + { + g_value_init (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); + g_variant_unref (child); + } + signal_id = g_signal_lookup (info->signal_name, TYPE_SCANNER1); + g_value_init (&return_value, G_TYPE_BOOLEAN); + g_signal_emitv (paramv, signal_id, 0, &return_value); + if (!g_value_get_boolean (&return_value)) + g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); + g_value_unset (&return_value); + for (n = 0; n < num_params + num_extra; n++) + g_value_unset (¶mv[n]); + g_free (paramv); +} + +static GVariant * +_scanner1_skeleton_handle_get_property ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name G_GNUC_UNUSED, + const gchar *property_name, + GError **error, + gpointer user_data) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data); + GValue value = G_VALUE_INIT; + GParamSpec *pspec; + _ExtendedGDBusPropertyInfo *info; + GVariant *ret; + ret = NULL; + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, property_name); + g_assert (info != NULL); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); + if (pspec == NULL) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); + } + else + { + g_value_init (&value, pspec->value_type); + g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); + ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); + g_value_unset (&value); + } + return ret; +} + +static gboolean +_scanner1_skeleton_handle_set_property ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name G_GNUC_UNUSED, + const gchar *property_name, + GVariant *variant, + GError **error, + gpointer user_data) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data); + GValue value = G_VALUE_INIT; + GParamSpec *pspec; + _ExtendedGDBusPropertyInfo *info; + gboolean ret; + ret = FALSE; + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, property_name); + g_assert (info != NULL); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); + if (pspec == NULL) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); + } + else + { + if (info->use_gvariant) + g_value_set_variant (&value, variant); + else + g_dbus_gvariant_to_gvalue (variant, &value); + g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); + g_value_unset (&value); + ret = TRUE; + } + return ret; +} + +static const GDBusInterfaceVTable _scanner1_skeleton_vtable = +{ + _scanner1_skeleton_handle_method_call, + _scanner1_skeleton_handle_get_property, + _scanner1_skeleton_handle_set_property, + {NULL} +}; + +static GDBusInterfaceInfo * +scanner1_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) +{ + return scanner1_interface_info (); +} + +static GDBusInterfaceVTable * +scanner1_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) +{ + return (GDBusInterfaceVTable *) &_scanner1_skeleton_vtable; +} + +static GVariant * +scanner1_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (_skeleton); + + GVariantBuilder builder; + guint n; + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); + if (_scanner1_interface_info.parent_struct.properties == NULL) + goto out; + for (n = 0; _scanner1_interface_info.parent_struct.properties[n] != NULL; n++) + { + GDBusPropertyInfo *info = _scanner1_interface_info.parent_struct.properties[n]; + if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) + { + GVariant *value; + value = _scanner1_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.lightmediascanner.Scanner1", info->name, NULL, skeleton); + if (value != NULL) + { + g_variant_take_ref (value); + g_variant_builder_add (&builder, "{sv}", info->name, value); + g_variant_unref (value); + } + } + } +out: + return g_variant_builder_end (&builder); +} + +static gboolean _scanner1_emit_changed (gpointer user_data); + +static void +scanner1_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (_skeleton); + gboolean emit_changed = FALSE; + + g_mutex_lock (&skeleton->priv->lock); + if (skeleton->priv->changed_properties_idle_source != NULL) + { + g_source_destroy (skeleton->priv->changed_properties_idle_source); + skeleton->priv->changed_properties_idle_source = NULL; + emit_changed = TRUE; + } + g_mutex_unlock (&skeleton->priv->lock); + + if (emit_changed) + _scanner1_emit_changed (skeleton); +} + +static void +_scanner1_on_signal_scan_progress ( + Scanner1 *object, + const gchar *arg_Category, + const gchar *arg_Path, + guint64 arg_UpToDate, + guint64 arg_Processed, + guint64 arg_Deleted, + guint64 arg_Skipped, + guint64 arg_Errors) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); + + GList *connections, *l; + GVariant *signal_variant; + connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); + + signal_variant = g_variant_ref_sink (g_variant_new ("(ssttttt)", + arg_Category, + arg_Path, + arg_UpToDate, + arg_Processed, + arg_Deleted, + arg_Skipped, + arg_Errors)); + for (l = connections; l != NULL; l = l->next) + { + GDBusConnection *connection = l->data; + g_dbus_connection_emit_signal (connection, + NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.lightmediascanner.Scanner1", "ScanProgress", + signal_variant, NULL); + } + g_variant_unref (signal_variant); + g_list_free_full (connections, g_object_unref); +} + +static void scanner1_skeleton_iface_init (Scanner1Iface *iface); +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +G_DEFINE_TYPE_WITH_CODE (Scanner1Skeleton, scanner1_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, + G_ADD_PRIVATE (Scanner1Skeleton) + G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_skeleton_iface_init)); + +#else +G_DEFINE_TYPE_WITH_CODE (Scanner1Skeleton, scanner1_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, + G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_skeleton_iface_init)); + +#endif +static void +scanner1_skeleton_finalize (GObject *object) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); + guint n; + for (n = 0; n < 5; n++) + g_value_unset (&skeleton->priv->properties[n]); + g_free (skeleton->priv->properties); + g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); + if (skeleton->priv->changed_properties_idle_source != NULL) + g_source_destroy (skeleton->priv->changed_properties_idle_source); + g_main_context_unref (skeleton->priv->context); + g_mutex_clear (&skeleton->priv->lock); + G_OBJECT_CLASS (scanner1_skeleton_parent_class)->finalize (object); +} + +static void +scanner1_skeleton_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); + g_assert (prop_id != 0 && prop_id - 1 < 5); + g_mutex_lock (&skeleton->priv->lock); + g_value_copy (&skeleton->priv->properties[prop_id - 1], value); + g_mutex_unlock (&skeleton->priv->lock); +} + +static gboolean +_scanner1_emit_changed (gpointer user_data) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data); + GList *l; + GVariantBuilder builder; + GVariantBuilder invalidated_builder; + guint num_changes; + + g_mutex_lock (&skeleton->priv->lock); + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); + g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); + for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) + { + ChangedProperty *cp = l->data; + GVariant *variant; + const GValue *cur_value; + + cur_value = &skeleton->priv->properties[cp->prop_id - 1]; + if (!_g_value_equal (cur_value, &cp->orig_value)) + { + variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); + g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); + g_variant_unref (variant); + num_changes++; + } + } + if (num_changes > 0) + { + GList *connections, *ll; + GVariant *signal_variant; + signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.lightmediascanner.Scanner1", + &builder, &invalidated_builder)); + connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); + for (ll = connections; ll != NULL; ll = ll->next) + { + GDBusConnection *connection = ll->data; + + g_dbus_connection_emit_signal (connection, + NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), + "org.freedesktop.DBus.Properties", + "PropertiesChanged", + signal_variant, + NULL); + } + g_variant_unref (signal_variant); + g_list_free_full (connections, g_object_unref); + } + else + { + g_variant_builder_clear (&builder); + g_variant_builder_clear (&invalidated_builder); + } + g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); + skeleton->priv->changed_properties = NULL; + skeleton->priv->changed_properties_idle_source = NULL; + g_mutex_unlock (&skeleton->priv->lock); + return FALSE; +} + +static void +_scanner1_schedule_emit_changed (Scanner1Skeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) +{ + ChangedProperty *cp; + GList *l; + cp = NULL; + for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) + { + ChangedProperty *i_cp = l->data; + if (i_cp->info == info) + { + cp = i_cp; + break; + } + } + if (cp == NULL) + { + cp = g_new0 (ChangedProperty, 1); + cp->prop_id = prop_id; + cp->info = info; + skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); + g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); + g_value_copy (orig_value, &cp->orig_value); + } +} + +static void +scanner1_skeleton_notify (GObject *object, + GParamSpec *pspec G_GNUC_UNUSED) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); + g_mutex_lock (&skeleton->priv->lock); + if (skeleton->priv->changed_properties != NULL && + skeleton->priv->changed_properties_idle_source == NULL) + { + skeleton->priv->changed_properties_idle_source = g_idle_source_new (); + g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); + g_source_set_callback (skeleton->priv->changed_properties_idle_source, _scanner1_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); + g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _scanner1_emit_changed"); + g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); + g_source_unref (skeleton->priv->changed_properties_idle_source); + } + g_mutex_unlock (&skeleton->priv->lock); +} + +static void +scanner1_skeleton_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); + g_assert (prop_id != 0 && prop_id - 1 < 5); + g_mutex_lock (&skeleton->priv->lock); + g_object_freeze_notify (object); + if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) + { + if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) + _scanner1_schedule_emit_changed (skeleton, _scanner1_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); + g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); + g_object_notify_by_pspec (object, pspec); + } + g_mutex_unlock (&skeleton->priv->lock); + g_object_thaw_notify (object); +} + +static void +scanner1_skeleton_init (Scanner1Skeleton *skeleton) +{ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 + skeleton->priv = scanner1_skeleton_get_instance_private (skeleton); +#else + skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_SCANNER1_SKELETON, Scanner1SkeletonPrivate); +#endif + + g_mutex_init (&skeleton->priv->lock); + skeleton->priv->context = g_main_context_ref_thread_default (); + skeleton->priv->properties = g_new0 (GValue, 5); + g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING); + g_value_init (&skeleton->priv->properties[1], G_TYPE_BOOLEAN); + g_value_init (&skeleton->priv->properties[2], G_TYPE_BOOLEAN); + g_value_init (&skeleton->priv->properties[3], G_TYPE_UINT64); + g_value_init (&skeleton->priv->properties[4], G_TYPE_VARIANT); +} + +static const gchar * +scanner1_skeleton_get_data_base_path (Scanner1 *object) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); + const gchar *value; + g_mutex_lock (&skeleton->priv->lock); + value = g_value_get_string (&(skeleton->priv->properties[0])); + g_mutex_unlock (&skeleton->priv->lock); + return value; +} + +static gboolean +scanner1_skeleton_get_is_scanning (Scanner1 *object) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); + gboolean value; + g_mutex_lock (&skeleton->priv->lock); + value = g_value_get_boolean (&(skeleton->priv->properties[1])); + g_mutex_unlock (&skeleton->priv->lock); + return value; +} + +static gboolean +scanner1_skeleton_get_write_locked (Scanner1 *object) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); + gboolean value; + g_mutex_lock (&skeleton->priv->lock); + value = g_value_get_boolean (&(skeleton->priv->properties[2])); + g_mutex_unlock (&skeleton->priv->lock); + return value; +} + +static guint64 +scanner1_skeleton_get_update_id (Scanner1 *object) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); + guint64 value; + g_mutex_lock (&skeleton->priv->lock); + value = g_value_get_uint64 (&(skeleton->priv->properties[3])); + g_mutex_unlock (&skeleton->priv->lock); + return value; +} + +static GVariant * +scanner1_skeleton_get_categories (Scanner1 *object) +{ + Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); + GVariant *value; + g_mutex_lock (&skeleton->priv->lock); + value = g_value_get_variant (&(skeleton->priv->properties[4])); + g_mutex_unlock (&skeleton->priv->lock); + return value; +} + +static void +scanner1_skeleton_class_init (Scanner1SkeletonClass *klass) +{ + GObjectClass *gobject_class; + GDBusInterfaceSkeletonClass *skeleton_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = scanner1_skeleton_finalize; + gobject_class->get_property = scanner1_skeleton_get_property; + gobject_class->set_property = scanner1_skeleton_set_property; + gobject_class->notify = scanner1_skeleton_notify; + + + scanner1_override_properties (gobject_class, 1); + + skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); + skeleton_class->get_info = scanner1_skeleton_dbus_interface_get_info; + skeleton_class->get_properties = scanner1_skeleton_dbus_interface_get_properties; + skeleton_class->flush = scanner1_skeleton_dbus_interface_flush; + skeleton_class->get_vtable = scanner1_skeleton_dbus_interface_get_vtable; + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 + g_type_class_add_private (klass, sizeof (Scanner1SkeletonPrivate)); +#endif +} + +static void +scanner1_skeleton_iface_init (Scanner1Iface *iface) +{ + iface->scan_progress = _scanner1_on_signal_scan_progress; + iface->get_data_base_path = scanner1_skeleton_get_data_base_path; + iface->get_is_scanning = scanner1_skeleton_get_is_scanning; + iface->get_write_locked = scanner1_skeleton_get_write_locked; + iface->get_update_id = scanner1_skeleton_get_update_id; + iface->get_categories = scanner1_skeleton_get_categories; +} + +/** + * scanner1_skeleton_new: + * + * Creates a skeleton object for the D-Bus interface org.lightmediascanner.Scanner1. + * + * Returns: (transfer full) (type Scanner1Skeleton): The skeleton object. + */ +Scanner1 * +scanner1_skeleton_new (void) +{ + return SCANNER1 (g_object_new (TYPE_SCANNER1_SKELETON, NULL)); +} + diff --git a/binding/gdbus/lightmediascanner_interface.h b/binding/gdbus/lightmediascanner_interface.h new file mode 100644 index 0000000..4f42086 --- /dev/null +++ b/binding/gdbus/lightmediascanner_interface.h @@ -0,0 +1,896 @@ +/* + * Generated by gdbus-codegen 2.52.0. DO NOT EDIT. + * + * The license of this code is the same as for the source it was derived from. + */ + +#ifndef __LIGHTMEDIASCANNER_INTERFACE_H__ +#define __LIGHTMEDIASCANNER_INTERFACE_H__ + +#include + +G_BEGIN_DECLS + + +/* ------------------------------------------------------------------------ */ +/* Declarations for org.freedesktop.DBus.Properties */ + +#define TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES (org_freedesktop_dbus_properties_get_type ()) +#define ORG_FREEDESKTOP_DBUS_PROPERTIES(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, OrgFreedesktopDBusProperties)) +#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES)) +#define ORG_FREEDESKTOP_DBUS_PROPERTIES_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, OrgFreedesktopDBusPropertiesIface)) + +struct _OrgFreedesktopDBusProperties; +typedef struct _OrgFreedesktopDBusProperties OrgFreedesktopDBusProperties; +typedef struct _OrgFreedesktopDBusPropertiesIface OrgFreedesktopDBusPropertiesIface; + +struct _OrgFreedesktopDBusPropertiesIface +{ + GTypeInterface parent_iface; + + + gboolean (*handle_get) ( + OrgFreedesktopDBusProperties *object, + GDBusMethodInvocation *invocation, + const gchar *arg_interface_name, + const gchar *arg_property_name); + + gboolean (*handle_get_all) ( + OrgFreedesktopDBusProperties *object, + GDBusMethodInvocation *invocation, + const gchar *arg_interface_name); + + gboolean (*handle_set) ( + OrgFreedesktopDBusProperties *object, + GDBusMethodInvocation *invocation, + const gchar *arg_interface_name, + const gchar *arg_property_name, + GVariant *arg_value); + + void (*properties_changed) ( + OrgFreedesktopDBusProperties *object, + const gchar *arg_interface_name, + GVariant *arg_changed_properties, + const gchar *const *arg_invalidated_properties); + +}; + +GType org_freedesktop_dbus_properties_get_type (void) G_GNUC_CONST; + +GDBusInterfaceInfo *org_freedesktop_dbus_properties_interface_info (void); +guint org_freedesktop_dbus_properties_override_properties (GObjectClass *klass, guint property_id_begin); + + +/* D-Bus method call completion functions: */ +void org_freedesktop_dbus_properties_complete_get ( + OrgFreedesktopDBusProperties *object, + GDBusMethodInvocation *invocation, + GVariant *value); + +void org_freedesktop_dbus_properties_complete_get_all ( + OrgFreedesktopDBusProperties *object, + GDBusMethodInvocation *invocation, + GVariant *properties); + +void org_freedesktop_dbus_properties_complete_set ( + OrgFreedesktopDBusProperties *object, + GDBusMethodInvocation *invocation); + + + +/* D-Bus signal emissions functions: */ +void org_freedesktop_dbus_properties_emit_properties_changed ( + OrgFreedesktopDBusProperties *object, + const gchar *arg_interface_name, + GVariant *arg_changed_properties, + const gchar *const *arg_invalidated_properties); + + + +/* D-Bus method calls: */ +void org_freedesktop_dbus_properties_call_get ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + const gchar *arg_property_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean org_freedesktop_dbus_properties_call_get_finish ( + OrgFreedesktopDBusProperties *proxy, + GVariant **out_value, + GAsyncResult *res, + GError **error); + +gboolean org_freedesktop_dbus_properties_call_get_sync ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + const gchar *arg_property_name, + GVariant **out_value, + GCancellable *cancellable, + GError **error); + +void org_freedesktop_dbus_properties_call_get_all ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean org_freedesktop_dbus_properties_call_get_all_finish ( + OrgFreedesktopDBusProperties *proxy, + GVariant **out_properties, + GAsyncResult *res, + GError **error); + +gboolean org_freedesktop_dbus_properties_call_get_all_sync ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + GVariant **out_properties, + GCancellable *cancellable, + GError **error); + +void org_freedesktop_dbus_properties_call_set ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + const gchar *arg_property_name, + GVariant *arg_value, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean org_freedesktop_dbus_properties_call_set_finish ( + OrgFreedesktopDBusProperties *proxy, + GAsyncResult *res, + GError **error); + +gboolean org_freedesktop_dbus_properties_call_set_sync ( + OrgFreedesktopDBusProperties *proxy, + const gchar *arg_interface_name, + const gchar *arg_property_name, + GVariant *arg_value, + GCancellable *cancellable, + GError **error); + + + +/* ---- */ + +#define TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY (org_freedesktop_dbus_properties_proxy_get_type ()) +#define ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxy)) +#define ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxyClass)) +#define ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxyClass)) +#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY)) +#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY)) + +typedef struct _OrgFreedesktopDBusPropertiesProxy OrgFreedesktopDBusPropertiesProxy; +typedef struct _OrgFreedesktopDBusPropertiesProxyClass OrgFreedesktopDBusPropertiesProxyClass; +typedef struct _OrgFreedesktopDBusPropertiesProxyPrivate OrgFreedesktopDBusPropertiesProxyPrivate; + +struct _OrgFreedesktopDBusPropertiesProxy +{ + /*< private >*/ + GDBusProxy parent_instance; + OrgFreedesktopDBusPropertiesProxyPrivate *priv; +}; + +struct _OrgFreedesktopDBusPropertiesProxyClass +{ + GDBusProxyClass parent_class; +}; + +GType org_freedesktop_dbus_properties_proxy_get_type (void) G_GNUC_CONST; + +#if GLIB_CHECK_VERSION(2, 44, 0) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPropertiesProxy, g_object_unref) +#endif + +void org_freedesktop_dbus_properties_proxy_new ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_finish ( + GAsyncResult *res, + GError **error); +OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_sync ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); + +void org_freedesktop_dbus_properties_proxy_new_for_bus ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_for_bus_finish ( + GAsyncResult *res, + GError **error); +OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_for_bus_sync ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); + + +/* ---- */ + +#define TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (org_freedesktop_dbus_properties_skeleton_get_type ()) +#define ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeleton)) +#define ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeletonClass)) +#define ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeletonClass)) +#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON)) +#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON)) + +typedef struct _OrgFreedesktopDBusPropertiesSkeleton OrgFreedesktopDBusPropertiesSkeleton; +typedef struct _OrgFreedesktopDBusPropertiesSkeletonClass OrgFreedesktopDBusPropertiesSkeletonClass; +typedef struct _OrgFreedesktopDBusPropertiesSkeletonPrivate OrgFreedesktopDBusPropertiesSkeletonPrivate; + +struct _OrgFreedesktopDBusPropertiesSkeleton +{ + /*< private >*/ + GDBusInterfaceSkeleton parent_instance; + OrgFreedesktopDBusPropertiesSkeletonPrivate *priv; +}; + +struct _OrgFreedesktopDBusPropertiesSkeletonClass +{ + GDBusInterfaceSkeletonClass parent_class; +}; + +GType org_freedesktop_dbus_properties_skeleton_get_type (void) G_GNUC_CONST; + +#if GLIB_CHECK_VERSION(2, 44, 0) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPropertiesSkeleton, g_object_unref) +#endif + +OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_skeleton_new (void); + + +/* ------------------------------------------------------------------------ */ +/* Declarations for org.freedesktop.DBus.Introspectable */ + +#define TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (org_freedesktop_dbus_introspectable_get_type ()) +#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, OrgFreedesktopDBusIntrospectable)) +#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE)) +#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, OrgFreedesktopDBusIntrospectableIface)) + +struct _OrgFreedesktopDBusIntrospectable; +typedef struct _OrgFreedesktopDBusIntrospectable OrgFreedesktopDBusIntrospectable; +typedef struct _OrgFreedesktopDBusIntrospectableIface OrgFreedesktopDBusIntrospectableIface; + +struct _OrgFreedesktopDBusIntrospectableIface +{ + GTypeInterface parent_iface; + + gboolean (*handle_introspect) ( + OrgFreedesktopDBusIntrospectable *object, + GDBusMethodInvocation *invocation); + +}; + +GType org_freedesktop_dbus_introspectable_get_type (void) G_GNUC_CONST; + +GDBusInterfaceInfo *org_freedesktop_dbus_introspectable_interface_info (void); +guint org_freedesktop_dbus_introspectable_override_properties (GObjectClass *klass, guint property_id_begin); + + +/* D-Bus method call completion functions: */ +void org_freedesktop_dbus_introspectable_complete_introspect ( + OrgFreedesktopDBusIntrospectable *object, + GDBusMethodInvocation *invocation, + const gchar *xml_data); + + + +/* D-Bus method calls: */ +void org_freedesktop_dbus_introspectable_call_introspect ( + OrgFreedesktopDBusIntrospectable *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean org_freedesktop_dbus_introspectable_call_introspect_finish ( + OrgFreedesktopDBusIntrospectable *proxy, + gchar **out_xml_data, + GAsyncResult *res, + GError **error); + +gboolean org_freedesktop_dbus_introspectable_call_introspect_sync ( + OrgFreedesktopDBusIntrospectable *proxy, + gchar **out_xml_data, + GCancellable *cancellable, + GError **error); + + + +/* ---- */ + +#define TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (org_freedesktop_dbus_introspectable_proxy_get_type ()) +#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxy)) +#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxyClass)) +#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxyClass)) +#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY)) +#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY)) + +typedef struct _OrgFreedesktopDBusIntrospectableProxy OrgFreedesktopDBusIntrospectableProxy; +typedef struct _OrgFreedesktopDBusIntrospectableProxyClass OrgFreedesktopDBusIntrospectableProxyClass; +typedef struct _OrgFreedesktopDBusIntrospectableProxyPrivate OrgFreedesktopDBusIntrospectableProxyPrivate; + +struct _OrgFreedesktopDBusIntrospectableProxy +{ + /*< private >*/ + GDBusProxy parent_instance; + OrgFreedesktopDBusIntrospectableProxyPrivate *priv; +}; + +struct _OrgFreedesktopDBusIntrospectableProxyClass +{ + GDBusProxyClass parent_class; +}; + +GType org_freedesktop_dbus_introspectable_proxy_get_type (void) G_GNUC_CONST; + +#if GLIB_CHECK_VERSION(2, 44, 0) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusIntrospectableProxy, g_object_unref) +#endif + +void org_freedesktop_dbus_introspectable_proxy_new ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_finish ( + GAsyncResult *res, + GError **error); +OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_sync ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); + +void org_freedesktop_dbus_introspectable_proxy_new_for_bus ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish ( + GAsyncResult *res, + GError **error); +OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); + + +/* ---- */ + +#define TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (org_freedesktop_dbus_introspectable_skeleton_get_type ()) +#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeleton)) +#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeletonClass)) +#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeletonClass)) +#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON)) +#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON)) + +typedef struct _OrgFreedesktopDBusIntrospectableSkeleton OrgFreedesktopDBusIntrospectableSkeleton; +typedef struct _OrgFreedesktopDBusIntrospectableSkeletonClass OrgFreedesktopDBusIntrospectableSkeletonClass; +typedef struct _OrgFreedesktopDBusIntrospectableSkeletonPrivate OrgFreedesktopDBusIntrospectableSkeletonPrivate; + +struct _OrgFreedesktopDBusIntrospectableSkeleton +{ + /*< private >*/ + GDBusInterfaceSkeleton parent_instance; + OrgFreedesktopDBusIntrospectableSkeletonPrivate *priv; +}; + +struct _OrgFreedesktopDBusIntrospectableSkeletonClass +{ + GDBusInterfaceSkeletonClass parent_class; +}; + +GType org_freedesktop_dbus_introspectable_skeleton_get_type (void) G_GNUC_CONST; + +#if GLIB_CHECK_VERSION(2, 44, 0) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusIntrospectableSkeleton, g_object_unref) +#endif + +OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_skeleton_new (void); + + +/* ------------------------------------------------------------------------ */ +/* Declarations for org.freedesktop.DBus.Peer */ + +#define TYPE_ORG_FREEDESKTOP_DBUS_PEER (org_freedesktop_dbus_peer_get_type ()) +#define ORG_FREEDESKTOP_DBUS_PEER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER, OrgFreedesktopDBusPeer)) +#define IS_ORG_FREEDESKTOP_DBUS_PEER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER)) +#define ORG_FREEDESKTOP_DBUS_PEER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER, OrgFreedesktopDBusPeerIface)) + +struct _OrgFreedesktopDBusPeer; +typedef struct _OrgFreedesktopDBusPeer OrgFreedesktopDBusPeer; +typedef struct _OrgFreedesktopDBusPeerIface OrgFreedesktopDBusPeerIface; + +struct _OrgFreedesktopDBusPeerIface +{ + GTypeInterface parent_iface; + + gboolean (*handle_get_machine_id) ( + OrgFreedesktopDBusPeer *object, + GDBusMethodInvocation *invocation); + + gboolean (*handle_ping) ( + OrgFreedesktopDBusPeer *object, + GDBusMethodInvocation *invocation); + +}; + +GType org_freedesktop_dbus_peer_get_type (void) G_GNUC_CONST; + +GDBusInterfaceInfo *org_freedesktop_dbus_peer_interface_info (void); +guint org_freedesktop_dbus_peer_override_properties (GObjectClass *klass, guint property_id_begin); + + +/* D-Bus method call completion functions: */ +void org_freedesktop_dbus_peer_complete_ping ( + OrgFreedesktopDBusPeer *object, + GDBusMethodInvocation *invocation); + +void org_freedesktop_dbus_peer_complete_get_machine_id ( + OrgFreedesktopDBusPeer *object, + GDBusMethodInvocation *invocation, + const gchar *machine_uuid); + + + +/* D-Bus method calls: */ +void org_freedesktop_dbus_peer_call_ping ( + OrgFreedesktopDBusPeer *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean org_freedesktop_dbus_peer_call_ping_finish ( + OrgFreedesktopDBusPeer *proxy, + GAsyncResult *res, + GError **error); + +gboolean org_freedesktop_dbus_peer_call_ping_sync ( + OrgFreedesktopDBusPeer *proxy, + GCancellable *cancellable, + GError **error); + +void org_freedesktop_dbus_peer_call_get_machine_id ( + OrgFreedesktopDBusPeer *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean org_freedesktop_dbus_peer_call_get_machine_id_finish ( + OrgFreedesktopDBusPeer *proxy, + gchar **out_machine_uuid, + GAsyncResult *res, + GError **error); + +gboolean org_freedesktop_dbus_peer_call_get_machine_id_sync ( + OrgFreedesktopDBusPeer *proxy, + gchar **out_machine_uuid, + GCancellable *cancellable, + GError **error); + + + +/* ---- */ + +#define TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY (org_freedesktop_dbus_peer_proxy_get_type ()) +#define ORG_FREEDESKTOP_DBUS_PEER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxy)) +#define ORG_FREEDESKTOP_DBUS_PEER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxyClass)) +#define ORG_FREEDESKTOP_DBUS_PEER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxyClass)) +#define IS_ORG_FREEDESKTOP_DBUS_PEER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY)) +#define IS_ORG_FREEDESKTOP_DBUS_PEER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY)) + +typedef struct _OrgFreedesktopDBusPeerProxy OrgFreedesktopDBusPeerProxy; +typedef struct _OrgFreedesktopDBusPeerProxyClass OrgFreedesktopDBusPeerProxyClass; +typedef struct _OrgFreedesktopDBusPeerProxyPrivate OrgFreedesktopDBusPeerProxyPrivate; + +struct _OrgFreedesktopDBusPeerProxy +{ + /*< private >*/ + GDBusProxy parent_instance; + OrgFreedesktopDBusPeerProxyPrivate *priv; +}; + +struct _OrgFreedesktopDBusPeerProxyClass +{ + GDBusProxyClass parent_class; +}; + +GType org_freedesktop_dbus_peer_proxy_get_type (void) G_GNUC_CONST; + +#if GLIB_CHECK_VERSION(2, 44, 0) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPeerProxy, g_object_unref) +#endif + +void org_freedesktop_dbus_peer_proxy_new ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_finish ( + GAsyncResult *res, + GError **error); +OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_sync ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); + +void org_freedesktop_dbus_peer_proxy_new_for_bus ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_for_bus_finish ( + GAsyncResult *res, + GError **error); +OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_for_bus_sync ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); + + +/* ---- */ + +#define TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON (org_freedesktop_dbus_peer_skeleton_get_type ()) +#define ORG_FREEDESKTOP_DBUS_PEER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeleton)) +#define ORG_FREEDESKTOP_DBUS_PEER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeletonClass)) +#define ORG_FREEDESKTOP_DBUS_PEER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeletonClass)) +#define IS_ORG_FREEDESKTOP_DBUS_PEER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON)) +#define IS_ORG_FREEDESKTOP_DBUS_PEER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON)) + +typedef struct _OrgFreedesktopDBusPeerSkeleton OrgFreedesktopDBusPeerSkeleton; +typedef struct _OrgFreedesktopDBusPeerSkeletonClass OrgFreedesktopDBusPeerSkeletonClass; +typedef struct _OrgFreedesktopDBusPeerSkeletonPrivate OrgFreedesktopDBusPeerSkeletonPrivate; + +struct _OrgFreedesktopDBusPeerSkeleton +{ + /*< private >*/ + GDBusInterfaceSkeleton parent_instance; + OrgFreedesktopDBusPeerSkeletonPrivate *priv; +}; + +struct _OrgFreedesktopDBusPeerSkeletonClass +{ + GDBusInterfaceSkeletonClass parent_class; +}; + +GType org_freedesktop_dbus_peer_skeleton_get_type (void) G_GNUC_CONST; + +#if GLIB_CHECK_VERSION(2, 44, 0) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPeerSkeleton, g_object_unref) +#endif + +OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_skeleton_new (void); + + +/* ------------------------------------------------------------------------ */ +/* Declarations for org.lightmediascanner.Scanner1 */ + +#define TYPE_SCANNER1 (scanner1_get_type ()) +#define SCANNER1(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_SCANNER1, Scanner1)) +#define IS_SCANNER1(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_SCANNER1)) +#define SCANNER1_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_SCANNER1, Scanner1Iface)) + +struct _Scanner1; +typedef struct _Scanner1 Scanner1; +typedef struct _Scanner1Iface Scanner1Iface; + +struct _Scanner1Iface +{ + GTypeInterface parent_iface; + + + + gboolean (*handle_release_write_lock) ( + Scanner1 *object, + GDBusMethodInvocation *invocation); + + gboolean (*handle_request_write_lock) ( + Scanner1 *object, + GDBusMethodInvocation *invocation); + + gboolean (*handle_scan) ( + Scanner1 *object, + GDBusMethodInvocation *invocation, + GVariant *arg_specification); + + gboolean (*handle_stop) ( + Scanner1 *object, + GDBusMethodInvocation *invocation); + + GVariant * (*get_categories) (Scanner1 *object); + + const gchar * (*get_data_base_path) (Scanner1 *object); + + gboolean (*get_is_scanning) (Scanner1 *object); + + guint64 (*get_update_id) (Scanner1 *object); + + gboolean (*get_write_locked) (Scanner1 *object); + + void (*scan_progress) ( + Scanner1 *object, + const gchar *arg_Category, + const gchar *arg_Path, + guint64 arg_UpToDate, + guint64 arg_Processed, + guint64 arg_Deleted, + guint64 arg_Skipped, + guint64 arg_Errors); + +}; + +GType scanner1_get_type (void) G_GNUC_CONST; + +GDBusInterfaceInfo *scanner1_interface_info (void); +guint scanner1_override_properties (GObjectClass *klass, guint property_id_begin); + + +/* D-Bus method call completion functions: */ +void scanner1_complete_scan ( + Scanner1 *object, + GDBusMethodInvocation *invocation); + +void scanner1_complete_stop ( + Scanner1 *object, + GDBusMethodInvocation *invocation); + +void scanner1_complete_request_write_lock ( + Scanner1 *object, + GDBusMethodInvocation *invocation); + +void scanner1_complete_release_write_lock ( + Scanner1 *object, + GDBusMethodInvocation *invocation); + + + +/* D-Bus signal emissions functions: */ +void scanner1_emit_scan_progress ( + Scanner1 *object, + const gchar *arg_Category, + const gchar *arg_Path, + guint64 arg_UpToDate, + guint64 arg_Processed, + guint64 arg_Deleted, + guint64 arg_Skipped, + guint64 arg_Errors); + + + +/* D-Bus method calls: */ +void scanner1_call_scan ( + Scanner1 *proxy, + GVariant *arg_specification, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean scanner1_call_scan_finish ( + Scanner1 *proxy, + GAsyncResult *res, + GError **error); + +gboolean scanner1_call_scan_sync ( + Scanner1 *proxy, + GVariant *arg_specification, + GCancellable *cancellable, + GError **error); + +void scanner1_call_stop ( + Scanner1 *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean scanner1_call_stop_finish ( + Scanner1 *proxy, + GAsyncResult *res, + GError **error); + +gboolean scanner1_call_stop_sync ( + Scanner1 *proxy, + GCancellable *cancellable, + GError **error); + +void scanner1_call_request_write_lock ( + Scanner1 *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean scanner1_call_request_write_lock_finish ( + Scanner1 *proxy, + GAsyncResult *res, + GError **error); + +gboolean scanner1_call_request_write_lock_sync ( + Scanner1 *proxy, + GCancellable *cancellable, + GError **error); + +void scanner1_call_release_write_lock ( + Scanner1 *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean scanner1_call_release_write_lock_finish ( + Scanner1 *proxy, + GAsyncResult *res, + GError **error); + +gboolean scanner1_call_release_write_lock_sync ( + Scanner1 *proxy, + GCancellable *cancellable, + GError **error); + + + +/* D-Bus property accessors: */ +const gchar *scanner1_get_data_base_path (Scanner1 *object); +gchar *scanner1_dup_data_base_path (Scanner1 *object); +void scanner1_set_data_base_path (Scanner1 *object, const gchar *value); + +gboolean scanner1_get_is_scanning (Scanner1 *object); +void scanner1_set_is_scanning (Scanner1 *object, gboolean value); + +gboolean scanner1_get_write_locked (Scanner1 *object); +void scanner1_set_write_locked (Scanner1 *object, gboolean value); + +guint64 scanner1_get_update_id (Scanner1 *object); +void scanner1_set_update_id (Scanner1 *object, guint64 value); + +GVariant *scanner1_get_categories (Scanner1 *object); +GVariant *scanner1_dup_categories (Scanner1 *object); +void scanner1_set_categories (Scanner1 *object, GVariant *value); + + +/* ---- */ + +#define TYPE_SCANNER1_PROXY (scanner1_proxy_get_type ()) +#define SCANNER1_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_SCANNER1_PROXY, Scanner1Proxy)) +#define SCANNER1_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_SCANNER1_PROXY, Scanner1ProxyClass)) +#define SCANNER1_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_SCANNER1_PROXY, Scanner1ProxyClass)) +#define IS_SCANNER1_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_SCANNER1_PROXY)) +#define IS_SCANNER1_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_SCANNER1_PROXY)) + +typedef struct _Scanner1Proxy Scanner1Proxy; +typedef struct _Scanner1ProxyClass Scanner1ProxyClass; +typedef struct _Scanner1ProxyPrivate Scanner1ProxyPrivate; + +struct _Scanner1Proxy +{ + /*< private >*/ + GDBusProxy parent_instance; + Scanner1ProxyPrivate *priv; +}; + +struct _Scanner1ProxyClass +{ + GDBusProxyClass parent_class; +}; + +GType scanner1_proxy_get_type (void) G_GNUC_CONST; + +#if GLIB_CHECK_VERSION(2, 44, 0) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (Scanner1Proxy, g_object_unref) +#endif + +void scanner1_proxy_new ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +Scanner1 *scanner1_proxy_new_finish ( + GAsyncResult *res, + GError **error); +Scanner1 *scanner1_proxy_new_sync ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); + +void scanner1_proxy_new_for_bus ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +Scanner1 *scanner1_proxy_new_for_bus_finish ( + GAsyncResult *res, + GError **error); +Scanner1 *scanner1_proxy_new_for_bus_sync ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); + + +/* ---- */ + +#define TYPE_SCANNER1_SKELETON (scanner1_skeleton_get_type ()) +#define SCANNER1_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_SCANNER1_SKELETON, Scanner1Skeleton)) +#define SCANNER1_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_SCANNER1_SKELETON, Scanner1SkeletonClass)) +#define SCANNER1_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_SCANNER1_SKELETON, Scanner1SkeletonClass)) +#define IS_SCANNER1_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_SCANNER1_SKELETON)) +#define IS_SCANNER1_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_SCANNER1_SKELETON)) + +typedef struct _Scanner1Skeleton Scanner1Skeleton; +typedef struct _Scanner1SkeletonClass Scanner1SkeletonClass; +typedef struct _Scanner1SkeletonPrivate Scanner1SkeletonPrivate; + +struct _Scanner1Skeleton +{ + /*< private >*/ + GDBusInterfaceSkeleton parent_instance; + Scanner1SkeletonPrivate *priv; +}; + +struct _Scanner1SkeletonClass +{ + GDBusInterfaceSkeletonClass parent_class; +}; + +GType scanner1_skeleton_get_type (void) G_GNUC_CONST; + +#if GLIB_CHECK_VERSION(2, 44, 0) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (Scanner1Skeleton, g_object_unref) +#endif + +Scanner1 *scanner1_skeleton_new (void); + + +G_END_DECLS + +#endif /* __LIGHTMEDIASCANNER_INTERFACE_H__ */ diff --git a/binding/media-api.c b/binding/media-api.c new file mode 100644 index 0000000..f02e24a --- /dev/null +++ b/binding/media-api.c @@ -0,0 +1,173 @@ +/* + * Copyright 2017 Konsulko Group + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include + +#define AFB_BINDING_VERSION 2 +#include + +#include "media-manager.h" + +static struct afb_event media_added_event; +static struct afb_event media_removed_event; + +/* + * @brief Subscribe for an event + * + * @param struct afb_req : an afb request structure + * + */ +static void subscribe(struct afb_req request) +{ + const char *value = afb_req_value(request, "value"); + if(value) { + if(!strcasecmp(value, "media_added")) { + afb_req_subscribe(request, media_added_event); + } else if(!strcasecmp(value, "media_removed")) { + afb_req_subscribe(request, media_removed_event); + } else { + afb_req_fail(request, "failed", "Invalid event"); + return; + } + } + afb_req_success(request, NULL, NULL); +} + +/* + * @brief Unsubscribe for an event + * + * @param struct afb_req : an afb request structure + * + */ +static void unsubscribe(struct afb_req request) +{ + const char *value = afb_req_value(request, "value"); + if(value) { + if(!strcasecmp(value, "media_added")) { + afb_req_unsubscribe(request, media_added_event); + } else if(!strcasecmp(value, "media_removed")) { + afb_req_unsubscribe(request, media_removed_event); + } else { + afb_req_fail(request, "failed", "Invalid event"); + return; + } + } + afb_req_success(request, NULL, NULL); +} + +static json_object *new_json_object_from_device(GList *list) +{ + json_object *jarray = json_object_new_array(); + json_object *jresp = json_object_new_object(); + json_object *jstring = NULL; + GList *l; + + for (l = list; l; l = l->next) + { + jstring = json_object_new_string(l->data); + json_object_array_add(jarray, jstring); + } + + if (jstring == NULL) + return NULL; + + json_object_object_add(jresp, "Media", jarray); + + return jresp; +} + +static void media_results_get (struct afb_req request) +{ + GList *list; + json_object *jresp = NULL; + + ListLock(); + list = media_lightmediascanner_scan(); + list = media_local_scan(list); + if (list == NULL) { + afb_req_fail(request, "failed", "media scan error"); + ListUnlock(); + return; + } + + jresp = new_json_object_from_device(list); + g_list_free(list); + ListUnlock(); + + if (jresp == NULL) { + afb_req_fail(request, "failed", "media parsing error"); + return; + } + + afb_req_success(request, jresp, "Media Results Displayed"); +} + +static void media_broadcast_device_added (GList *list) +{ + json_object *jresp = new_json_object_from_device(list); + + if (jresp != NULL) { + afb_event_push(media_added_event, jresp); + } +} + +static void media_broadcast_device_removed (const char *obj_path) +{ + json_object *jresp = json_object_new_object(); + json_object *jstring = json_object_new_string(obj_path); + + json_object_object_add(jresp, "Path", jstring); + + afb_event_push(media_removed_event, jresp); +} + +static const struct afb_verb_v2 binding_verbs[] = { + { "media_result", media_results_get, NULL, "Media scan result", AFB_SESSION_CHECK }, + { "subscribe", subscribe, NULL, "Subscribe for an event", AFB_SESSION_CHECK }, + { "unsubscribe", unsubscribe, NULL, "Unsubscribe for an event", AFB_SESSION_CHECK }, + { NULL } +}; + +static int preinit() +{ + Binding_RegisterCallback_t API_Callback; + API_Callback.binding_device_added = media_broadcast_device_added; + API_Callback.binding_device_removed = media_broadcast_device_removed; + BindingAPIRegister(&API_Callback); + + return MediaPlayerManagerInit(); +} + +static int init() +{ + media_added_event = afb_daemon_make_event("media_added"); + media_removed_event = afb_daemon_make_event("media_removed"); + + return 0; +} + +const struct afb_binding_v2 afbBindingV2 = { + .api = "mediascanner", + .specification = "mediaplayer API", + .preinit = preinit, + .init = init, + .verbs = binding_verbs, +}; diff --git a/binding/media-manager.c b/binding/media-manager.c new file mode 100644 index 0000000..342df47 --- /dev/null +++ b/binding/media-manager.c @@ -0,0 +1,294 @@ +/* + * Copyright 2017 Konsulko Group + * + * Based on bluetooth-manager.c + * Copyright 2016 ALPS ELECTRIC CO., LTD. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "media-manager.h" + +static Binding_RegisterCallback_t g_RegisterCallback = { 0 }; +static stMediaPlayerManage MediaPlayerManage = { 0 }; + +/* ------ LOCAL FUNCTIONS --------- */ +void ListLock() { + g_mutex_lock(&(MediaPlayerManage.m)); +} + +void ListUnlock() { + g_mutex_unlock(&(MediaPlayerManage.m)); +} + +void DebugTraceSendMsg(int level, gchar* message) +{ +#ifdef LOCAL_PRINT_DEBUG + switch (level) + { + case DT_LEVEL_ERROR: + g_print("[E]"); + break; + + case DT_LEVEL_WARNING: + g_print("[W]"); + break; + + case DT_LEVEL_NOTICE: + g_print("[N]"); + break; + + case DT_LEVEL_INFO: + g_print("[I]"); + break; + + case DT_LEVEL_DEBUG: + g_print("[D]"); + break; + + default: + g_print("[-]"); + break; + } + + g_print("%s",message); +#endif + + if (message) { + g_free(message); + } + +} + +GList* media_local_scan(GList *list) +{ + gchar *path = g_strconcat(g_get_home_dir(), "/", "Music", NULL); + gchar *tmp = NULL; + GDir *dir; + + dir = g_dir_open(path, 0, NULL); + if (dir == NULL) + { + LOGE("Cannot open media path %s\n", path); + return list; + } + + while ((tmp = (gchar *) g_dir_read_name(dir)) != NULL) + { + list = g_list_append(list, g_strdup_printf("file://%s/%s", path, tmp)); + } + + g_free(path); + g_dir_close(dir); + + return list; +} + +GList* media_lightmediascanner_scan(void) +{ + sqlite3 *conn; + sqlite3_stmt *res; + GList *list = NULL; + const char *tail; + const gchar *db_path; + int ret = 0; + + db_path = scanner1_get_data_base_path(MediaPlayerManage.lms_proxy); + + ret = sqlite3_open(db_path, &conn); + if (ret) { + LOGE("Cannot open SQLITE database: '%s'\n", db_path); + return NULL; + } + + ret = sqlite3_prepare_v2(conn, SQL_QUERY, strlen(SQL_QUERY) + 1, &res, &tail); + if (ret) { + LOGE("Cannot execute query '%s'\n", SQL_QUERY); + return NULL; + } + + while (sqlite3_step(res) == SQLITE_ROW) { + struct stat buf; + const char *path = (const char *) sqlite3_column_text(res, 0); + + ret = stat(path, &buf); + if (ret) + continue; + + list = g_list_append(list, g_strdup_printf("file://%s", path)); + } + + return list; +} + + +static void +on_interface_proxy_properties_changed (GDBusProxy *proxy, + GVariant *changed_properties, + const gchar* const *invalidated_properties) +{ + GVariantIter iter; + const gchar *key; + GVariant *subValue; + const gchar *pInterface; + GList *list; + + pInterface = g_dbus_proxy_get_interface_name (proxy); + + if (0 != g_strcmp0(pInterface, LIGHTMEDIASCANNER_INTERFACE)) + return; + + g_variant_iter_init (&iter, changed_properties); + while (g_variant_iter_next (&iter, "{&sv}", &key, &subValue)) + { + gboolean val; + if (0 == g_strcmp0(key,"IsScanning")) { + g_variant_get(subValue, "b", &val); + if (val == TRUE) + return; + } else if (0 == g_strcmp0(key, "WriteLocked")) { + g_variant_get(subValue, "b", &val); + if (val == TRUE) + return; + } + } + + ListLock(); + + list = media_lightmediascanner_scan(); + + if (list != NULL && g_RegisterCallback.binding_device_added) + g_RegisterCallback.binding_device_added(list); + + g_list_free_full(list, g_free); + + ListUnlock(); +} + +static int MediaPlayerDBusInit(void) +{ + GError *error = NULL; + + MediaPlayerManage.lms_proxy = scanner1_proxy_new_for_bus_sync( + G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, LIGHTMEDIASCANNER_SERVICE, + LIGHTMEDIASCANNER_PATH, NULL, &error); + + if (MediaPlayerManage.lms_proxy == NULL) { + LOGE("Create LightMediaScanner Proxy failed\n"); + return -1; + } + + g_signal_connect (MediaPlayerManage.lms_proxy, + "g-properties-changed", + G_CALLBACK (on_interface_proxy_properties_changed), + NULL); + + return 0; +} + +static void *media_event_loop_thread(void *unused) +{ + GMainLoop *loop = g_main_loop_new(NULL, FALSE); + int ret; + + ret = MediaPlayerDBusInit(); + if (ret == 0) { + LOGD("g_main_loop_run\n"); + g_main_loop_run(loop); + } + + g_main_loop_unref(loop); + + return NULL; +} + +void +unmount_cb (GFileMonitor *mon, + GFile *file, + GFile *other_file, + GFileMonitorEvent event, + gpointer udata) +{ + gchar *path = g_file_get_path(file); + gchar *uri = g_strconcat("file://", path, NULL); + g_free(path); + + ListLock(); + + if (g_RegisterCallback.binding_device_removed && + event == G_FILE_MONITOR_EVENT_DELETED) { + g_RegisterCallback.binding_device_removed(uri); + } + + ListUnlock(); + g_free(uri); +} + +/* + * Create MediaPlayer Manager Thread + * Note: mediaplayer-api should do MediaPlayerManagerInit() before any other + * API calls + * Returns: 0 - success or error conditions + */ +int MediaPlayerManagerInit() { + pthread_t thread_id; + GFile *file; + GFileMonitor *mon; + + g_mutex_init(&(MediaPlayerManage.m)); + + file = g_file_new_for_path("/media"); + g_assert(file != NULL); + + mon = g_file_monitor (file, G_FILE_MONITOR_NONE, NULL, NULL); + g_assert(mon != NULL); + g_signal_connect (mon, "changed", G_CALLBACK(unmount_cb), NULL); + + pthread_create(&thread_id, NULL, media_event_loop_thread, NULL); + + return 0; +} + +/* + * Register MediaPlayer Manager Callback functions + */ +void BindingAPIRegister(const Binding_RegisterCallback_t* pstRegisterCallback) +{ + if (NULL != pstRegisterCallback) + { + if (NULL != pstRegisterCallback->binding_device_added) + { + g_RegisterCallback.binding_device_added = + pstRegisterCallback->binding_device_added; + } + + if (NULL != pstRegisterCallback->binding_device_removed) + { + g_RegisterCallback.binding_device_removed = + pstRegisterCallback->binding_device_removed; + } + } +} diff --git a/binding/media-manager.h b/binding/media-manager.h new file mode 100644 index 0000000..34d87e1 --- /dev/null +++ b/binding/media-manager.h @@ -0,0 +1,103 @@ +/* + * Copyright 2017 Konsulko Group + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MEDIAPLAYER_MANAGER_H +#define MEDIAPLAYER_MANAGER_H + +#include +#include +#include + +#include "gdbus/lightmediascanner_interface.h" + + /* Debug Trace Level */ +#define DT_LEVEL_ERROR (1 << 1) +#define DT_LEVEL_WARNING (1 << 2) +#define DT_LEVEL_NOTICE (1 << 3) +#define DT_LEVEL_INFO (1 << 4) +#define DT_LEVEL_DEBUG (1 << 5) +//#define _DEBUG + +#define LOGE(fmt, args...) \ + DebugTraceSendMsg(DT_LEVEL_ERROR, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args)) +#define LOGW(fmt, args...) \ + DebugTraceSendMsg(DT_LEVEL_WARNING, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args)) +#define LOGN(fmt, args...) \ + DebugTraceSendMsg(DT_LEVEL_NOTICE, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args)) +#define LOGI(fmt, args...) \ + DebugTraceSendMsg(DT_LEVEL_INFO, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args)) +#define LOGD(fmt, args...) \ + DebugTraceSendMsg(DT_LEVEL_DEBUG, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args)) + +#ifdef _DEBUG + #define _DEBUG_PRINT_DBUS + #define LOCAL_PRINT_DEBUG +#endif + +#ifdef LOCAL_PRINT_DEBUG +#define D_PRINTF(fmt, args...) \ + g_print("[DEBUG][%d:%s]"fmt, __LINE__, __FUNCTION__, ## args) +#define D_PRINTF_RAW(fmt, args...) \ + g_print(""fmt, ## args) +#else +#define D_PRINTF(fmt, args...) +#define D_PRINTF_RAW(fmt, args...) +#endif /* ifdef _DEBUG */ + +void DebugTraceSendMsg(int level, gchar* message); + +//service +#define AGENT_SERVICE "org.agent" + +//remote service +#define LIGHTMEDIASCANNER_SERVICE "org.lightmediascanner" + +//object path +#define LIGHTMEDIASCANNER_PATH "/org/lightmediascanner/Scanner1" + +//interface +#define LIGHTMEDIASCANNER_INTERFACE "org.lightmediascanner.Scanner1" +#define UDISKS_INTERFACE "org.freedesktop.UDisks" +#define FREEDESKTOP_PROPERTIES "org.freedesktop.DBus.Properties" + +//sqlite +#define SQL_QUERY "SELECT files.path FROM files LEFT JOIN audios " \ + "WHERE audios.id = files.id ORDER BY " \ + "audios.artist_id, audios.album_id, audios.trackno" + +typedef struct { + GList *list; + GMutex m; + Scanner1 *lms_proxy; +} stMediaPlayerManage; + +typedef struct tagBinding_RegisterCallback +{ + void (*binding_device_added)(GList *list); + void (*binding_device_removed)(const char *obj_path); +} Binding_RegisterCallback_t; + +/* ------ PUBLIC PLUGIN FUNCTIONS --------- */ +void BindingAPIRegister(const Binding_RegisterCallback_t* pstRegisterCallback); +int MediaPlayerManagerInit(void); + +void ListLock(); +void ListUnlock(); + +GList* media_lightmediascanner_scan(void); +GList* media_local_scan(GList *list); + +#endif diff --git a/conf.d/app-templates b/conf.d/app-templates new file mode 160000 index 0000000..8967162 --- /dev/null +++ b/conf.d/app-templates @@ -0,0 +1 @@ +Subproject commit 8967162dd12bce89f9ae27f5c9bce7b78624e3fd diff --git a/conf.d/autobuild/agl/autobuild b/conf.d/autobuild/agl/autobuild new file mode 100755 index 0000000..759f6be --- /dev/null +++ b/conf.d/autobuild/agl/autobuild @@ -0,0 +1,60 @@ +#!/usr/bin/make -f +# Copyright (C) 2015, 2016 "IoT.bzh" +# Author "Romain Forlot" +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +THISFILE := $(lastword $(MAKEFILE_LIST)) +BUILD_DIR := $(abspath $(dir $(THISFILE)/../../../../..)/build) +DEST := ${BUILD_DIR}/target + +.PHONY: all clean distclean configure build package help + +all: help + +help: + @echo "List of targets available:" + @echo "" + @echo "- all" + @echo "- clean" + @echo "- distclean" + @echo "- configure" + @echo "- build" + @echo "- package" + @echo "" + @echo "Usage: ./conf.d/autobuild/agl/autobuild package DEST=${HOME}/opt" + @echo "Don't use your build dir as DEST as wgt file is generated at this location" + +clean: + @([ -d ${BUILD_DIR} ] && make -C ${BUILD_DIR} clean) || echo Nothing to clean + +distclean: + @rm -rf ${BUILD_DIR} + +configure: ${BUILD_DIR}/Makefile + +build: configure + @cmake --build ${BUILD_DIR} ${BUILD_ARGS} --target all + +package: build + @mkdir -p ${BUILD_DIR}/$@/bin + @mkdir -p ${BUILD_DIR}/$@/etc + @mkdir -p ${BUILD_DIR}/$@/lib + @mkdir -p ${BUILD_DIR}/$@/htdocs + @mkdir -p ${BUILD_DIR}/$@/data + @cmake --build ${BUILD_DIR} --target widget + @mkdir -p ${DEST} && cp ${BUILD_DIR}/*wgt ${DEST} + +${BUILD_DIR}/Makefile: + @[ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR} + @[ -f ${BUILD_DIR}/Makefile ] || (cd ${BUILD_DIR} && cmake ${CONFIGURE_ARGS} ..) diff --git a/conf.d/autobuild/linux/autobuild b/conf.d/autobuild/linux/autobuild new file mode 100755 index 0000000..759f6be --- /dev/null +++ b/conf.d/autobuild/linux/autobuild @@ -0,0 +1,60 @@ +#!/usr/bin/make -f +# Copyright (C) 2015, 2016 "IoT.bzh" +# Author "Romain Forlot" +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +THISFILE := $(lastword $(MAKEFILE_LIST)) +BUILD_DIR := $(abspath $(dir $(THISFILE)/../../../../..)/build) +DEST := ${BUILD_DIR}/target + +.PHONY: all clean distclean configure build package help + +all: help + +help: + @echo "List of targets available:" + @echo "" + @echo "- all" + @echo "- clean" + @echo "- distclean" + @echo "- configure" + @echo "- build" + @echo "- package" + @echo "" + @echo "Usage: ./conf.d/autobuild/agl/autobuild package DEST=${HOME}/opt" + @echo "Don't use your build dir as DEST as wgt file is generated at this location" + +clean: + @([ -d ${BUILD_DIR} ] && make -C ${BUILD_DIR} clean) || echo Nothing to clean + +distclean: + @rm -rf ${BUILD_DIR} + +configure: ${BUILD_DIR}/Makefile + +build: configure + @cmake --build ${BUILD_DIR} ${BUILD_ARGS} --target all + +package: build + @mkdir -p ${BUILD_DIR}/$@/bin + @mkdir -p ${BUILD_DIR}/$@/etc + @mkdir -p ${BUILD_DIR}/$@/lib + @mkdir -p ${BUILD_DIR}/$@/htdocs + @mkdir -p ${BUILD_DIR}/$@/data + @cmake --build ${BUILD_DIR} --target widget + @mkdir -p ${DEST} && cp ${BUILD_DIR}/*wgt ${DEST} + +${BUILD_DIR}/Makefile: + @[ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR} + @[ -f ${BUILD_DIR}/Makefile ] || (cd ${BUILD_DIR} && cmake ${CONFIGURE_ARGS} ..) diff --git a/conf.d/cmake/config.cmake b/conf.d/cmake/config.cmake new file mode 100644 index 0000000..ed2fbba --- /dev/null +++ b/conf.d/cmake/config.cmake @@ -0,0 +1,153 @@ +########################################################################### +# Copyright 2015, 2016, 2017 IoT.bzh +# +# author: Fulup Ar Foll +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + +# Project Info +# ------------------ +set(PROJECT_NAME agl-service-mediascanner) +set(PROJECT_PRETTY_NAME "AFM binding for media scanning services") +set(PROJECT_DESCRIPTION "Binding for media scanning service") +set(PROJECT_VERSION "1.0") +set(PROJECT_ICON "icon.png") +set(PROJECT_LICENSE "APL2.0") +set(PROJECT_LANGUAGES,"C") + +# Where are stored default templates files from submodule or subtree app-templates in your project tree +# relative to the root project directory +set(PROJECT_APP_TEMPLATES_DIR "conf.d/app-templates") + +# Where are stored your external libraries for your project. This is 3rd party library that you don't maintain +# but used and must be built and linked. +# set(PROJECT_LIBDIR "libs") + +# Where are stored data for your application. Pictures, static resources must be placed in that folder. +# set(PROJECT_RESOURCES "data") + +# Which directories inspect to find CMakeLists.txt target files +# set(PROJECT_SRC_DIR_PATTERN "*") + +# Compilation Mode (DEBUG, RELEASE) +# ---------------------------------- +set(CMAKE_BUILD_TYPE "DEBUG") + +# Kernel selection if needed. You can choose between a +# mandatory version to impose a minimal version. +# Or check Kernel minimal version and just print a Warning +# about missing features and define a preprocessor variable +# to be used as preprocessor condition in code to disable +# incompatibles features. Preprocessor define is named +# KERNEL_MINIMAL_VERSION_OK. +# +# NOTE*** FOR NOW IT CHECKS KERNEL Yocto environment and +# Yocto SDK Kernel version. +# ----------------------------------------------- +#set(kernel_mandatory_version 4.8) + +# Compiler selection if needed. Impose a minimal version. +# ----------------------------------------------- +set (gcc_minimal_version 4.9) + +# PKG_CONFIG required packages +# ----------------------------- +set (PKG_REQUIRED_LIST + json-c + glib-2.0 + gobject-2.0 + gio-2.0 + gio-unix-2.0 + sqlite3 + libsystemd>=222 + afb-daemon +) + +# Customize link option +# ----------------------------- +list (APPEND link_libraries -pthread) + +# (BUG!!!) as PKG_CONFIG_PATH does not work [should be an env variable] +# --------------------------------------------------------------------- +set(CMAKE_INSTALL_PREFIX $ENV{HOME}/opt) +set(CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}/lib64/pkgconfig ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig) +set(LD_LIBRARY_PATH ${CMAKE_INSTALL_PREFIX}/lib64 ${CMAKE_INSTALL_PREFIX}/lib) + +# Optional location for config.xml.in +# ----------------------------------- +set(WIDGET_CONFIG_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/conf.d/wgt/config.xml.in) + +# Mandatory widget Mimetype specification of the main unit +# -------------------------------------------------------------------------- +# Choose between : +#- text/html : HTML application, +# content.src designates the home page of the application +# +#- application/vnd.agl.native : AGL compatible native, +# content.src designates the relative path of the binary. +# +# - application/vnd.agl.service: AGL service, content.src is not used. +# +#- ***application/x-executable***: Native application, +# content.src designates the relative path of the binary. +# For such application, only security setup is made. +# +set(WIDGET_TYPE application/vnd.agl.service) + +# Mandatory Widget entry point file of the main unit +# -------------------------------------------------------------- +# This is the file that will be executed, loaded, +# at launch time by the application framework. +# +set(WIDGET_ENTRY_POINT lib/libafm-mediascanner-binding.so) + +# Print a helper message when every thing is finished +# ---------------------------------------------------- +set(CLOSING_MESSAGE "Test with: afb-daemon --rootdir=\$\$(pwd)/package --binding=\$\$(pwd)/package/${WIDGET_ENTRY_POINT} --port=1234 --tracereq=common --token=\"1\" --verbose") +set(PACKAGE_MESSAGE "Install widget file using in the target : afm-util install ${PROJECT_NAME}.wgt") + +# Optional dependencies order +# --------------------------- +#set(EXTRA_DEPENDENCIES_ORDER) + +# Optional Extra global include path +# ----------------------------------- +#set(EXTRA_INCLUDE_DIRS) + +# Optional extra libraries +# ------------------------- +#set(EXTRA_LINK_LIBRARIES) + +# Optional force binding installation +# ------------------------------------ +# set(BINDINGS_INSTALL_PREFIX PrefixPath ) + +# Optional force binding Linking flag +# ------------------------------------ +# set(BINDINGS_LINK_FLAG LinkOptions ) + +# Optional force package prefix generation, like widget +# ----------------------------------------------------- +# set(PKG_PREFIX DestinationPath) + +# Optional Application Framework security token +# and port use for remote debugging. +#------------------------------------------------------------ +#set(AFB_TOKEN "" CACHE PATH "Default AFB_TOKEN") +#set(AFB_REMPORT "1234" CACHE PATH "Default AFB_TOKEN") + +# This include is mandatory and MUST happens at the end +# of this file, else you expose you to unexpected behavior +# ----------------------------------------------------------- +include(${PROJECT_APP_TEMPLATES_DIR}/cmake/common.cmake) diff --git a/conf.d/wgt/config.xml.in b/conf.d/wgt/config.xml.in new file mode 100644 index 0000000..46c29c3 --- /dev/null +++ b/conf.d/wgt/config.xml.in @@ -0,0 +1,22 @@ + + + @PROJECT_NAME@ + + + @PROJECT_DESCRIPTION@ + @PROJECT_AUTHOR@ <@PROJECT_AUTHOR_MAIL@> + @PROJECT_LICENSE@ + + + + + + + + + + + + + + diff --git a/export.map b/export.map deleted file mode 100644 index eea0d7b..0000000 --- a/export.map +++ /dev/null @@ -1 +0,0 @@ -{ global: afbBindingV2*; local: *; }; diff --git a/gdbus/api/org.lightmediascanner.xml b/gdbus/api/org.lightmediascanner.xml deleted file mode 100644 index 1651b47..0000000 --- a/gdbus/api/org.lightmediascanner.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gdbus/generate_interfaces.sh b/gdbus/generate_interfaces.sh deleted file mode 100755 index f5cbc66..0000000 --- a/gdbus/generate_interfaces.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -CG=gdbus-codegen -API=api - -$CG \ - --interface-prefix org.lightmediascanner. \ - --generate-c-code lightmediascanner_interface \ - $API/org.lightmediascanner.xml diff --git a/gdbus/lightmediascanner_interface.c b/gdbus/lightmediascanner_interface.c deleted file mode 100644 index 6269a7d..0000000 --- a/gdbus/lightmediascanner_interface.c +++ /dev/null @@ -1,5755 +0,0 @@ -/* - * Generated by gdbus-codegen 2.52.0. DO NOT EDIT. - * - * The license of this code is the same as for the source it was derived from. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "lightmediascanner_interface.h" - -#include -#ifdef G_OS_UNIX -# include -#endif - -typedef struct -{ - GDBusArgInfo parent_struct; - gboolean use_gvariant; -} _ExtendedGDBusArgInfo; - -typedef struct -{ - GDBusMethodInfo parent_struct; - const gchar *signal_name; - gboolean pass_fdlist; -} _ExtendedGDBusMethodInfo; - -typedef struct -{ - GDBusSignalInfo parent_struct; - const gchar *signal_name; -} _ExtendedGDBusSignalInfo; - -typedef struct -{ - GDBusPropertyInfo parent_struct; - const gchar *hyphen_name; - gboolean use_gvariant; -} _ExtendedGDBusPropertyInfo; - -typedef struct -{ - GDBusInterfaceInfo parent_struct; - const gchar *hyphen_name; -} _ExtendedGDBusInterfaceInfo; - -typedef struct -{ - const _ExtendedGDBusPropertyInfo *info; - guint prop_id; - GValue orig_value; /* the value before the change */ -} ChangedProperty; - -static void -_changed_property_free (ChangedProperty *data) -{ - g_value_unset (&data->orig_value); - g_free (data); -} - -static gboolean -_g_strv_equal0 (gchar **a, gchar **b) -{ - gboolean ret = FALSE; - guint n; - if (a == NULL && b == NULL) - { - ret = TRUE; - goto out; - } - if (a == NULL || b == NULL) - goto out; - if (g_strv_length (a) != g_strv_length (b)) - goto out; - for (n = 0; a[n] != NULL; n++) - if (g_strcmp0 (a[n], b[n]) != 0) - goto out; - ret = TRUE; -out: - return ret; -} - -static gboolean -_g_variant_equal0 (GVariant *a, GVariant *b) -{ - gboolean ret = FALSE; - if (a == NULL && b == NULL) - { - ret = TRUE; - goto out; - } - if (a == NULL || b == NULL) - goto out; - ret = g_variant_equal (a, b); -out: - return ret; -} - -G_GNUC_UNUSED static gboolean -_g_value_equal (const GValue *a, const GValue *b) -{ - gboolean ret = FALSE; - g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b)); - switch (G_VALUE_TYPE (a)) - { - case G_TYPE_BOOLEAN: - ret = (g_value_get_boolean (a) == g_value_get_boolean (b)); - break; - case G_TYPE_UCHAR: - ret = (g_value_get_uchar (a) == g_value_get_uchar (b)); - break; - case G_TYPE_INT: - ret = (g_value_get_int (a) == g_value_get_int (b)); - break; - case G_TYPE_UINT: - ret = (g_value_get_uint (a) == g_value_get_uint (b)); - break; - case G_TYPE_INT64: - ret = (g_value_get_int64 (a) == g_value_get_int64 (b)); - break; - case G_TYPE_UINT64: - ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b)); - break; - case G_TYPE_DOUBLE: - { - /* Avoid -Wfloat-equal warnings by doing a direct bit compare */ - gdouble da = g_value_get_double (a); - gdouble db = g_value_get_double (b); - ret = memcmp (&da, &db, sizeof (gdouble)) == 0; - } - break; - case G_TYPE_STRING: - ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0); - break; - case G_TYPE_VARIANT: - ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b)); - break; - default: - if (G_VALUE_TYPE (a) == G_TYPE_STRV) - ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b)); - else - g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a))); - break; - } - return ret; -} - -/* ------------------------------------------------------------------------ - * Code for interface org.freedesktop.DBus.Properties - * ------------------------------------------------------------------------ - */ - -/** - * SECTION:OrgFreedesktopDBusProperties - * @title: OrgFreedesktopDBusProperties - * @short_description: Generated C code for the org.freedesktop.DBus.Properties D-Bus interface - * - * This section contains code for working with the org.freedesktop.DBus.Properties D-Bus interface in C. - */ - -/* ---- Introspection data for org.freedesktop.DBus.Properties ---- */ - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_IN_ARG_interface_name = -{ - { - -1, - (gchar *) "interface_name", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_IN_ARG_property_name = -{ - { - -1, - (gchar *) "property_name", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_IN_ARG_pointers[] = -{ - &_org_freedesktop_dbus_properties_method_info_get_IN_ARG_interface_name, - &_org_freedesktop_dbus_properties_method_info_get_IN_ARG_property_name, - NULL -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_OUT_ARG_value = -{ - { - -1, - (gchar *) "value", - (gchar *) "v", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_OUT_ARG_pointers[] = -{ - &_org_freedesktop_dbus_properties_method_info_get_OUT_ARG_value, - NULL -}; - -static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_properties_method_info_get = -{ - { - -1, - (gchar *) "Get", - (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_IN_ARG_pointers, - (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_OUT_ARG_pointers, - NULL - }, - "handle-get", - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_interface_name = -{ - { - -1, - (gchar *) "interface_name", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_pointers[] = -{ - &_org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_interface_name, - NULL -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_properties = -{ - { - -1, - (gchar *) "properties", - (gchar *) "a{sv}", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_pointers[] = -{ - &_org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_properties, - NULL -}; - -static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_properties_method_info_get_all = -{ - { - -1, - (gchar *) "GetAll", - (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_pointers, - (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_pointers, - NULL - }, - "handle-get-all", - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_set_IN_ARG_interface_name = -{ - { - -1, - (gchar *) "interface_name", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_set_IN_ARG_property_name = -{ - { - -1, - (gchar *) "property_name", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_set_IN_ARG_value = -{ - { - -1, - (gchar *) "value", - (gchar *) "v", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_set_IN_ARG_pointers[] = -{ - &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_interface_name, - &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_property_name, - &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_value, - NULL -}; - -static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_properties_method_info_set = -{ - { - -1, - (gchar *) "Set", - (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_pointers, - NULL, - NULL - }, - "handle-set", - FALSE -}; - -static const _ExtendedGDBusMethodInfo * const _org_freedesktop_dbus_properties_method_info_pointers[] = -{ - &_org_freedesktop_dbus_properties_method_info_get, - &_org_freedesktop_dbus_properties_method_info_get_all, - &_org_freedesktop_dbus_properties_method_info_set, - NULL -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_interface_name = -{ - { - -1, - (gchar *) "interface_name", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_changed_properties = -{ - { - -1, - (gchar *) "changed_properties", - (gchar *) "a{sv}", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_invalidated_properties = -{ - { - -1, - (gchar *) "invalidated_properties", - (gchar *) "as", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_pointers[] = -{ - &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_interface_name, - &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_changed_properties, - &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_invalidated_properties, - NULL -}; - -static const _ExtendedGDBusSignalInfo _org_freedesktop_dbus_properties_signal_info_properties_changed = -{ - { - -1, - (gchar *) "PropertiesChanged", - (GDBusArgInfo **) &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_pointers, - NULL - }, - "properties-changed" -}; - -static const _ExtendedGDBusSignalInfo * const _org_freedesktop_dbus_properties_signal_info_pointers[] = -{ - &_org_freedesktop_dbus_properties_signal_info_properties_changed, - NULL -}; - -static const _ExtendedGDBusInterfaceInfo _org_freedesktop_dbus_properties_interface_info = -{ - { - -1, - (gchar *) "org.freedesktop.DBus.Properties", - (GDBusMethodInfo **) &_org_freedesktop_dbus_properties_method_info_pointers, - (GDBusSignalInfo **) &_org_freedesktop_dbus_properties_signal_info_pointers, - NULL, - NULL - }, - "org-freedesktop-dbus-properties", -}; - - -/** - * org_freedesktop_dbus_properties_interface_info: - * - * Gets a machine-readable description of the org.freedesktop.DBus.Properties D-Bus interface. - * - * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. - */ -GDBusInterfaceInfo * -org_freedesktop_dbus_properties_interface_info (void) -{ - return (GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct; -} - -/** - * org_freedesktop_dbus_properties_override_properties: - * @klass: The class structure for a #GObject-derived class. - * @property_id_begin: The property id to assign to the first overridden property. - * - * Overrides all #GObject properties in the #OrgFreedesktopDBusProperties interface for a concrete class. - * The properties are overridden in the order they are defined. - * - * Returns: The last property id. - */ -guint -org_freedesktop_dbus_properties_override_properties (GObjectClass *klass, guint property_id_begin) -{ - return property_id_begin - 1; -} - - - -/** - * OrgFreedesktopDBusProperties: - * - * Abstract interface type for the D-Bus interface org.freedesktop.DBus.Properties. - */ - -/** - * OrgFreedesktopDBusPropertiesIface: - * @parent_iface: The parent interface. - * @handle_get: Handler for the #OrgFreedesktopDBusProperties::handle-get signal. - * @handle_get_all: Handler for the #OrgFreedesktopDBusProperties::handle-get-all signal. - * @handle_set: Handler for the #OrgFreedesktopDBusProperties::handle-set signal. - * @properties_changed: Handler for the #OrgFreedesktopDBusProperties::properties-changed signal. - * - * Virtual table for the D-Bus interface org.freedesktop.DBus.Properties. - */ - -typedef OrgFreedesktopDBusPropertiesIface OrgFreedesktopDBusPropertiesInterface; -G_DEFINE_INTERFACE (OrgFreedesktopDBusProperties, org_freedesktop_dbus_properties, G_TYPE_OBJECT); - -static void -org_freedesktop_dbus_properties_default_init (OrgFreedesktopDBusPropertiesIface *iface) -{ - /* GObject signals for incoming D-Bus method calls: */ - /** - * OrgFreedesktopDBusProperties::handle-get: - * @object: A #OrgFreedesktopDBusProperties. - * @invocation: A #GDBusMethodInvocation. - * @arg_interface_name: Argument passed by remote caller. - * @arg_property_name: Argument passed by remote caller. - * - * Signal emitted when a remote caller is invoking the Get() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_properties_complete_get() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-get", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, handle_get), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 3, - G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING); - - /** - * OrgFreedesktopDBusProperties::handle-get-all: - * @object: A #OrgFreedesktopDBusProperties. - * @invocation: A #GDBusMethodInvocation. - * @arg_interface_name: Argument passed by remote caller. - * - * Signal emitted when a remote caller is invoking the GetAll() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_properties_complete_get_all() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-get-all", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, handle_get_all), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 2, - G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); - - /** - * OrgFreedesktopDBusProperties::handle-set: - * @object: A #OrgFreedesktopDBusProperties. - * @invocation: A #GDBusMethodInvocation. - * @arg_interface_name: Argument passed by remote caller. - * @arg_property_name: Argument passed by remote caller. - * @arg_value: Argument passed by remote caller. - * - * Signal emitted when a remote caller is invoking the Set() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_properties_complete_set() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-set", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, handle_set), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 4, - G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT); - - /* GObject signals for received D-Bus signals: */ - /** - * OrgFreedesktopDBusProperties::properties-changed: - * @object: A #OrgFreedesktopDBusProperties. - * @arg_interface_name: Argument. - * @arg_changed_properties: Argument. - * @arg_invalidated_properties: Argument. - * - * On the client-side, this signal is emitted whenever the D-Bus signal "PropertiesChanged" is received. - * - * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. - */ - g_signal_new ("properties-changed", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, properties_changed), - NULL, - NULL, - g_cclosure_marshal_generic, - G_TYPE_NONE, - 3, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_STRV); - -} - -/** - * org_freedesktop_dbus_properties_emit_properties_changed: - * @object: A #OrgFreedesktopDBusProperties. - * @arg_interface_name: Argument to pass with the signal. - * @arg_changed_properties: Argument to pass with the signal. - * @arg_invalidated_properties: Argument to pass with the signal. - * - * Emits the "PropertiesChanged" D-Bus signal. - */ -void -org_freedesktop_dbus_properties_emit_properties_changed ( - OrgFreedesktopDBusProperties *object, - const gchar *arg_interface_name, - GVariant *arg_changed_properties, - const gchar *const *arg_invalidated_properties) -{ - g_signal_emit_by_name (object, "properties-changed", arg_interface_name, arg_changed_properties, arg_invalidated_properties); -} - -/** - * org_freedesktop_dbus_properties_call_get: - * @proxy: A #OrgFreedesktopDBusPropertiesProxy. - * @arg_interface_name: Argument to pass with the method invocation. - * @arg_property_name: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Get() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_properties_call_get_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_properties_call_get_sync() for the synchronous, blocking version of this method. - */ -void -org_freedesktop_dbus_properties_call_get ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - const gchar *arg_property_name, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Get", - g_variant_new ("(ss)", - arg_interface_name, - arg_property_name), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_freedesktop_dbus_properties_call_get_finish: - * @proxy: A #OrgFreedesktopDBusPropertiesProxy. - * @out_value: (out): Return location for return parameter or %NULL to ignore. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_call_get(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_freedesktop_dbus_properties_call_get(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_properties_call_get_finish ( - OrgFreedesktopDBusProperties *proxy, - GVariant **out_value, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "(@v)", - out_value); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_properties_call_get_sync: - * @proxy: A #OrgFreedesktopDBusPropertiesProxy. - * @arg_interface_name: Argument to pass with the method invocation. - * @arg_property_name: Argument to pass with the method invocation. - * @out_value: (out): Return location for return parameter or %NULL to ignore. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Get() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_properties_call_get() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_properties_call_get_sync ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - const gchar *arg_property_name, - GVariant **out_value, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Get", - g_variant_new ("(ss)", - arg_interface_name, - arg_property_name), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "(@v)", - out_value); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_properties_call_get_all: - * @proxy: A #OrgFreedesktopDBusPropertiesProxy. - * @arg_interface_name: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the GetAll() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_properties_call_get_all_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_properties_call_get_all_sync() for the synchronous, blocking version of this method. - */ -void -org_freedesktop_dbus_properties_call_get_all ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "GetAll", - g_variant_new ("(s)", - arg_interface_name), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_freedesktop_dbus_properties_call_get_all_finish: - * @proxy: A #OrgFreedesktopDBusPropertiesProxy. - * @out_properties: (out): Return location for return parameter or %NULL to ignore. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_call_get_all(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_freedesktop_dbus_properties_call_get_all(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_properties_call_get_all_finish ( - OrgFreedesktopDBusProperties *proxy, - GVariant **out_properties, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "(@a{sv})", - out_properties); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_properties_call_get_all_sync: - * @proxy: A #OrgFreedesktopDBusPropertiesProxy. - * @arg_interface_name: Argument to pass with the method invocation. - * @out_properties: (out): Return location for return parameter or %NULL to ignore. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the GetAll() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_properties_call_get_all() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_properties_call_get_all_sync ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - GVariant **out_properties, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "GetAll", - g_variant_new ("(s)", - arg_interface_name), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "(@a{sv})", - out_properties); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_properties_call_set: - * @proxy: A #OrgFreedesktopDBusPropertiesProxy. - * @arg_interface_name: Argument to pass with the method invocation. - * @arg_property_name: Argument to pass with the method invocation. - * @arg_value: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Set() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_properties_call_set_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_properties_call_set_sync() for the synchronous, blocking version of this method. - */ -void -org_freedesktop_dbus_properties_call_set ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - const gchar *arg_property_name, - GVariant *arg_value, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Set", - g_variant_new ("(ss@v)", - arg_interface_name, - arg_property_name, - arg_value), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_freedesktop_dbus_properties_call_set_finish: - * @proxy: A #OrgFreedesktopDBusPropertiesProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_call_set(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_freedesktop_dbus_properties_call_set(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_properties_call_set_finish ( - OrgFreedesktopDBusProperties *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_properties_call_set_sync: - * @proxy: A #OrgFreedesktopDBusPropertiesProxy. - * @arg_interface_name: Argument to pass with the method invocation. - * @arg_property_name: Argument to pass with the method invocation. - * @arg_value: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Set() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_properties_call_set() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_properties_call_set_sync ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - const gchar *arg_property_name, - GVariant *arg_value, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Set", - g_variant_new ("(ss@v)", - arg_interface_name, - arg_property_name, - arg_value), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_properties_complete_get: - * @object: A #OrgFreedesktopDBusProperties. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * @value: Parameter to return. - * - * Helper function used in service implementations to finish handling invocations of the Get() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_freedesktop_dbus_properties_complete_get ( - OrgFreedesktopDBusProperties *object, - GDBusMethodInvocation *invocation, - GVariant *value) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("(@v)", - value)); -} - -/** - * org_freedesktop_dbus_properties_complete_get_all: - * @object: A #OrgFreedesktopDBusProperties. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * @properties: Parameter to return. - * - * Helper function used in service implementations to finish handling invocations of the GetAll() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_freedesktop_dbus_properties_complete_get_all ( - OrgFreedesktopDBusProperties *object, - GDBusMethodInvocation *invocation, - GVariant *properties) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("(@a{sv})", - properties)); -} - -/** - * org_freedesktop_dbus_properties_complete_set: - * @object: A #OrgFreedesktopDBusProperties. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Set() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_freedesktop_dbus_properties_complete_set ( - OrgFreedesktopDBusProperties *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/* ------------------------------------------------------------------------ */ - -/** - * OrgFreedesktopDBusPropertiesProxy: - * - * The #OrgFreedesktopDBusPropertiesProxy structure contains only private data and should only be accessed using the provided API. - */ - -/** - * OrgFreedesktopDBusPropertiesProxyClass: - * @parent_class: The parent class. - * - * Class structure for #OrgFreedesktopDBusPropertiesProxy. - */ - -struct _OrgFreedesktopDBusPropertiesProxyPrivate -{ - GData *qdata; -}; - -static void org_freedesktop_dbus_properties_proxy_iface_init (OrgFreedesktopDBusPropertiesIface *iface); - -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesProxy, org_freedesktop_dbus_properties_proxy, G_TYPE_DBUS_PROXY, - G_ADD_PRIVATE (OrgFreedesktopDBusPropertiesProxy) - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_proxy_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesProxy, org_freedesktop_dbus_properties_proxy, G_TYPE_DBUS_PROXY, - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_proxy_iface_init)); - -#endif -static void -org_freedesktop_dbus_properties_proxy_finalize (GObject *object) -{ - OrgFreedesktopDBusPropertiesProxy *proxy = ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY (object); - g_datalist_clear (&proxy->priv->qdata); - G_OBJECT_CLASS (org_freedesktop_dbus_properties_proxy_parent_class)->finalize (object); -} - -static void -org_freedesktop_dbus_properties_proxy_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ -} - -static void -org_freedesktop_dbus_properties_proxy_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ -} - -static void -org_freedesktop_dbus_properties_proxy_g_signal (GDBusProxy *proxy, - const gchar *sender_name G_GNUC_UNUSED, - const gchar *signal_name, - GVariant *parameters) -{ - _ExtendedGDBusSignalInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - gsize num_params; - gsize n; - guint signal_id; - info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, signal_name); - if (info == NULL) - return; - num_params = g_variant_n_children (parameters); - paramv = g_new0 (GValue, num_params + 1); - g_value_init (¶mv[0], TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES); - g_value_set_object (¶mv[0], proxy); - g_variant_iter_init (&iter, parameters); - n = 1; - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES); - g_signal_emitv (paramv, signal_id, 0, NULL); - for (n = 0; n < num_params + 1; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static void -org_freedesktop_dbus_properties_proxy_g_properties_changed (GDBusProxy *_proxy, - GVariant *changed_properties, - const gchar *const *invalidated_properties) -{ - OrgFreedesktopDBusPropertiesProxy *proxy = ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY (_proxy); - guint n; - const gchar *key; - GVariantIter *iter; - _ExtendedGDBusPropertyInfo *info; - g_variant_get (changed_properties, "a{sv}", &iter); - while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, key); - g_datalist_remove_data (&proxy->priv->qdata, key); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } - g_variant_iter_free (iter); - for (n = 0; invalidated_properties[n] != NULL; n++) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, invalidated_properties[n]); - g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } -} - -static void -org_freedesktop_dbus_properties_proxy_init (OrgFreedesktopDBusPropertiesProxy *proxy) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - proxy->priv = org_freedesktop_dbus_properties_proxy_get_instance_private (proxy); -#else - proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxyPrivate); -#endif - - g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_freedesktop_dbus_properties_interface_info ()); -} - -static void -org_freedesktop_dbus_properties_proxy_class_init (OrgFreedesktopDBusPropertiesProxyClass *klass) -{ - GObjectClass *gobject_class; - GDBusProxyClass *proxy_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = org_freedesktop_dbus_properties_proxy_finalize; - gobject_class->get_property = org_freedesktop_dbus_properties_proxy_get_property; - gobject_class->set_property = org_freedesktop_dbus_properties_proxy_set_property; - - proxy_class = G_DBUS_PROXY_CLASS (klass); - proxy_class->g_signal = org_freedesktop_dbus_properties_proxy_g_signal; - proxy_class->g_properties_changed = org_freedesktop_dbus_properties_proxy_g_properties_changed; - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPropertiesProxyPrivate)); -#endif -} - -static void -org_freedesktop_dbus_properties_proxy_iface_init (OrgFreedesktopDBusPropertiesIface *iface) -{ -} - -/** - * org_freedesktop_dbus_properties_proxy_new: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Asynchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Properties. See g_dbus_proxy_new() for more details. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_properties_proxy_new_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_properties_proxy_new_sync() for the synchronous, blocking version of this constructor. - */ -void -org_freedesktop_dbus_properties_proxy_new ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL); -} - -/** - * org_freedesktop_dbus_properties_proxy_new_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_proxy_new(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with org_freedesktop_dbus_properties_proxy_new(). - * - * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusProperties * -org_freedesktop_dbus_properties_proxy_new_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret); - else - return NULL; -} - -/** - * org_freedesktop_dbus_properties_proxy_new_sync: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Synchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Properties. See g_dbus_proxy_new_sync() for more details. - * - * The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_properties_proxy_new() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusProperties * -org_freedesktop_dbus_properties_proxy_new_sync ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *ret; - ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret); - else - return NULL; -} - - -/** - * org_freedesktop_dbus_properties_proxy_new_for_bus: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Like org_freedesktop_dbus_properties_proxy_new() but takes a #GBusType instead of a #GDBusConnection. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_properties_proxy_new_for_bus_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_properties_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. - */ -void -org_freedesktop_dbus_properties_proxy_new_for_bus ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL); -} - -/** - * org_freedesktop_dbus_properties_proxy_new_for_bus_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_proxy_new_for_bus(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with org_freedesktop_dbus_properties_proxy_new_for_bus(). - * - * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusProperties * -org_freedesktop_dbus_properties_proxy_new_for_bus_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret); - else - return NULL; -} - -/** - * org_freedesktop_dbus_properties_proxy_new_for_bus_sync: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Like org_freedesktop_dbus_properties_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. - * - * The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_properties_proxy_new_for_bus() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusProperties * -org_freedesktop_dbus_properties_proxy_new_for_bus_sync ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *ret; - ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret); - else - return NULL; -} - - -/* ------------------------------------------------------------------------ */ - -/** - * OrgFreedesktopDBusPropertiesSkeleton: - * - * The #OrgFreedesktopDBusPropertiesSkeleton structure contains only private data and should only be accessed using the provided API. - */ - -/** - * OrgFreedesktopDBusPropertiesSkeletonClass: - * @parent_class: The parent class. - * - * Class structure for #OrgFreedesktopDBusPropertiesSkeleton. - */ - -struct _OrgFreedesktopDBusPropertiesSkeletonPrivate -{ - GValue *properties; - GList *changed_properties; - GSource *changed_properties_idle_source; - GMainContext *context; - GMutex lock; -}; - -static void -_org_freedesktop_dbus_properties_skeleton_handle_method_call ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer user_data) -{ - OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (user_data); - _ExtendedGDBusMethodInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - gsize num_params; - guint num_extra; - gsize n; - guint signal_id; - GValue return_value = G_VALUE_INIT; - info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); - g_assert (info != NULL); - num_params = g_variant_n_children (parameters); - num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); - n = 0; - g_value_init (¶mv[n], TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES); - g_value_set_object (¶mv[n++], skeleton); - g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); - g_value_set_object (¶mv[n++], invocation); - if (info->pass_fdlist) - { -#ifdef G_OS_UNIX - g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); - g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); -#else - g_assert_not_reached (); -#endif - } - g_variant_iter_init (&iter, parameters); - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES); - g_value_init (&return_value, G_TYPE_BOOLEAN); - g_signal_emitv (paramv, signal_id, 0, &return_value); - if (!g_value_get_boolean (&return_value)) - g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); - g_value_unset (&return_value); - for (n = 0; n < num_params + num_extra; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static GVariant * -_org_freedesktop_dbus_properties_skeleton_handle_get_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GError **error, - gpointer user_data) -{ - OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - GVariant *ret; - ret = NULL; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - g_value_init (&value, pspec->value_type); - g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); - ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); - g_value_unset (&value); - } - return ret; -} - -static gboolean -_org_freedesktop_dbus_properties_skeleton_handle_set_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GVariant *variant, - GError **error, - gpointer user_data) -{ - OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - gboolean ret; - ret = FALSE; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - if (info->use_gvariant) - g_value_set_variant (&value, variant); - else - g_dbus_gvariant_to_gvalue (variant, &value); - g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); - g_value_unset (&value); - ret = TRUE; - } - return ret; -} - -static const GDBusInterfaceVTable _org_freedesktop_dbus_properties_skeleton_vtable = -{ - _org_freedesktop_dbus_properties_skeleton_handle_method_call, - _org_freedesktop_dbus_properties_skeleton_handle_get_property, - _org_freedesktop_dbus_properties_skeleton_handle_set_property, - {NULL} -}; - -static GDBusInterfaceInfo * -org_freedesktop_dbus_properties_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return org_freedesktop_dbus_properties_interface_info (); -} - -static GDBusInterfaceVTable * -org_freedesktop_dbus_properties_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return (GDBusInterfaceVTable *) &_org_freedesktop_dbus_properties_skeleton_vtable; -} - -static GVariant * -org_freedesktop_dbus_properties_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) -{ - OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (_skeleton); - - GVariantBuilder builder; - guint n; - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); - if (_org_freedesktop_dbus_properties_interface_info.parent_struct.properties == NULL) - goto out; - for (n = 0; _org_freedesktop_dbus_properties_interface_info.parent_struct.properties[n] != NULL; n++) - { - GDBusPropertyInfo *info = _org_freedesktop_dbus_properties_interface_info.parent_struct.properties[n]; - if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) - { - GVariant *value; - value = _org_freedesktop_dbus_properties_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", info->name, NULL, skeleton); - if (value != NULL) - { - g_variant_take_ref (value); - g_variant_builder_add (&builder, "{sv}", info->name, value); - g_variant_unref (value); - } - } - } -out: - return g_variant_builder_end (&builder); -} - -static void -org_freedesktop_dbus_properties_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) -{ -} - -static void -_org_freedesktop_dbus_properties_on_signal_properties_changed ( - OrgFreedesktopDBusProperties *object, - const gchar *arg_interface_name, - GVariant *arg_changed_properties, - const gchar *const *arg_invalidated_properties) -{ - OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (object); - - GList *connections, *l; - GVariant *signal_variant; - connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); - - signal_variant = g_variant_ref_sink (g_variant_new ("(s@a{sv}^as)", - arg_interface_name, - arg_changed_properties, - arg_invalidated_properties)); - for (l = connections; l != NULL; l = l->next) - { - GDBusConnection *connection = l->data; - g_dbus_connection_emit_signal (connection, - NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", - signal_variant, NULL); - } - g_variant_unref (signal_variant); - g_list_free_full (connections, g_object_unref); -} - -static void org_freedesktop_dbus_properties_skeleton_iface_init (OrgFreedesktopDBusPropertiesIface *iface); -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesSkeleton, org_freedesktop_dbus_properties_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_ADD_PRIVATE (OrgFreedesktopDBusPropertiesSkeleton) - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_skeleton_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesSkeleton, org_freedesktop_dbus_properties_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_skeleton_iface_init)); - -#endif -static void -org_freedesktop_dbus_properties_skeleton_finalize (GObject *object) -{ - OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (object); - g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); - if (skeleton->priv->changed_properties_idle_source != NULL) - g_source_destroy (skeleton->priv->changed_properties_idle_source); - g_main_context_unref (skeleton->priv->context); - g_mutex_clear (&skeleton->priv->lock); - G_OBJECT_CLASS (org_freedesktop_dbus_properties_skeleton_parent_class)->finalize (object); -} - -static void -org_freedesktop_dbus_properties_skeleton_init (OrgFreedesktopDBusPropertiesSkeleton *skeleton) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - skeleton->priv = org_freedesktop_dbus_properties_skeleton_get_instance_private (skeleton); -#else - skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeletonPrivate); -#endif - - g_mutex_init (&skeleton->priv->lock); - skeleton->priv->context = g_main_context_ref_thread_default (); -} - -static void -org_freedesktop_dbus_properties_skeleton_class_init (OrgFreedesktopDBusPropertiesSkeletonClass *klass) -{ - GObjectClass *gobject_class; - GDBusInterfaceSkeletonClass *skeleton_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = org_freedesktop_dbus_properties_skeleton_finalize; - - skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); - skeleton_class->get_info = org_freedesktop_dbus_properties_skeleton_dbus_interface_get_info; - skeleton_class->get_properties = org_freedesktop_dbus_properties_skeleton_dbus_interface_get_properties; - skeleton_class->flush = org_freedesktop_dbus_properties_skeleton_dbus_interface_flush; - skeleton_class->get_vtable = org_freedesktop_dbus_properties_skeleton_dbus_interface_get_vtable; - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPropertiesSkeletonPrivate)); -#endif -} - -static void -org_freedesktop_dbus_properties_skeleton_iface_init (OrgFreedesktopDBusPropertiesIface *iface) -{ - iface->properties_changed = _org_freedesktop_dbus_properties_on_signal_properties_changed; -} - -/** - * org_freedesktop_dbus_properties_skeleton_new: - * - * Creates a skeleton object for the D-Bus interface org.freedesktop.DBus.Properties. - * - * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesSkeleton): The skeleton object. - */ -OrgFreedesktopDBusProperties * -org_freedesktop_dbus_properties_skeleton_new (void) -{ - return ORG_FREEDESKTOP_DBUS_PROPERTIES (g_object_new (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, NULL)); -} - -/* ------------------------------------------------------------------------ - * Code for interface org.freedesktop.DBus.Introspectable - * ------------------------------------------------------------------------ - */ - -/** - * SECTION:OrgFreedesktopDBusIntrospectable - * @title: OrgFreedesktopDBusIntrospectable - * @short_description: Generated C code for the org.freedesktop.DBus.Introspectable D-Bus interface - * - * This section contains code for working with the org.freedesktop.DBus.Introspectable D-Bus interface in C. - */ - -/* ---- Introspection data for org.freedesktop.DBus.Introspectable ---- */ - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_xml_data = -{ - { - -1, - (gchar *) "xml_data", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_pointers[] = -{ - &_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_xml_data, - NULL -}; - -static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_introspectable_method_info_introspect = -{ - { - -1, - (gchar *) "Introspect", - NULL, - (GDBusArgInfo **) &_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_pointers, - NULL - }, - "handle-introspect", - FALSE -}; - -static const _ExtendedGDBusMethodInfo * const _org_freedesktop_dbus_introspectable_method_info_pointers[] = -{ - &_org_freedesktop_dbus_introspectable_method_info_introspect, - NULL -}; - -static const _ExtendedGDBusInterfaceInfo _org_freedesktop_dbus_introspectable_interface_info = -{ - { - -1, - (gchar *) "org.freedesktop.DBus.Introspectable", - (GDBusMethodInfo **) &_org_freedesktop_dbus_introspectable_method_info_pointers, - NULL, - NULL, - NULL - }, - "org-freedesktop-dbus-introspectable", -}; - - -/** - * org_freedesktop_dbus_introspectable_interface_info: - * - * Gets a machine-readable description of the org.freedesktop.DBus.Introspectable D-Bus interface. - * - * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. - */ -GDBusInterfaceInfo * -org_freedesktop_dbus_introspectable_interface_info (void) -{ - return (GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct; -} - -/** - * org_freedesktop_dbus_introspectable_override_properties: - * @klass: The class structure for a #GObject-derived class. - * @property_id_begin: The property id to assign to the first overridden property. - * - * Overrides all #GObject properties in the #OrgFreedesktopDBusIntrospectable interface for a concrete class. - * The properties are overridden in the order they are defined. - * - * Returns: The last property id. - */ -guint -org_freedesktop_dbus_introspectable_override_properties (GObjectClass *klass, guint property_id_begin) -{ - return property_id_begin - 1; -} - - - -/** - * OrgFreedesktopDBusIntrospectable: - * - * Abstract interface type for the D-Bus interface org.freedesktop.DBus.Introspectable. - */ - -/** - * OrgFreedesktopDBusIntrospectableIface: - * @parent_iface: The parent interface. - * @handle_introspect: Handler for the #OrgFreedesktopDBusIntrospectable::handle-introspect signal. - * - * Virtual table for the D-Bus interface org.freedesktop.DBus.Introspectable. - */ - -typedef OrgFreedesktopDBusIntrospectableIface OrgFreedesktopDBusIntrospectableInterface; -G_DEFINE_INTERFACE (OrgFreedesktopDBusIntrospectable, org_freedesktop_dbus_introspectable, G_TYPE_OBJECT); - -static void -org_freedesktop_dbus_introspectable_default_init (OrgFreedesktopDBusIntrospectableIface *iface) -{ - /* GObject signals for incoming D-Bus method calls: */ - /** - * OrgFreedesktopDBusIntrospectable::handle-introspect: - * @object: A #OrgFreedesktopDBusIntrospectable. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the Introspect() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_introspectable_complete_introspect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-introspect", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgFreedesktopDBusIntrospectableIface, handle_introspect), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - -} - -/** - * org_freedesktop_dbus_introspectable_call_introspect: - * @proxy: A #OrgFreedesktopDBusIntrospectableProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Introspect() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_introspectable_call_introspect_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_introspectable_call_introspect_sync() for the synchronous, blocking version of this method. - */ -void -org_freedesktop_dbus_introspectable_call_introspect ( - OrgFreedesktopDBusIntrospectable *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Introspect", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_freedesktop_dbus_introspectable_call_introspect_finish: - * @proxy: A #OrgFreedesktopDBusIntrospectableProxy. - * @out_xml_data: (out): Return location for return parameter or %NULL to ignore. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_introspectable_call_introspect(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_freedesktop_dbus_introspectable_call_introspect(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_introspectable_call_introspect_finish ( - OrgFreedesktopDBusIntrospectable *proxy, - gchar **out_xml_data, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "(s)", - out_xml_data); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_introspectable_call_introspect_sync: - * @proxy: A #OrgFreedesktopDBusIntrospectableProxy. - * @out_xml_data: (out): Return location for return parameter or %NULL to ignore. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Introspect() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_introspectable_call_introspect() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_introspectable_call_introspect_sync ( - OrgFreedesktopDBusIntrospectable *proxy, - gchar **out_xml_data, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Introspect", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "(s)", - out_xml_data); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_introspectable_complete_introspect: - * @object: A #OrgFreedesktopDBusIntrospectable. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * @xml_data: Parameter to return. - * - * Helper function used in service implementations to finish handling invocations of the Introspect() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_freedesktop_dbus_introspectable_complete_introspect ( - OrgFreedesktopDBusIntrospectable *object, - GDBusMethodInvocation *invocation, - const gchar *xml_data) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("(s)", - xml_data)); -} - -/* ------------------------------------------------------------------------ */ - -/** - * OrgFreedesktopDBusIntrospectableProxy: - * - * The #OrgFreedesktopDBusIntrospectableProxy structure contains only private data and should only be accessed using the provided API. - */ - -/** - * OrgFreedesktopDBusIntrospectableProxyClass: - * @parent_class: The parent class. - * - * Class structure for #OrgFreedesktopDBusIntrospectableProxy. - */ - -struct _OrgFreedesktopDBusIntrospectableProxyPrivate -{ - GData *qdata; -}; - -static void org_freedesktop_dbus_introspectable_proxy_iface_init (OrgFreedesktopDBusIntrospectableIface *iface); - -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableProxy, org_freedesktop_dbus_introspectable_proxy, G_TYPE_DBUS_PROXY, - G_ADD_PRIVATE (OrgFreedesktopDBusIntrospectableProxy) - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_proxy_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableProxy, org_freedesktop_dbus_introspectable_proxy, G_TYPE_DBUS_PROXY, - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_proxy_iface_init)); - -#endif -static void -org_freedesktop_dbus_introspectable_proxy_finalize (GObject *object) -{ - OrgFreedesktopDBusIntrospectableProxy *proxy = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (object); - g_datalist_clear (&proxy->priv->qdata); - G_OBJECT_CLASS (org_freedesktop_dbus_introspectable_proxy_parent_class)->finalize (object); -} - -static void -org_freedesktop_dbus_introspectable_proxy_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ -} - -static void -org_freedesktop_dbus_introspectable_proxy_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ -} - -static void -org_freedesktop_dbus_introspectable_proxy_g_signal (GDBusProxy *proxy, - const gchar *sender_name G_GNUC_UNUSED, - const gchar *signal_name, - GVariant *parameters) -{ - _ExtendedGDBusSignalInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - gsize num_params; - gsize n; - guint signal_id; - info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, signal_name); - if (info == NULL) - return; - num_params = g_variant_n_children (parameters); - paramv = g_new0 (GValue, num_params + 1); - g_value_init (¶mv[0], TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); - g_value_set_object (¶mv[0], proxy); - g_variant_iter_init (&iter, parameters); - n = 1; - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); - g_signal_emitv (paramv, signal_id, 0, NULL); - for (n = 0; n < num_params + 1; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static void -org_freedesktop_dbus_introspectable_proxy_g_properties_changed (GDBusProxy *_proxy, - GVariant *changed_properties, - const gchar *const *invalidated_properties) -{ - OrgFreedesktopDBusIntrospectableProxy *proxy = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (_proxy); - guint n; - const gchar *key; - GVariantIter *iter; - _ExtendedGDBusPropertyInfo *info; - g_variant_get (changed_properties, "a{sv}", &iter); - while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, key); - g_datalist_remove_data (&proxy->priv->qdata, key); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } - g_variant_iter_free (iter); - for (n = 0; invalidated_properties[n] != NULL; n++) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, invalidated_properties[n]); - g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } -} - -static void -org_freedesktop_dbus_introspectable_proxy_init (OrgFreedesktopDBusIntrospectableProxy *proxy) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - proxy->priv = org_freedesktop_dbus_introspectable_proxy_get_instance_private (proxy); -#else - proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxyPrivate); -#endif - - g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_freedesktop_dbus_introspectable_interface_info ()); -} - -static void -org_freedesktop_dbus_introspectable_proxy_class_init (OrgFreedesktopDBusIntrospectableProxyClass *klass) -{ - GObjectClass *gobject_class; - GDBusProxyClass *proxy_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = org_freedesktop_dbus_introspectable_proxy_finalize; - gobject_class->get_property = org_freedesktop_dbus_introspectable_proxy_get_property; - gobject_class->set_property = org_freedesktop_dbus_introspectable_proxy_set_property; - - proxy_class = G_DBUS_PROXY_CLASS (klass); - proxy_class->g_signal = org_freedesktop_dbus_introspectable_proxy_g_signal; - proxy_class->g_properties_changed = org_freedesktop_dbus_introspectable_proxy_g_properties_changed; - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusIntrospectableProxyPrivate)); -#endif -} - -static void -org_freedesktop_dbus_introspectable_proxy_iface_init (OrgFreedesktopDBusIntrospectableIface *iface) -{ -} - -/** - * org_freedesktop_dbus_introspectable_proxy_new: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Asynchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Introspectable. See g_dbus_proxy_new() for more details. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_introspectable_proxy_new_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_introspectable_proxy_new_sync() for the synchronous, blocking version of this constructor. - */ -void -org_freedesktop_dbus_introspectable_proxy_new ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL); -} - -/** - * org_freedesktop_dbus_introspectable_proxy_new_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_introspectable_proxy_new(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with org_freedesktop_dbus_introspectable_proxy_new(). - * - * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusIntrospectable * -org_freedesktop_dbus_introspectable_proxy_new_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret); - else - return NULL; -} - -/** - * org_freedesktop_dbus_introspectable_proxy_new_sync: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Synchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Introspectable. See g_dbus_proxy_new_sync() for more details. - * - * The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_introspectable_proxy_new() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusIntrospectable * -org_freedesktop_dbus_introspectable_proxy_new_sync ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *ret; - ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret); - else - return NULL; -} - - -/** - * org_freedesktop_dbus_introspectable_proxy_new_for_bus: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Like org_freedesktop_dbus_introspectable_proxy_new() but takes a #GBusType instead of a #GDBusConnection. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. - */ -void -org_freedesktop_dbus_introspectable_proxy_new_for_bus ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL); -} - -/** - * org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_introspectable_proxy_new_for_bus(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with org_freedesktop_dbus_introspectable_proxy_new_for_bus(). - * - * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusIntrospectable * -org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret); - else - return NULL; -} - -/** - * org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Like org_freedesktop_dbus_introspectable_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. - * - * The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_introspectable_proxy_new_for_bus() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusIntrospectable * -org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *ret; - ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret); - else - return NULL; -} - - -/* ------------------------------------------------------------------------ */ - -/** - * OrgFreedesktopDBusIntrospectableSkeleton: - * - * The #OrgFreedesktopDBusIntrospectableSkeleton structure contains only private data and should only be accessed using the provided API. - */ - -/** - * OrgFreedesktopDBusIntrospectableSkeletonClass: - * @parent_class: The parent class. - * - * Class structure for #OrgFreedesktopDBusIntrospectableSkeleton. - */ - -struct _OrgFreedesktopDBusIntrospectableSkeletonPrivate -{ - GValue *properties; - GList *changed_properties; - GSource *changed_properties_idle_source; - GMainContext *context; - GMutex lock; -}; - -static void -_org_freedesktop_dbus_introspectable_skeleton_handle_method_call ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer user_data) -{ - OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data); - _ExtendedGDBusMethodInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - gsize num_params; - guint num_extra; - gsize n; - guint signal_id; - GValue return_value = G_VALUE_INIT; - info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); - g_assert (info != NULL); - num_params = g_variant_n_children (parameters); - num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); - n = 0; - g_value_init (¶mv[n], TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); - g_value_set_object (¶mv[n++], skeleton); - g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); - g_value_set_object (¶mv[n++], invocation); - if (info->pass_fdlist) - { -#ifdef G_OS_UNIX - g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); - g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); -#else - g_assert_not_reached (); -#endif - } - g_variant_iter_init (&iter, parameters); - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE); - g_value_init (&return_value, G_TYPE_BOOLEAN); - g_signal_emitv (paramv, signal_id, 0, &return_value); - if (!g_value_get_boolean (&return_value)) - g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); - g_value_unset (&return_value); - for (n = 0; n < num_params + num_extra; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static GVariant * -_org_freedesktop_dbus_introspectable_skeleton_handle_get_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GError **error, - gpointer user_data) -{ - OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - GVariant *ret; - ret = NULL; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - g_value_init (&value, pspec->value_type); - g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); - ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); - g_value_unset (&value); - } - return ret; -} - -static gboolean -_org_freedesktop_dbus_introspectable_skeleton_handle_set_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GVariant *variant, - GError **error, - gpointer user_data) -{ - OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - gboolean ret; - ret = FALSE; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - if (info->use_gvariant) - g_value_set_variant (&value, variant); - else - g_dbus_gvariant_to_gvalue (variant, &value); - g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); - g_value_unset (&value); - ret = TRUE; - } - return ret; -} - -static const GDBusInterfaceVTable _org_freedesktop_dbus_introspectable_skeleton_vtable = -{ - _org_freedesktop_dbus_introspectable_skeleton_handle_method_call, - _org_freedesktop_dbus_introspectable_skeleton_handle_get_property, - _org_freedesktop_dbus_introspectable_skeleton_handle_set_property, - {NULL} -}; - -static GDBusInterfaceInfo * -org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return org_freedesktop_dbus_introspectable_interface_info (); -} - -static GDBusInterfaceVTable * -org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return (GDBusInterfaceVTable *) &_org_freedesktop_dbus_introspectable_skeleton_vtable; -} - -static GVariant * -org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) -{ - OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (_skeleton); - - GVariantBuilder builder; - guint n; - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); - if (_org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties == NULL) - goto out; - for (n = 0; _org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties[n] != NULL; n++) - { - GDBusPropertyInfo *info = _org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties[n]; - if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) - { - GVariant *value; - value = _org_freedesktop_dbus_introspectable_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Introspectable", info->name, NULL, skeleton); - if (value != NULL) - { - g_variant_take_ref (value); - g_variant_builder_add (&builder, "{sv}", info->name, value); - g_variant_unref (value); - } - } - } -out: - return g_variant_builder_end (&builder); -} - -static void -org_freedesktop_dbus_introspectable_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) -{ -} - -static void org_freedesktop_dbus_introspectable_skeleton_iface_init (OrgFreedesktopDBusIntrospectableIface *iface); -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableSkeleton, org_freedesktop_dbus_introspectable_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_ADD_PRIVATE (OrgFreedesktopDBusIntrospectableSkeleton) - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_skeleton_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableSkeleton, org_freedesktop_dbus_introspectable_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_skeleton_iface_init)); - -#endif -static void -org_freedesktop_dbus_introspectable_skeleton_finalize (GObject *object) -{ - OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (object); - g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); - if (skeleton->priv->changed_properties_idle_source != NULL) - g_source_destroy (skeleton->priv->changed_properties_idle_source); - g_main_context_unref (skeleton->priv->context); - g_mutex_clear (&skeleton->priv->lock); - G_OBJECT_CLASS (org_freedesktop_dbus_introspectable_skeleton_parent_class)->finalize (object); -} - -static void -org_freedesktop_dbus_introspectable_skeleton_init (OrgFreedesktopDBusIntrospectableSkeleton *skeleton) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - skeleton->priv = org_freedesktop_dbus_introspectable_skeleton_get_instance_private (skeleton); -#else - skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeletonPrivate); -#endif - - g_mutex_init (&skeleton->priv->lock); - skeleton->priv->context = g_main_context_ref_thread_default (); -} - -static void -org_freedesktop_dbus_introspectable_skeleton_class_init (OrgFreedesktopDBusIntrospectableSkeletonClass *klass) -{ - GObjectClass *gobject_class; - GDBusInterfaceSkeletonClass *skeleton_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = org_freedesktop_dbus_introspectable_skeleton_finalize; - - skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); - skeleton_class->get_info = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_info; - skeleton_class->get_properties = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_properties; - skeleton_class->flush = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_flush; - skeleton_class->get_vtable = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_vtable; - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusIntrospectableSkeletonPrivate)); -#endif -} - -static void -org_freedesktop_dbus_introspectable_skeleton_iface_init (OrgFreedesktopDBusIntrospectableIface *iface) -{ -} - -/** - * org_freedesktop_dbus_introspectable_skeleton_new: - * - * Creates a skeleton object for the D-Bus interface org.freedesktop.DBus.Introspectable. - * - * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableSkeleton): The skeleton object. - */ -OrgFreedesktopDBusIntrospectable * -org_freedesktop_dbus_introspectable_skeleton_new (void) -{ - return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (g_object_new (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, NULL)); -} - -/* ------------------------------------------------------------------------ - * Code for interface org.freedesktop.DBus.Peer - * ------------------------------------------------------------------------ - */ - -/** - * SECTION:OrgFreedesktopDBusPeer - * @title: OrgFreedesktopDBusPeer - * @short_description: Generated C code for the org.freedesktop.DBus.Peer D-Bus interface - * - * This section contains code for working with the org.freedesktop.DBus.Peer D-Bus interface in C. - */ - -/* ---- Introspection data for org.freedesktop.DBus.Peer ---- */ - -static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_peer_method_info_ping = -{ - { - -1, - (gchar *) "Ping", - NULL, - NULL, - NULL - }, - "handle-ping", - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_machine_uuid = -{ - { - -1, - (gchar *) "machine_uuid", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_pointers[] = -{ - &_org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_machine_uuid, - NULL -}; - -static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_peer_method_info_get_machine_id = -{ - { - -1, - (gchar *) "GetMachineId", - NULL, - (GDBusArgInfo **) &_org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_pointers, - NULL - }, - "handle-get-machine-id", - FALSE -}; - -static const _ExtendedGDBusMethodInfo * const _org_freedesktop_dbus_peer_method_info_pointers[] = -{ - &_org_freedesktop_dbus_peer_method_info_ping, - &_org_freedesktop_dbus_peer_method_info_get_machine_id, - NULL -}; - -static const _ExtendedGDBusInterfaceInfo _org_freedesktop_dbus_peer_interface_info = -{ - { - -1, - (gchar *) "org.freedesktop.DBus.Peer", - (GDBusMethodInfo **) &_org_freedesktop_dbus_peer_method_info_pointers, - NULL, - NULL, - NULL - }, - "org-freedesktop-dbus-peer", -}; - - -/** - * org_freedesktop_dbus_peer_interface_info: - * - * Gets a machine-readable description of the org.freedesktop.DBus.Peer D-Bus interface. - * - * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. - */ -GDBusInterfaceInfo * -org_freedesktop_dbus_peer_interface_info (void) -{ - return (GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct; -} - -/** - * org_freedesktop_dbus_peer_override_properties: - * @klass: The class structure for a #GObject-derived class. - * @property_id_begin: The property id to assign to the first overridden property. - * - * Overrides all #GObject properties in the #OrgFreedesktopDBusPeer interface for a concrete class. - * The properties are overridden in the order they are defined. - * - * Returns: The last property id. - */ -guint -org_freedesktop_dbus_peer_override_properties (GObjectClass *klass, guint property_id_begin) -{ - return property_id_begin - 1; -} - - - -/** - * OrgFreedesktopDBusPeer: - * - * Abstract interface type for the D-Bus interface org.freedesktop.DBus.Peer. - */ - -/** - * OrgFreedesktopDBusPeerIface: - * @parent_iface: The parent interface. - * @handle_get_machine_id: Handler for the #OrgFreedesktopDBusPeer::handle-get-machine-id signal. - * @handle_ping: Handler for the #OrgFreedesktopDBusPeer::handle-ping signal. - * - * Virtual table for the D-Bus interface org.freedesktop.DBus.Peer. - */ - -typedef OrgFreedesktopDBusPeerIface OrgFreedesktopDBusPeerInterface; -G_DEFINE_INTERFACE (OrgFreedesktopDBusPeer, org_freedesktop_dbus_peer, G_TYPE_OBJECT); - -static void -org_freedesktop_dbus_peer_default_init (OrgFreedesktopDBusPeerIface *iface) -{ - /* GObject signals for incoming D-Bus method calls: */ - /** - * OrgFreedesktopDBusPeer::handle-ping: - * @object: A #OrgFreedesktopDBusPeer. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the Ping() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_peer_complete_ping() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-ping", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgFreedesktopDBusPeerIface, handle_ping), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * OrgFreedesktopDBusPeer::handle-get-machine-id: - * @object: A #OrgFreedesktopDBusPeer. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the GetMachineId() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_peer_complete_get_machine_id() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-get-machine-id", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgFreedesktopDBusPeerIface, handle_get_machine_id), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - -} - -/** - * org_freedesktop_dbus_peer_call_ping: - * @proxy: A #OrgFreedesktopDBusPeerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Ping() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_peer_call_ping_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_peer_call_ping_sync() for the synchronous, blocking version of this method. - */ -void -org_freedesktop_dbus_peer_call_ping ( - OrgFreedesktopDBusPeer *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Ping", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_freedesktop_dbus_peer_call_ping_finish: - * @proxy: A #OrgFreedesktopDBusPeerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_call_ping(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_freedesktop_dbus_peer_call_ping(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_peer_call_ping_finish ( - OrgFreedesktopDBusPeer *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_peer_call_ping_sync: - * @proxy: A #OrgFreedesktopDBusPeerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Ping() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_peer_call_ping() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_peer_call_ping_sync ( - OrgFreedesktopDBusPeer *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Ping", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_peer_call_get_machine_id: - * @proxy: A #OrgFreedesktopDBusPeerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the GetMachineId() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_peer_call_get_machine_id_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_peer_call_get_machine_id_sync() for the synchronous, blocking version of this method. - */ -void -org_freedesktop_dbus_peer_call_get_machine_id ( - OrgFreedesktopDBusPeer *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "GetMachineId", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_freedesktop_dbus_peer_call_get_machine_id_finish: - * @proxy: A #OrgFreedesktopDBusPeerProxy. - * @out_machine_uuid: (out): Return location for return parameter or %NULL to ignore. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_call_get_machine_id(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_freedesktop_dbus_peer_call_get_machine_id(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_peer_call_get_machine_id_finish ( - OrgFreedesktopDBusPeer *proxy, - gchar **out_machine_uuid, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "(s)", - out_machine_uuid); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_peer_call_get_machine_id_sync: - * @proxy: A #OrgFreedesktopDBusPeerProxy. - * @out_machine_uuid: (out): Return location for return parameter or %NULL to ignore. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the GetMachineId() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_peer_call_get_machine_id() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_freedesktop_dbus_peer_call_get_machine_id_sync ( - OrgFreedesktopDBusPeer *proxy, - gchar **out_machine_uuid, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "GetMachineId", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "(s)", - out_machine_uuid); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_freedesktop_dbus_peer_complete_ping: - * @object: A #OrgFreedesktopDBusPeer. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Ping() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_freedesktop_dbus_peer_complete_ping ( - OrgFreedesktopDBusPeer *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_freedesktop_dbus_peer_complete_get_machine_id: - * @object: A #OrgFreedesktopDBusPeer. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * @machine_uuid: Parameter to return. - * - * Helper function used in service implementations to finish handling invocations of the GetMachineId() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_freedesktop_dbus_peer_complete_get_machine_id ( - OrgFreedesktopDBusPeer *object, - GDBusMethodInvocation *invocation, - const gchar *machine_uuid) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("(s)", - machine_uuid)); -} - -/* ------------------------------------------------------------------------ */ - -/** - * OrgFreedesktopDBusPeerProxy: - * - * The #OrgFreedesktopDBusPeerProxy structure contains only private data and should only be accessed using the provided API. - */ - -/** - * OrgFreedesktopDBusPeerProxyClass: - * @parent_class: The parent class. - * - * Class structure for #OrgFreedesktopDBusPeerProxy. - */ - -struct _OrgFreedesktopDBusPeerProxyPrivate -{ - GData *qdata; -}; - -static void org_freedesktop_dbus_peer_proxy_iface_init (OrgFreedesktopDBusPeerIface *iface); - -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerProxy, org_freedesktop_dbus_peer_proxy, G_TYPE_DBUS_PROXY, - G_ADD_PRIVATE (OrgFreedesktopDBusPeerProxy) - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_proxy_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerProxy, org_freedesktop_dbus_peer_proxy, G_TYPE_DBUS_PROXY, - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_proxy_iface_init)); - -#endif -static void -org_freedesktop_dbus_peer_proxy_finalize (GObject *object) -{ - OrgFreedesktopDBusPeerProxy *proxy = ORG_FREEDESKTOP_DBUS_PEER_PROXY (object); - g_datalist_clear (&proxy->priv->qdata); - G_OBJECT_CLASS (org_freedesktop_dbus_peer_proxy_parent_class)->finalize (object); -} - -static void -org_freedesktop_dbus_peer_proxy_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ -} - -static void -org_freedesktop_dbus_peer_proxy_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ -} - -static void -org_freedesktop_dbus_peer_proxy_g_signal (GDBusProxy *proxy, - const gchar *sender_name G_GNUC_UNUSED, - const gchar *signal_name, - GVariant *parameters) -{ - _ExtendedGDBusSignalInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - gsize num_params; - gsize n; - guint signal_id; - info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, signal_name); - if (info == NULL) - return; - num_params = g_variant_n_children (parameters); - paramv = g_new0 (GValue, num_params + 1); - g_value_init (¶mv[0], TYPE_ORG_FREEDESKTOP_DBUS_PEER); - g_value_set_object (¶mv[0], proxy); - g_variant_iter_init (&iter, parameters); - n = 1; - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PEER); - g_signal_emitv (paramv, signal_id, 0, NULL); - for (n = 0; n < num_params + 1; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static void -org_freedesktop_dbus_peer_proxy_g_properties_changed (GDBusProxy *_proxy, - GVariant *changed_properties, - const gchar *const *invalidated_properties) -{ - OrgFreedesktopDBusPeerProxy *proxy = ORG_FREEDESKTOP_DBUS_PEER_PROXY (_proxy); - guint n; - const gchar *key; - GVariantIter *iter; - _ExtendedGDBusPropertyInfo *info; - g_variant_get (changed_properties, "a{sv}", &iter); - while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, key); - g_datalist_remove_data (&proxy->priv->qdata, key); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } - g_variant_iter_free (iter); - for (n = 0; invalidated_properties[n] != NULL; n++) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, invalidated_properties[n]); - g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } -} - -static void -org_freedesktop_dbus_peer_proxy_init (OrgFreedesktopDBusPeerProxy *proxy) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - proxy->priv = org_freedesktop_dbus_peer_proxy_get_instance_private (proxy); -#else - proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxyPrivate); -#endif - - g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_freedesktop_dbus_peer_interface_info ()); -} - -static void -org_freedesktop_dbus_peer_proxy_class_init (OrgFreedesktopDBusPeerProxyClass *klass) -{ - GObjectClass *gobject_class; - GDBusProxyClass *proxy_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = org_freedesktop_dbus_peer_proxy_finalize; - gobject_class->get_property = org_freedesktop_dbus_peer_proxy_get_property; - gobject_class->set_property = org_freedesktop_dbus_peer_proxy_set_property; - - proxy_class = G_DBUS_PROXY_CLASS (klass); - proxy_class->g_signal = org_freedesktop_dbus_peer_proxy_g_signal; - proxy_class->g_properties_changed = org_freedesktop_dbus_peer_proxy_g_properties_changed; - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPeerProxyPrivate)); -#endif -} - -static void -org_freedesktop_dbus_peer_proxy_iface_init (OrgFreedesktopDBusPeerIface *iface) -{ -} - -/** - * org_freedesktop_dbus_peer_proxy_new: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Asynchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Peer. See g_dbus_proxy_new() for more details. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_peer_proxy_new_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_peer_proxy_new_sync() for the synchronous, blocking version of this constructor. - */ -void -org_freedesktop_dbus_peer_proxy_new ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL); -} - -/** - * org_freedesktop_dbus_peer_proxy_new_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_proxy_new(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with org_freedesktop_dbus_peer_proxy_new(). - * - * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusPeer * -org_freedesktop_dbus_peer_proxy_new_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_PEER (ret); - else - return NULL; -} - -/** - * org_freedesktop_dbus_peer_proxy_new_sync: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Synchronously creates a proxy for the D-Bus interface org.freedesktop.DBus.Peer. See g_dbus_proxy_new_sync() for more details. - * - * The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_peer_proxy_new() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusPeer * -org_freedesktop_dbus_peer_proxy_new_sync ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *ret; - ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_PEER (ret); - else - return NULL; -} - - -/** - * org_freedesktop_dbus_peer_proxy_new_for_bus: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Like org_freedesktop_dbus_peer_proxy_new() but takes a #GBusType instead of a #GDBusConnection. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_freedesktop_dbus_peer_proxy_new_for_bus_finish() to get the result of the operation. - * - * See org_freedesktop_dbus_peer_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. - */ -void -org_freedesktop_dbus_peer_proxy_new_for_bus ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL); -} - -/** - * org_freedesktop_dbus_peer_proxy_new_for_bus_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_proxy_new_for_bus(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with org_freedesktop_dbus_peer_proxy_new_for_bus(). - * - * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusPeer * -org_freedesktop_dbus_peer_proxy_new_for_bus_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_PEER (ret); - else - return NULL; -} - -/** - * org_freedesktop_dbus_peer_proxy_new_for_bus_sync: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Like org_freedesktop_dbus_peer_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. - * - * The calling thread is blocked until a reply is received. - * - * See org_freedesktop_dbus_peer_proxy_new_for_bus() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgFreedesktopDBusPeer * -org_freedesktop_dbus_peer_proxy_new_for_bus_sync ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *ret; - ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL); - if (ret != NULL) - return ORG_FREEDESKTOP_DBUS_PEER (ret); - else - return NULL; -} - - -/* ------------------------------------------------------------------------ */ - -/** - * OrgFreedesktopDBusPeerSkeleton: - * - * The #OrgFreedesktopDBusPeerSkeleton structure contains only private data and should only be accessed using the provided API. - */ - -/** - * OrgFreedesktopDBusPeerSkeletonClass: - * @parent_class: The parent class. - * - * Class structure for #OrgFreedesktopDBusPeerSkeleton. - */ - -struct _OrgFreedesktopDBusPeerSkeletonPrivate -{ - GValue *properties; - GList *changed_properties; - GSource *changed_properties_idle_source; - GMainContext *context; - GMutex lock; -}; - -static void -_org_freedesktop_dbus_peer_skeleton_handle_method_call ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer user_data) -{ - OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (user_data); - _ExtendedGDBusMethodInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - gsize num_params; - guint num_extra; - gsize n; - guint signal_id; - GValue return_value = G_VALUE_INIT; - info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); - g_assert (info != NULL); - num_params = g_variant_n_children (parameters); - num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); - n = 0; - g_value_init (¶mv[n], TYPE_ORG_FREEDESKTOP_DBUS_PEER); - g_value_set_object (¶mv[n++], skeleton); - g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); - g_value_set_object (¶mv[n++], invocation); - if (info->pass_fdlist) - { -#ifdef G_OS_UNIX - g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); - g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); -#else - g_assert_not_reached (); -#endif - } - g_variant_iter_init (&iter, parameters); - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PEER); - g_value_init (&return_value, G_TYPE_BOOLEAN); - g_signal_emitv (paramv, signal_id, 0, &return_value); - if (!g_value_get_boolean (&return_value)) - g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); - g_value_unset (&return_value); - for (n = 0; n < num_params + num_extra; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static GVariant * -_org_freedesktop_dbus_peer_skeleton_handle_get_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GError **error, - gpointer user_data) -{ - OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - GVariant *ret; - ret = NULL; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - g_value_init (&value, pspec->value_type); - g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); - ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); - g_value_unset (&value); - } - return ret; -} - -static gboolean -_org_freedesktop_dbus_peer_skeleton_handle_set_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GVariant *variant, - GError **error, - gpointer user_data) -{ - OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - gboolean ret; - ret = FALSE; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - if (info->use_gvariant) - g_value_set_variant (&value, variant); - else - g_dbus_gvariant_to_gvalue (variant, &value); - g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); - g_value_unset (&value); - ret = TRUE; - } - return ret; -} - -static const GDBusInterfaceVTable _org_freedesktop_dbus_peer_skeleton_vtable = -{ - _org_freedesktop_dbus_peer_skeleton_handle_method_call, - _org_freedesktop_dbus_peer_skeleton_handle_get_property, - _org_freedesktop_dbus_peer_skeleton_handle_set_property, - {NULL} -}; - -static GDBusInterfaceInfo * -org_freedesktop_dbus_peer_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return org_freedesktop_dbus_peer_interface_info (); -} - -static GDBusInterfaceVTable * -org_freedesktop_dbus_peer_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return (GDBusInterfaceVTable *) &_org_freedesktop_dbus_peer_skeleton_vtable; -} - -static GVariant * -org_freedesktop_dbus_peer_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) -{ - OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (_skeleton); - - GVariantBuilder builder; - guint n; - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); - if (_org_freedesktop_dbus_peer_interface_info.parent_struct.properties == NULL) - goto out; - for (n = 0; _org_freedesktop_dbus_peer_interface_info.parent_struct.properties[n] != NULL; n++) - { - GDBusPropertyInfo *info = _org_freedesktop_dbus_peer_interface_info.parent_struct.properties[n]; - if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) - { - GVariant *value; - value = _org_freedesktop_dbus_peer_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Peer", info->name, NULL, skeleton); - if (value != NULL) - { - g_variant_take_ref (value); - g_variant_builder_add (&builder, "{sv}", info->name, value); - g_variant_unref (value); - } - } - } -out: - return g_variant_builder_end (&builder); -} - -static void -org_freedesktop_dbus_peer_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) -{ -} - -static void org_freedesktop_dbus_peer_skeleton_iface_init (OrgFreedesktopDBusPeerIface *iface); -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerSkeleton, org_freedesktop_dbus_peer_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_ADD_PRIVATE (OrgFreedesktopDBusPeerSkeleton) - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_skeleton_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerSkeleton, org_freedesktop_dbus_peer_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_skeleton_iface_init)); - -#endif -static void -org_freedesktop_dbus_peer_skeleton_finalize (GObject *object) -{ - OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (object); - g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); - if (skeleton->priv->changed_properties_idle_source != NULL) - g_source_destroy (skeleton->priv->changed_properties_idle_source); - g_main_context_unref (skeleton->priv->context); - g_mutex_clear (&skeleton->priv->lock); - G_OBJECT_CLASS (org_freedesktop_dbus_peer_skeleton_parent_class)->finalize (object); -} - -static void -org_freedesktop_dbus_peer_skeleton_init (OrgFreedesktopDBusPeerSkeleton *skeleton) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - skeleton->priv = org_freedesktop_dbus_peer_skeleton_get_instance_private (skeleton); -#else - skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeletonPrivate); -#endif - - g_mutex_init (&skeleton->priv->lock); - skeleton->priv->context = g_main_context_ref_thread_default (); -} - -static void -org_freedesktop_dbus_peer_skeleton_class_init (OrgFreedesktopDBusPeerSkeletonClass *klass) -{ - GObjectClass *gobject_class; - GDBusInterfaceSkeletonClass *skeleton_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = org_freedesktop_dbus_peer_skeleton_finalize; - - skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); - skeleton_class->get_info = org_freedesktop_dbus_peer_skeleton_dbus_interface_get_info; - skeleton_class->get_properties = org_freedesktop_dbus_peer_skeleton_dbus_interface_get_properties; - skeleton_class->flush = org_freedesktop_dbus_peer_skeleton_dbus_interface_flush; - skeleton_class->get_vtable = org_freedesktop_dbus_peer_skeleton_dbus_interface_get_vtable; - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPeerSkeletonPrivate)); -#endif -} - -static void -org_freedesktop_dbus_peer_skeleton_iface_init (OrgFreedesktopDBusPeerIface *iface) -{ -} - -/** - * org_freedesktop_dbus_peer_skeleton_new: - * - * Creates a skeleton object for the D-Bus interface org.freedesktop.DBus.Peer. - * - * Returns: (transfer full) (type OrgFreedesktopDBusPeerSkeleton): The skeleton object. - */ -OrgFreedesktopDBusPeer * -org_freedesktop_dbus_peer_skeleton_new (void) -{ - return ORG_FREEDESKTOP_DBUS_PEER (g_object_new (TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, NULL)); -} - -/* ------------------------------------------------------------------------ - * Code for interface org.lightmediascanner.Scanner1 - * ------------------------------------------------------------------------ - */ - -/** - * SECTION:Scanner1 - * @title: Scanner1 - * @short_description: Generated C code for the org.lightmediascanner.Scanner1 D-Bus interface - * - * This section contains code for working with the org.lightmediascanner.Scanner1 D-Bus interface in C. - */ - -/* ---- Introspection data for org.lightmediascanner.Scanner1 ---- */ - -static const _ExtendedGDBusArgInfo _scanner1_method_info_scan_IN_ARG_specification = -{ - { - -1, - (gchar *) "specification", - (gchar *) "a{sv}", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _scanner1_method_info_scan_IN_ARG_pointers[] = -{ - &_scanner1_method_info_scan_IN_ARG_specification, - NULL -}; - -static const _ExtendedGDBusMethodInfo _scanner1_method_info_scan = -{ - { - -1, - (gchar *) "Scan", - (GDBusArgInfo **) &_scanner1_method_info_scan_IN_ARG_pointers, - NULL, - NULL - }, - "handle-scan", - FALSE -}; - -static const _ExtendedGDBusMethodInfo _scanner1_method_info_stop = -{ - { - -1, - (gchar *) "Stop", - NULL, - NULL, - NULL - }, - "handle-stop", - FALSE -}; - -static const _ExtendedGDBusMethodInfo _scanner1_method_info_request_write_lock = -{ - { - -1, - (gchar *) "RequestWriteLock", - NULL, - NULL, - NULL - }, - "handle-request-write-lock", - FALSE -}; - -static const _ExtendedGDBusMethodInfo _scanner1_method_info_release_write_lock = -{ - { - -1, - (gchar *) "ReleaseWriteLock", - NULL, - NULL, - NULL - }, - "handle-release-write-lock", - FALSE -}; - -static const _ExtendedGDBusMethodInfo * const _scanner1_method_info_pointers[] = -{ - &_scanner1_method_info_scan, - &_scanner1_method_info_stop, - &_scanner1_method_info_request_write_lock, - &_scanner1_method_info_release_write_lock, - NULL -}; - -static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Category = -{ - { - -1, - (gchar *) "Category", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Path = -{ - { - -1, - (gchar *) "Path", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_UpToDate = -{ - { - -1, - (gchar *) "UpToDate", - (gchar *) "t", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Processed = -{ - { - -1, - (gchar *) "Processed", - (gchar *) "t", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Deleted = -{ - { - -1, - (gchar *) "Deleted", - (gchar *) "t", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Skipped = -{ - { - -1, - (gchar *) "Skipped", - (gchar *) "t", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Errors = -{ - { - -1, - (gchar *) "Errors", - (gchar *) "t", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _scanner1_signal_info_scan_progress_ARG_pointers[] = -{ - &_scanner1_signal_info_scan_progress_ARG_Category, - &_scanner1_signal_info_scan_progress_ARG_Path, - &_scanner1_signal_info_scan_progress_ARG_UpToDate, - &_scanner1_signal_info_scan_progress_ARG_Processed, - &_scanner1_signal_info_scan_progress_ARG_Deleted, - &_scanner1_signal_info_scan_progress_ARG_Skipped, - &_scanner1_signal_info_scan_progress_ARG_Errors, - NULL -}; - -static const _ExtendedGDBusSignalInfo _scanner1_signal_info_scan_progress = -{ - { - -1, - (gchar *) "ScanProgress", - (GDBusArgInfo **) &_scanner1_signal_info_scan_progress_ARG_pointers, - NULL - }, - "scan-progress" -}; - -static const _ExtendedGDBusSignalInfo * const _scanner1_signal_info_pointers[] = -{ - &_scanner1_signal_info_scan_progress, - NULL -}; - -static const _ExtendedGDBusPropertyInfo _scanner1_property_info_data_base_path = -{ - { - -1, - (gchar *) "DataBasePath", - (gchar *) "s", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "data-base-path", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _scanner1_property_info_is_scanning = -{ - { - -1, - (gchar *) "IsScanning", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "is-scanning", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _scanner1_property_info_write_locked = -{ - { - -1, - (gchar *) "WriteLocked", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "write-locked", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _scanner1_property_info_update_id = -{ - { - -1, - (gchar *) "UpdateID", - (gchar *) "t", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "update-id", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _scanner1_property_info_categories = -{ - { - -1, - (gchar *) "Categories", - (gchar *) "a{sv}", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "categories", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo * const _scanner1_property_info_pointers[] = -{ - &_scanner1_property_info_data_base_path, - &_scanner1_property_info_is_scanning, - &_scanner1_property_info_write_locked, - &_scanner1_property_info_update_id, - &_scanner1_property_info_categories, - NULL -}; - -static const _ExtendedGDBusInterfaceInfo _scanner1_interface_info = -{ - { - -1, - (gchar *) "org.lightmediascanner.Scanner1", - (GDBusMethodInfo **) &_scanner1_method_info_pointers, - (GDBusSignalInfo **) &_scanner1_signal_info_pointers, - (GDBusPropertyInfo **) &_scanner1_property_info_pointers, - NULL - }, - "scanner1", -}; - - -/** - * scanner1_interface_info: - * - * Gets a machine-readable description of the org.lightmediascanner.Scanner1 D-Bus interface. - * - * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. - */ -GDBusInterfaceInfo * -scanner1_interface_info (void) -{ - return (GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct; -} - -/** - * scanner1_override_properties: - * @klass: The class structure for a #GObject-derived class. - * @property_id_begin: The property id to assign to the first overridden property. - * - * Overrides all #GObject properties in the #Scanner1 interface for a concrete class. - * The properties are overridden in the order they are defined. - * - * Returns: The last property id. - */ -guint -scanner1_override_properties (GObjectClass *klass, guint property_id_begin) -{ - g_object_class_override_property (klass, property_id_begin++, "data-base-path"); - g_object_class_override_property (klass, property_id_begin++, "is-scanning"); - g_object_class_override_property (klass, property_id_begin++, "write-locked"); - g_object_class_override_property (klass, property_id_begin++, "update-id"); - g_object_class_override_property (klass, property_id_begin++, "categories"); - return property_id_begin - 1; -} - - - -/** - * Scanner1: - * - * Abstract interface type for the D-Bus interface org.lightmediascanner.Scanner1. - */ - -/** - * Scanner1Iface: - * @parent_iface: The parent interface. - * @handle_release_write_lock: Handler for the #Scanner1::handle-release-write-lock signal. - * @handle_request_write_lock: Handler for the #Scanner1::handle-request-write-lock signal. - * @handle_scan: Handler for the #Scanner1::handle-scan signal. - * @handle_stop: Handler for the #Scanner1::handle-stop signal. - * @get_categories: Getter for the #Scanner1:categories property. - * @get_data_base_path: Getter for the #Scanner1:data-base-path property. - * @get_is_scanning: Getter for the #Scanner1:is-scanning property. - * @get_update_id: Getter for the #Scanner1:update-id property. - * @get_write_locked: Getter for the #Scanner1:write-locked property. - * @scan_progress: Handler for the #Scanner1::scan-progress signal. - * - * Virtual table for the D-Bus interface org.lightmediascanner.Scanner1. - */ - -typedef Scanner1Iface Scanner1Interface; -G_DEFINE_INTERFACE (Scanner1, scanner1, G_TYPE_OBJECT); - -static void -scanner1_default_init (Scanner1Iface *iface) -{ - /* GObject signals for incoming D-Bus method calls: */ - /** - * Scanner1::handle-scan: - * @object: A #Scanner1. - * @invocation: A #GDBusMethodInvocation. - * @arg_specification: Argument passed by remote caller. - * - * Signal emitted when a remote caller is invoking the Scan() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_scan() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-scan", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (Scanner1Iface, handle_scan), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 2, - G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT); - - /** - * Scanner1::handle-stop: - * @object: A #Scanner1. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the Stop() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_stop() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-stop", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (Scanner1Iface, handle_stop), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * Scanner1::handle-request-write-lock: - * @object: A #Scanner1. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the RequestWriteLock() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_request_write_lock() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-request-write-lock", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (Scanner1Iface, handle_request_write_lock), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * Scanner1::handle-release-write-lock: - * @object: A #Scanner1. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the ReleaseWriteLock() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_release_write_lock() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-release-write-lock", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (Scanner1Iface, handle_release_write_lock), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /* GObject signals for received D-Bus signals: */ - /** - * Scanner1::scan-progress: - * @object: A #Scanner1. - * @arg_Category: Argument. - * @arg_Path: Argument. - * @arg_UpToDate: Argument. - * @arg_Processed: Argument. - * @arg_Deleted: Argument. - * @arg_Skipped: Argument. - * @arg_Errors: Argument. - * - * On the client-side, this signal is emitted whenever the D-Bus signal "ScanProgress" is received. - * - * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. - */ - g_signal_new ("scan-progress", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (Scanner1Iface, scan_progress), - NULL, - NULL, - g_cclosure_marshal_generic, - G_TYPE_NONE, - 7, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_UINT64, G_TYPE_UINT64, G_TYPE_UINT64, G_TYPE_UINT64); - - /* GObject properties for D-Bus properties: */ - /** - * Scanner1:data-base-path: - * - * Represents the D-Bus property "DataBasePath". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_string ("data-base-path", "DataBasePath", "DataBasePath", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * Scanner1:is-scanning: - * - * Represents the D-Bus property "IsScanning". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("is-scanning", "IsScanning", "IsScanning", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * Scanner1:write-locked: - * - * Represents the D-Bus property "WriteLocked". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("write-locked", "WriteLocked", "WriteLocked", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * Scanner1:update-id: - * - * Represents the D-Bus property "UpdateID". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_uint64 ("update-id", "UpdateID", "UpdateID", 0, G_MAXUINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * Scanner1:categories: - * - * Represents the D-Bus property "Categories". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_variant ("categories", "Categories", "Categories", G_VARIANT_TYPE ("a{sv}"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); -} - -/** - * scanner1_get_data_base_path: (skip) - * @object: A #Scanner1. - * - * Gets the value of the "DataBasePath" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use scanner1_dup_data_base_path() if on another thread. - * - * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. - */ -const gchar * -scanner1_get_data_base_path (Scanner1 *object) -{ - return SCANNER1_GET_IFACE (object)->get_data_base_path (object); -} - -/** - * scanner1_dup_data_base_path: (skip) - * @object: A #Scanner1. - * - * Gets a copy of the "DataBasePath" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). - */ -gchar * -scanner1_dup_data_base_path (Scanner1 *object) -{ - gchar *value; - g_object_get (G_OBJECT (object), "data-base-path", &value, NULL); - return value; -} - -/** - * scanner1_set_data_base_path: (skip) - * @object: A #Scanner1. - * @value: The value to set. - * - * Sets the "DataBasePath" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -scanner1_set_data_base_path (Scanner1 *object, const gchar *value) -{ - g_object_set (G_OBJECT (object), "data-base-path", value, NULL); -} - -/** - * scanner1_get_is_scanning: (skip) - * @object: A #Scanner1. - * - * Gets the value of the "IsScanning" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -scanner1_get_is_scanning (Scanner1 *object) -{ - return SCANNER1_GET_IFACE (object)->get_is_scanning (object); -} - -/** - * scanner1_set_is_scanning: (skip) - * @object: A #Scanner1. - * @value: The value to set. - * - * Sets the "IsScanning" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -scanner1_set_is_scanning (Scanner1 *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "is-scanning", value, NULL); -} - -/** - * scanner1_get_write_locked: (skip) - * @object: A #Scanner1. - * - * Gets the value of the "WriteLocked" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -scanner1_get_write_locked (Scanner1 *object) -{ - return SCANNER1_GET_IFACE (object)->get_write_locked (object); -} - -/** - * scanner1_set_write_locked: (skip) - * @object: A #Scanner1. - * @value: The value to set. - * - * Sets the "WriteLocked" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -scanner1_set_write_locked (Scanner1 *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "write-locked", value, NULL); -} - -/** - * scanner1_get_update_id: (skip) - * @object: A #Scanner1. - * - * Gets the value of the "UpdateID" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -guint64 -scanner1_get_update_id (Scanner1 *object) -{ - return SCANNER1_GET_IFACE (object)->get_update_id (object); -} - -/** - * scanner1_set_update_id: (skip) - * @object: A #Scanner1. - * @value: The value to set. - * - * Sets the "UpdateID" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -scanner1_set_update_id (Scanner1 *object, guint64 value) -{ - g_object_set (G_OBJECT (object), "update-id", value, NULL); -} - -/** - * scanner1_get_categories: (skip) - * @object: A #Scanner1. - * - * Gets the value of the "Categories" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use scanner1_dup_categories() if on another thread. - * - * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. - */ -GVariant * -scanner1_get_categories (Scanner1 *object) -{ - return SCANNER1_GET_IFACE (object)->get_categories (object); -} - -/** - * scanner1_dup_categories: (skip) - * @object: A #Scanner1. - * - * Gets a copy of the "Categories" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref(). - */ -GVariant * -scanner1_dup_categories (Scanner1 *object) -{ - GVariant *value; - g_object_get (G_OBJECT (object), "categories", &value, NULL); - return value; -} - -/** - * scanner1_set_categories: (skip) - * @object: A #Scanner1. - * @value: The value to set. - * - * Sets the "Categories" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -scanner1_set_categories (Scanner1 *object, GVariant *value) -{ - g_object_set (G_OBJECT (object), "categories", value, NULL); -} - -/** - * scanner1_emit_scan_progress: - * @object: A #Scanner1. - * @arg_Category: Argument to pass with the signal. - * @arg_Path: Argument to pass with the signal. - * @arg_UpToDate: Argument to pass with the signal. - * @arg_Processed: Argument to pass with the signal. - * @arg_Deleted: Argument to pass with the signal. - * @arg_Skipped: Argument to pass with the signal. - * @arg_Errors: Argument to pass with the signal. - * - * Emits the "ScanProgress" D-Bus signal. - */ -void -scanner1_emit_scan_progress ( - Scanner1 *object, - const gchar *arg_Category, - const gchar *arg_Path, - guint64 arg_UpToDate, - guint64 arg_Processed, - guint64 arg_Deleted, - guint64 arg_Skipped, - guint64 arg_Errors) -{ - g_signal_emit_by_name (object, "scan-progress", arg_Category, arg_Path, arg_UpToDate, arg_Processed, arg_Deleted, arg_Skipped, arg_Errors); -} - -/** - * scanner1_call_scan: - * @proxy: A #Scanner1Proxy. - * @arg_specification: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Scan() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call scanner1_call_scan_finish() to get the result of the operation. - * - * See scanner1_call_scan_sync() for the synchronous, blocking version of this method. - */ -void -scanner1_call_scan ( - Scanner1 *proxy, - GVariant *arg_specification, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Scan", - g_variant_new ("(@a{sv})", - arg_specification), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * scanner1_call_scan_finish: - * @proxy: A #Scanner1Proxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_scan(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with scanner1_call_scan(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -scanner1_call_scan_finish ( - Scanner1 *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * scanner1_call_scan_sync: - * @proxy: A #Scanner1Proxy. - * @arg_specification: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Scan() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See scanner1_call_scan() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -scanner1_call_scan_sync ( - Scanner1 *proxy, - GVariant *arg_specification, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Scan", - g_variant_new ("(@a{sv})", - arg_specification), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * scanner1_call_stop: - * @proxy: A #Scanner1Proxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Stop() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call scanner1_call_stop_finish() to get the result of the operation. - * - * See scanner1_call_stop_sync() for the synchronous, blocking version of this method. - */ -void -scanner1_call_stop ( - Scanner1 *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Stop", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * scanner1_call_stop_finish: - * @proxy: A #Scanner1Proxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_stop(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with scanner1_call_stop(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -scanner1_call_stop_finish ( - Scanner1 *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * scanner1_call_stop_sync: - * @proxy: A #Scanner1Proxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Stop() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See scanner1_call_stop() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -scanner1_call_stop_sync ( - Scanner1 *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Stop", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * scanner1_call_request_write_lock: - * @proxy: A #Scanner1Proxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the RequestWriteLock() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call scanner1_call_request_write_lock_finish() to get the result of the operation. - * - * See scanner1_call_request_write_lock_sync() for the synchronous, blocking version of this method. - */ -void -scanner1_call_request_write_lock ( - Scanner1 *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "RequestWriteLock", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * scanner1_call_request_write_lock_finish: - * @proxy: A #Scanner1Proxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_request_write_lock(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with scanner1_call_request_write_lock(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -scanner1_call_request_write_lock_finish ( - Scanner1 *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * scanner1_call_request_write_lock_sync: - * @proxy: A #Scanner1Proxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the RequestWriteLock() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See scanner1_call_request_write_lock() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -scanner1_call_request_write_lock_sync ( - Scanner1 *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "RequestWriteLock", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * scanner1_call_release_write_lock: - * @proxy: A #Scanner1Proxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the ReleaseWriteLock() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call scanner1_call_release_write_lock_finish() to get the result of the operation. - * - * See scanner1_call_release_write_lock_sync() for the synchronous, blocking version of this method. - */ -void -scanner1_call_release_write_lock ( - Scanner1 *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "ReleaseWriteLock", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * scanner1_call_release_write_lock_finish: - * @proxy: A #Scanner1Proxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_release_write_lock(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with scanner1_call_release_write_lock(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -scanner1_call_release_write_lock_finish ( - Scanner1 *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * scanner1_call_release_write_lock_sync: - * @proxy: A #Scanner1Proxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the ReleaseWriteLock() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See scanner1_call_release_write_lock() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -scanner1_call_release_write_lock_sync ( - Scanner1 *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "ReleaseWriteLock", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * scanner1_complete_scan: - * @object: A #Scanner1. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Scan() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -scanner1_complete_scan ( - Scanner1 *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * scanner1_complete_stop: - * @object: A #Scanner1. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Stop() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -scanner1_complete_stop ( - Scanner1 *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * scanner1_complete_request_write_lock: - * @object: A #Scanner1. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the RequestWriteLock() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -scanner1_complete_request_write_lock ( - Scanner1 *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * scanner1_complete_release_write_lock: - * @object: A #Scanner1. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the ReleaseWriteLock() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -scanner1_complete_release_write_lock ( - Scanner1 *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/* ------------------------------------------------------------------------ */ - -/** - * Scanner1Proxy: - * - * The #Scanner1Proxy structure contains only private data and should only be accessed using the provided API. - */ - -/** - * Scanner1ProxyClass: - * @parent_class: The parent class. - * - * Class structure for #Scanner1Proxy. - */ - -struct _Scanner1ProxyPrivate -{ - GData *qdata; -}; - -static void scanner1_proxy_iface_init (Scanner1Iface *iface); - -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (Scanner1Proxy, scanner1_proxy, G_TYPE_DBUS_PROXY, - G_ADD_PRIVATE (Scanner1Proxy) - G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_proxy_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (Scanner1Proxy, scanner1_proxy, G_TYPE_DBUS_PROXY, - G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_proxy_iface_init)); - -#endif -static void -scanner1_proxy_finalize (GObject *object) -{ - Scanner1Proxy *proxy = SCANNER1_PROXY (object); - g_datalist_clear (&proxy->priv->qdata); - G_OBJECT_CLASS (scanner1_proxy_parent_class)->finalize (object); -} - -static void -scanner1_proxy_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ - const _ExtendedGDBusPropertyInfo *info; - GVariant *variant; - g_assert (prop_id != 0 && prop_id - 1 < 5); - info = _scanner1_property_info_pointers[prop_id - 1]; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); - if (info->use_gvariant) - { - g_value_set_variant (value, variant); - } - else - { - if (variant != NULL) - g_dbus_gvariant_to_gvalue (variant, value); - } - if (variant != NULL) - g_variant_unref (variant); -} - -static void -scanner1_proxy_set_property_cb (GDBusProxy *proxy, - GAsyncResult *res, - gpointer user_data) -{ - const _ExtendedGDBusPropertyInfo *info = user_data; - GError *error; - GVariant *_ret; - error = NULL; - _ret = g_dbus_proxy_call_finish (proxy, res, &error); - if (!_ret) - { - g_warning ("Error setting property '%s' on interface org.lightmediascanner.Scanner1: %s (%s, %d)", - info->parent_struct.name, - error->message, g_quark_to_string (error->domain), error->code); - g_error_free (error); - } - else - { - g_variant_unref (_ret); - } -} - -static void -scanner1_proxy_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ - const _ExtendedGDBusPropertyInfo *info; - GVariant *variant; - g_assert (prop_id != 0 && prop_id - 1 < 5); - info = _scanner1_property_info_pointers[prop_id - 1]; - variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); - g_dbus_proxy_call (G_DBUS_PROXY (object), - "org.freedesktop.DBus.Properties.Set", - g_variant_new ("(ssv)", "org.lightmediascanner.Scanner1", info->parent_struct.name, variant), - G_DBUS_CALL_FLAGS_NONE, - -1, - NULL, (GAsyncReadyCallback) scanner1_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); - g_variant_unref (variant); -} - -static void -scanner1_proxy_g_signal (GDBusProxy *proxy, - const gchar *sender_name G_GNUC_UNUSED, - const gchar *signal_name, - GVariant *parameters) -{ - _ExtendedGDBusSignalInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - gsize num_params; - gsize n; - guint signal_id; - info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, signal_name); - if (info == NULL) - return; - num_params = g_variant_n_children (parameters); - paramv = g_new0 (GValue, num_params + 1); - g_value_init (¶mv[0], TYPE_SCANNER1); - g_value_set_object (¶mv[0], proxy); - g_variant_iter_init (&iter, parameters); - n = 1; - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_SCANNER1); - g_signal_emitv (paramv, signal_id, 0, NULL); - for (n = 0; n < num_params + 1; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static void -scanner1_proxy_g_properties_changed (GDBusProxy *_proxy, - GVariant *changed_properties, - const gchar *const *invalidated_properties) -{ - Scanner1Proxy *proxy = SCANNER1_PROXY (_proxy); - guint n; - const gchar *key; - GVariantIter *iter; - _ExtendedGDBusPropertyInfo *info; - g_variant_get (changed_properties, "a{sv}", &iter); - while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, key); - g_datalist_remove_data (&proxy->priv->qdata, key); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } - g_variant_iter_free (iter); - for (n = 0; invalidated_properties[n] != NULL; n++) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, invalidated_properties[n]); - g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } -} - -static const gchar * -scanner1_proxy_get_data_base_path (Scanner1 *object) -{ - Scanner1Proxy *proxy = SCANNER1_PROXY (object); - GVariant *variant; - const gchar *value = NULL; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "DataBasePath"); - if (variant != NULL) - { - value = g_variant_get_string (variant, NULL); - g_variant_unref (variant); - } - return value; -} - -static gboolean -scanner1_proxy_get_is_scanning (Scanner1 *object) -{ - Scanner1Proxy *proxy = SCANNER1_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "IsScanning"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static gboolean -scanner1_proxy_get_write_locked (Scanner1 *object) -{ - Scanner1Proxy *proxy = SCANNER1_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "WriteLocked"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static guint64 -scanner1_proxy_get_update_id (Scanner1 *object) -{ - Scanner1Proxy *proxy = SCANNER1_PROXY (object); - GVariant *variant; - guint64 value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "UpdateID"); - if (variant != NULL) - { - value = g_variant_get_uint64 (variant); - g_variant_unref (variant); - } - return value; -} - -static GVariant * -scanner1_proxy_get_categories (Scanner1 *object) -{ - Scanner1Proxy *proxy = SCANNER1_PROXY (object); - GVariant *variant; - GVariant *value = NULL; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Categories"); - value = variant; - if (variant != NULL) - g_variant_unref (variant); - return value; -} - -static void -scanner1_proxy_init (Scanner1Proxy *proxy) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - proxy->priv = scanner1_proxy_get_instance_private (proxy); -#else - proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_SCANNER1_PROXY, Scanner1ProxyPrivate); -#endif - - g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), scanner1_interface_info ()); -} - -static void -scanner1_proxy_class_init (Scanner1ProxyClass *klass) -{ - GObjectClass *gobject_class; - GDBusProxyClass *proxy_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = scanner1_proxy_finalize; - gobject_class->get_property = scanner1_proxy_get_property; - gobject_class->set_property = scanner1_proxy_set_property; - - proxy_class = G_DBUS_PROXY_CLASS (klass); - proxy_class->g_signal = scanner1_proxy_g_signal; - proxy_class->g_properties_changed = scanner1_proxy_g_properties_changed; - - scanner1_override_properties (gobject_class, 1); - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (Scanner1ProxyPrivate)); -#endif -} - -static void -scanner1_proxy_iface_init (Scanner1Iface *iface) -{ - iface->get_data_base_path = scanner1_proxy_get_data_base_path; - iface->get_is_scanning = scanner1_proxy_get_is_scanning; - iface->get_write_locked = scanner1_proxy_get_write_locked; - iface->get_update_id = scanner1_proxy_get_update_id; - iface->get_categories = scanner1_proxy_get_categories; -} - -/** - * scanner1_proxy_new: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Asynchronously creates a proxy for the D-Bus interface org.lightmediascanner.Scanner1. See g_dbus_proxy_new() for more details. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call scanner1_proxy_new_finish() to get the result of the operation. - * - * See scanner1_proxy_new_sync() for the synchronous, blocking version of this constructor. - */ -void -scanner1_proxy_new ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async (TYPE_SCANNER1_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL); -} - -/** - * scanner1_proxy_new_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_proxy_new(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with scanner1_proxy_new(). - * - * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set. - */ -Scanner1 * -scanner1_proxy_new_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return SCANNER1 (ret); - else - return NULL; -} - -/** - * scanner1_proxy_new_sync: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Synchronously creates a proxy for the D-Bus interface org.lightmediascanner.Scanner1. See g_dbus_proxy_new_sync() for more details. - * - * The calling thread is blocked until a reply is received. - * - * See scanner1_proxy_new() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set. - */ -Scanner1 * -scanner1_proxy_new_sync ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *ret; - ret = g_initable_new (TYPE_SCANNER1_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL); - if (ret != NULL) - return SCANNER1 (ret); - else - return NULL; -} - - -/** - * scanner1_proxy_new_for_bus: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Like scanner1_proxy_new() but takes a #GBusType instead of a #GDBusConnection. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call scanner1_proxy_new_for_bus_finish() to get the result of the operation. - * - * See scanner1_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. - */ -void -scanner1_proxy_new_for_bus ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async (TYPE_SCANNER1_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL); -} - -/** - * scanner1_proxy_new_for_bus_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_proxy_new_for_bus(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with scanner1_proxy_new_for_bus(). - * - * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set. - */ -Scanner1 * -scanner1_proxy_new_for_bus_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return SCANNER1 (ret); - else - return NULL; -} - -/** - * scanner1_proxy_new_for_bus_sync: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Like scanner1_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. - * - * The calling thread is blocked until a reply is received. - * - * See scanner1_proxy_new_for_bus() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set. - */ -Scanner1 * -scanner1_proxy_new_for_bus_sync ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *ret; - ret = g_initable_new (TYPE_SCANNER1_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL); - if (ret != NULL) - return SCANNER1 (ret); - else - return NULL; -} - - -/* ------------------------------------------------------------------------ */ - -/** - * Scanner1Skeleton: - * - * The #Scanner1Skeleton structure contains only private data and should only be accessed using the provided API. - */ - -/** - * Scanner1SkeletonClass: - * @parent_class: The parent class. - * - * Class structure for #Scanner1Skeleton. - */ - -struct _Scanner1SkeletonPrivate -{ - GValue *properties; - GList *changed_properties; - GSource *changed_properties_idle_source; - GMainContext *context; - GMutex lock; -}; - -static void -_scanner1_skeleton_handle_method_call ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer user_data) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data); - _ExtendedGDBusMethodInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - gsize num_params; - guint num_extra; - gsize n; - guint signal_id; - GValue return_value = G_VALUE_INIT; - info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); - g_assert (info != NULL); - num_params = g_variant_n_children (parameters); - num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); - n = 0; - g_value_init (¶mv[n], TYPE_SCANNER1); - g_value_set_object (¶mv[n++], skeleton); - g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); - g_value_set_object (¶mv[n++], invocation); - if (info->pass_fdlist) - { -#ifdef G_OS_UNIX - g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); - g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); -#else - g_assert_not_reached (); -#endif - } - g_variant_iter_init (&iter, parameters); - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_SCANNER1); - g_value_init (&return_value, G_TYPE_BOOLEAN); - g_signal_emitv (paramv, signal_id, 0, &return_value); - if (!g_value_get_boolean (&return_value)) - g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); - g_value_unset (&return_value); - for (n = 0; n < num_params + num_extra; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static GVariant * -_scanner1_skeleton_handle_get_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GError **error, - gpointer user_data) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - GVariant *ret; - ret = NULL; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - g_value_init (&value, pspec->value_type); - g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); - ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); - g_value_unset (&value); - } - return ret; -} - -static gboolean -_scanner1_skeleton_handle_set_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GVariant *variant, - GError **error, - gpointer user_data) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - gboolean ret; - ret = FALSE; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - if (info->use_gvariant) - g_value_set_variant (&value, variant); - else - g_dbus_gvariant_to_gvalue (variant, &value); - g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); - g_value_unset (&value); - ret = TRUE; - } - return ret; -} - -static const GDBusInterfaceVTable _scanner1_skeleton_vtable = -{ - _scanner1_skeleton_handle_method_call, - _scanner1_skeleton_handle_get_property, - _scanner1_skeleton_handle_set_property, - {NULL} -}; - -static GDBusInterfaceInfo * -scanner1_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return scanner1_interface_info (); -} - -static GDBusInterfaceVTable * -scanner1_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return (GDBusInterfaceVTable *) &_scanner1_skeleton_vtable; -} - -static GVariant * -scanner1_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (_skeleton); - - GVariantBuilder builder; - guint n; - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); - if (_scanner1_interface_info.parent_struct.properties == NULL) - goto out; - for (n = 0; _scanner1_interface_info.parent_struct.properties[n] != NULL; n++) - { - GDBusPropertyInfo *info = _scanner1_interface_info.parent_struct.properties[n]; - if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) - { - GVariant *value; - value = _scanner1_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.lightmediascanner.Scanner1", info->name, NULL, skeleton); - if (value != NULL) - { - g_variant_take_ref (value); - g_variant_builder_add (&builder, "{sv}", info->name, value); - g_variant_unref (value); - } - } - } -out: - return g_variant_builder_end (&builder); -} - -static gboolean _scanner1_emit_changed (gpointer user_data); - -static void -scanner1_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (_skeleton); - gboolean emit_changed = FALSE; - - g_mutex_lock (&skeleton->priv->lock); - if (skeleton->priv->changed_properties_idle_source != NULL) - { - g_source_destroy (skeleton->priv->changed_properties_idle_source); - skeleton->priv->changed_properties_idle_source = NULL; - emit_changed = TRUE; - } - g_mutex_unlock (&skeleton->priv->lock); - - if (emit_changed) - _scanner1_emit_changed (skeleton); -} - -static void -_scanner1_on_signal_scan_progress ( - Scanner1 *object, - const gchar *arg_Category, - const gchar *arg_Path, - guint64 arg_UpToDate, - guint64 arg_Processed, - guint64 arg_Deleted, - guint64 arg_Skipped, - guint64 arg_Errors) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); - - GList *connections, *l; - GVariant *signal_variant; - connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); - - signal_variant = g_variant_ref_sink (g_variant_new ("(ssttttt)", - arg_Category, - arg_Path, - arg_UpToDate, - arg_Processed, - arg_Deleted, - arg_Skipped, - arg_Errors)); - for (l = connections; l != NULL; l = l->next) - { - GDBusConnection *connection = l->data; - g_dbus_connection_emit_signal (connection, - NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.lightmediascanner.Scanner1", "ScanProgress", - signal_variant, NULL); - } - g_variant_unref (signal_variant); - g_list_free_full (connections, g_object_unref); -} - -static void scanner1_skeleton_iface_init (Scanner1Iface *iface); -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (Scanner1Skeleton, scanner1_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_ADD_PRIVATE (Scanner1Skeleton) - G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_skeleton_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (Scanner1Skeleton, scanner1_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_skeleton_iface_init)); - -#endif -static void -scanner1_skeleton_finalize (GObject *object) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); - guint n; - for (n = 0; n < 5; n++) - g_value_unset (&skeleton->priv->properties[n]); - g_free (skeleton->priv->properties); - g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); - if (skeleton->priv->changed_properties_idle_source != NULL) - g_source_destroy (skeleton->priv->changed_properties_idle_source); - g_main_context_unref (skeleton->priv->context); - g_mutex_clear (&skeleton->priv->lock); - G_OBJECT_CLASS (scanner1_skeleton_parent_class)->finalize (object); -} - -static void -scanner1_skeleton_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); - g_assert (prop_id != 0 && prop_id - 1 < 5); - g_mutex_lock (&skeleton->priv->lock); - g_value_copy (&skeleton->priv->properties[prop_id - 1], value); - g_mutex_unlock (&skeleton->priv->lock); -} - -static gboolean -_scanner1_emit_changed (gpointer user_data) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data); - GList *l; - GVariantBuilder builder; - GVariantBuilder invalidated_builder; - guint num_changes; - - g_mutex_lock (&skeleton->priv->lock); - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); - g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); - for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) - { - ChangedProperty *cp = l->data; - GVariant *variant; - const GValue *cur_value; - - cur_value = &skeleton->priv->properties[cp->prop_id - 1]; - if (!_g_value_equal (cur_value, &cp->orig_value)) - { - variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); - g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); - g_variant_unref (variant); - num_changes++; - } - } - if (num_changes > 0) - { - GList *connections, *ll; - GVariant *signal_variant; - signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.lightmediascanner.Scanner1", - &builder, &invalidated_builder)); - connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); - for (ll = connections; ll != NULL; ll = ll->next) - { - GDBusConnection *connection = ll->data; - - g_dbus_connection_emit_signal (connection, - NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), - "org.freedesktop.DBus.Properties", - "PropertiesChanged", - signal_variant, - NULL); - } - g_variant_unref (signal_variant); - g_list_free_full (connections, g_object_unref); - } - else - { - g_variant_builder_clear (&builder); - g_variant_builder_clear (&invalidated_builder); - } - g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); - skeleton->priv->changed_properties = NULL; - skeleton->priv->changed_properties_idle_source = NULL; - g_mutex_unlock (&skeleton->priv->lock); - return FALSE; -} - -static void -_scanner1_schedule_emit_changed (Scanner1Skeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) -{ - ChangedProperty *cp; - GList *l; - cp = NULL; - for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) - { - ChangedProperty *i_cp = l->data; - if (i_cp->info == info) - { - cp = i_cp; - break; - } - } - if (cp == NULL) - { - cp = g_new0 (ChangedProperty, 1); - cp->prop_id = prop_id; - cp->info = info; - skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); - g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); - g_value_copy (orig_value, &cp->orig_value); - } -} - -static void -scanner1_skeleton_notify (GObject *object, - GParamSpec *pspec G_GNUC_UNUSED) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); - g_mutex_lock (&skeleton->priv->lock); - if (skeleton->priv->changed_properties != NULL && - skeleton->priv->changed_properties_idle_source == NULL) - { - skeleton->priv->changed_properties_idle_source = g_idle_source_new (); - g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); - g_source_set_callback (skeleton->priv->changed_properties_idle_source, _scanner1_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _scanner1_emit_changed"); - g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); - g_source_unref (skeleton->priv->changed_properties_idle_source); - } - g_mutex_unlock (&skeleton->priv->lock); -} - -static void -scanner1_skeleton_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); - g_assert (prop_id != 0 && prop_id - 1 < 5); - g_mutex_lock (&skeleton->priv->lock); - g_object_freeze_notify (object); - if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) - { - if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) - _scanner1_schedule_emit_changed (skeleton, _scanner1_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); - g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); - g_object_notify_by_pspec (object, pspec); - } - g_mutex_unlock (&skeleton->priv->lock); - g_object_thaw_notify (object); -} - -static void -scanner1_skeleton_init (Scanner1Skeleton *skeleton) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - skeleton->priv = scanner1_skeleton_get_instance_private (skeleton); -#else - skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_SCANNER1_SKELETON, Scanner1SkeletonPrivate); -#endif - - g_mutex_init (&skeleton->priv->lock); - skeleton->priv->context = g_main_context_ref_thread_default (); - skeleton->priv->properties = g_new0 (GValue, 5); - g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING); - g_value_init (&skeleton->priv->properties[1], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[2], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[3], G_TYPE_UINT64); - g_value_init (&skeleton->priv->properties[4], G_TYPE_VARIANT); -} - -static const gchar * -scanner1_skeleton_get_data_base_path (Scanner1 *object) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); - const gchar *value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_string (&(skeleton->priv->properties[0])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -scanner1_skeleton_get_is_scanning (Scanner1 *object) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[1])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -scanner1_skeleton_get_write_locked (Scanner1 *object) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[2])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static guint64 -scanner1_skeleton_get_update_id (Scanner1 *object) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); - guint64 value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_uint64 (&(skeleton->priv->properties[3])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static GVariant * -scanner1_skeleton_get_categories (Scanner1 *object) -{ - Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object); - GVariant *value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_variant (&(skeleton->priv->properties[4])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static void -scanner1_skeleton_class_init (Scanner1SkeletonClass *klass) -{ - GObjectClass *gobject_class; - GDBusInterfaceSkeletonClass *skeleton_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = scanner1_skeleton_finalize; - gobject_class->get_property = scanner1_skeleton_get_property; - gobject_class->set_property = scanner1_skeleton_set_property; - gobject_class->notify = scanner1_skeleton_notify; - - - scanner1_override_properties (gobject_class, 1); - - skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); - skeleton_class->get_info = scanner1_skeleton_dbus_interface_get_info; - skeleton_class->get_properties = scanner1_skeleton_dbus_interface_get_properties; - skeleton_class->flush = scanner1_skeleton_dbus_interface_flush; - skeleton_class->get_vtable = scanner1_skeleton_dbus_interface_get_vtable; - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (Scanner1SkeletonPrivate)); -#endif -} - -static void -scanner1_skeleton_iface_init (Scanner1Iface *iface) -{ - iface->scan_progress = _scanner1_on_signal_scan_progress; - iface->get_data_base_path = scanner1_skeleton_get_data_base_path; - iface->get_is_scanning = scanner1_skeleton_get_is_scanning; - iface->get_write_locked = scanner1_skeleton_get_write_locked; - iface->get_update_id = scanner1_skeleton_get_update_id; - iface->get_categories = scanner1_skeleton_get_categories; -} - -/** - * scanner1_skeleton_new: - * - * Creates a skeleton object for the D-Bus interface org.lightmediascanner.Scanner1. - * - * Returns: (transfer full) (type Scanner1Skeleton): The skeleton object. - */ -Scanner1 * -scanner1_skeleton_new (void) -{ - return SCANNER1 (g_object_new (TYPE_SCANNER1_SKELETON, NULL)); -} - diff --git a/gdbus/lightmediascanner_interface.h b/gdbus/lightmediascanner_interface.h deleted file mode 100644 index 4f42086..0000000 --- a/gdbus/lightmediascanner_interface.h +++ /dev/null @@ -1,896 +0,0 @@ -/* - * Generated by gdbus-codegen 2.52.0. DO NOT EDIT. - * - * The license of this code is the same as for the source it was derived from. - */ - -#ifndef __LIGHTMEDIASCANNER_INTERFACE_H__ -#define __LIGHTMEDIASCANNER_INTERFACE_H__ - -#include - -G_BEGIN_DECLS - - -/* ------------------------------------------------------------------------ */ -/* Declarations for org.freedesktop.DBus.Properties */ - -#define TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES (org_freedesktop_dbus_properties_get_type ()) -#define ORG_FREEDESKTOP_DBUS_PROPERTIES(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, OrgFreedesktopDBusProperties)) -#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES)) -#define ORG_FREEDESKTOP_DBUS_PROPERTIES_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, OrgFreedesktopDBusPropertiesIface)) - -struct _OrgFreedesktopDBusProperties; -typedef struct _OrgFreedesktopDBusProperties OrgFreedesktopDBusProperties; -typedef struct _OrgFreedesktopDBusPropertiesIface OrgFreedesktopDBusPropertiesIface; - -struct _OrgFreedesktopDBusPropertiesIface -{ - GTypeInterface parent_iface; - - - gboolean (*handle_get) ( - OrgFreedesktopDBusProperties *object, - GDBusMethodInvocation *invocation, - const gchar *arg_interface_name, - const gchar *arg_property_name); - - gboolean (*handle_get_all) ( - OrgFreedesktopDBusProperties *object, - GDBusMethodInvocation *invocation, - const gchar *arg_interface_name); - - gboolean (*handle_set) ( - OrgFreedesktopDBusProperties *object, - GDBusMethodInvocation *invocation, - const gchar *arg_interface_name, - const gchar *arg_property_name, - GVariant *arg_value); - - void (*properties_changed) ( - OrgFreedesktopDBusProperties *object, - const gchar *arg_interface_name, - GVariant *arg_changed_properties, - const gchar *const *arg_invalidated_properties); - -}; - -GType org_freedesktop_dbus_properties_get_type (void) G_GNUC_CONST; - -GDBusInterfaceInfo *org_freedesktop_dbus_properties_interface_info (void); -guint org_freedesktop_dbus_properties_override_properties (GObjectClass *klass, guint property_id_begin); - - -/* D-Bus method call completion functions: */ -void org_freedesktop_dbus_properties_complete_get ( - OrgFreedesktopDBusProperties *object, - GDBusMethodInvocation *invocation, - GVariant *value); - -void org_freedesktop_dbus_properties_complete_get_all ( - OrgFreedesktopDBusProperties *object, - GDBusMethodInvocation *invocation, - GVariant *properties); - -void org_freedesktop_dbus_properties_complete_set ( - OrgFreedesktopDBusProperties *object, - GDBusMethodInvocation *invocation); - - - -/* D-Bus signal emissions functions: */ -void org_freedesktop_dbus_properties_emit_properties_changed ( - OrgFreedesktopDBusProperties *object, - const gchar *arg_interface_name, - GVariant *arg_changed_properties, - const gchar *const *arg_invalidated_properties); - - - -/* D-Bus method calls: */ -void org_freedesktop_dbus_properties_call_get ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - const gchar *arg_property_name, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean org_freedesktop_dbus_properties_call_get_finish ( - OrgFreedesktopDBusProperties *proxy, - GVariant **out_value, - GAsyncResult *res, - GError **error); - -gboolean org_freedesktop_dbus_properties_call_get_sync ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - const gchar *arg_property_name, - GVariant **out_value, - GCancellable *cancellable, - GError **error); - -void org_freedesktop_dbus_properties_call_get_all ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean org_freedesktop_dbus_properties_call_get_all_finish ( - OrgFreedesktopDBusProperties *proxy, - GVariant **out_properties, - GAsyncResult *res, - GError **error); - -gboolean org_freedesktop_dbus_properties_call_get_all_sync ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - GVariant **out_properties, - GCancellable *cancellable, - GError **error); - -void org_freedesktop_dbus_properties_call_set ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - const gchar *arg_property_name, - GVariant *arg_value, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean org_freedesktop_dbus_properties_call_set_finish ( - OrgFreedesktopDBusProperties *proxy, - GAsyncResult *res, - GError **error); - -gboolean org_freedesktop_dbus_properties_call_set_sync ( - OrgFreedesktopDBusProperties *proxy, - const gchar *arg_interface_name, - const gchar *arg_property_name, - GVariant *arg_value, - GCancellable *cancellable, - GError **error); - - - -/* ---- */ - -#define TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY (org_freedesktop_dbus_properties_proxy_get_type ()) -#define ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxy)) -#define ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxyClass)) -#define ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxyClass)) -#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY)) -#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY)) - -typedef struct _OrgFreedesktopDBusPropertiesProxy OrgFreedesktopDBusPropertiesProxy; -typedef struct _OrgFreedesktopDBusPropertiesProxyClass OrgFreedesktopDBusPropertiesProxyClass; -typedef struct _OrgFreedesktopDBusPropertiesProxyPrivate OrgFreedesktopDBusPropertiesProxyPrivate; - -struct _OrgFreedesktopDBusPropertiesProxy -{ - /*< private >*/ - GDBusProxy parent_instance; - OrgFreedesktopDBusPropertiesProxyPrivate *priv; -}; - -struct _OrgFreedesktopDBusPropertiesProxyClass -{ - GDBusProxyClass parent_class; -}; - -GType org_freedesktop_dbus_properties_proxy_get_type (void) G_GNUC_CONST; - -#if GLIB_CHECK_VERSION(2, 44, 0) -G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPropertiesProxy, g_object_unref) -#endif - -void org_freedesktop_dbus_properties_proxy_new ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_finish ( - GAsyncResult *res, - GError **error); -OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_sync ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error); - -void org_freedesktop_dbus_properties_proxy_new_for_bus ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_for_bus_finish ( - GAsyncResult *res, - GError **error); -OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_for_bus_sync ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error); - - -/* ---- */ - -#define TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (org_freedesktop_dbus_properties_skeleton_get_type ()) -#define ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeleton)) -#define ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeletonClass)) -#define ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeletonClass)) -#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON)) -#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON)) - -typedef struct _OrgFreedesktopDBusPropertiesSkeleton OrgFreedesktopDBusPropertiesSkeleton; -typedef struct _OrgFreedesktopDBusPropertiesSkeletonClass OrgFreedesktopDBusPropertiesSkeletonClass; -typedef struct _OrgFreedesktopDBusPropertiesSkeletonPrivate OrgFreedesktopDBusPropertiesSkeletonPrivate; - -struct _OrgFreedesktopDBusPropertiesSkeleton -{ - /*< private >*/ - GDBusInterfaceSkeleton parent_instance; - OrgFreedesktopDBusPropertiesSkeletonPrivate *priv; -}; - -struct _OrgFreedesktopDBusPropertiesSkeletonClass -{ - GDBusInterfaceSkeletonClass parent_class; -}; - -GType org_freedesktop_dbus_properties_skeleton_get_type (void) G_GNUC_CONST; - -#if GLIB_CHECK_VERSION(2, 44, 0) -G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPropertiesSkeleton, g_object_unref) -#endif - -OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_skeleton_new (void); - - -/* ------------------------------------------------------------------------ */ -/* Declarations for org.freedesktop.DBus.Introspectable */ - -#define TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (org_freedesktop_dbus_introspectable_get_type ()) -#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, OrgFreedesktopDBusIntrospectable)) -#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE)) -#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, OrgFreedesktopDBusIntrospectableIface)) - -struct _OrgFreedesktopDBusIntrospectable; -typedef struct _OrgFreedesktopDBusIntrospectable OrgFreedesktopDBusIntrospectable; -typedef struct _OrgFreedesktopDBusIntrospectableIface OrgFreedesktopDBusIntrospectableIface; - -struct _OrgFreedesktopDBusIntrospectableIface -{ - GTypeInterface parent_iface; - - gboolean (*handle_introspect) ( - OrgFreedesktopDBusIntrospectable *object, - GDBusMethodInvocation *invocation); - -}; - -GType org_freedesktop_dbus_introspectable_get_type (void) G_GNUC_CONST; - -GDBusInterfaceInfo *org_freedesktop_dbus_introspectable_interface_info (void); -guint org_freedesktop_dbus_introspectable_override_properties (GObjectClass *klass, guint property_id_begin); - - -/* D-Bus method call completion functions: */ -void org_freedesktop_dbus_introspectable_complete_introspect ( - OrgFreedesktopDBusIntrospectable *object, - GDBusMethodInvocation *invocation, - const gchar *xml_data); - - - -/* D-Bus method calls: */ -void org_freedesktop_dbus_introspectable_call_introspect ( - OrgFreedesktopDBusIntrospectable *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean org_freedesktop_dbus_introspectable_call_introspect_finish ( - OrgFreedesktopDBusIntrospectable *proxy, - gchar **out_xml_data, - GAsyncResult *res, - GError **error); - -gboolean org_freedesktop_dbus_introspectable_call_introspect_sync ( - OrgFreedesktopDBusIntrospectable *proxy, - gchar **out_xml_data, - GCancellable *cancellable, - GError **error); - - - -/* ---- */ - -#define TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (org_freedesktop_dbus_introspectable_proxy_get_type ()) -#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxy)) -#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxyClass)) -#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxyClass)) -#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY)) -#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY)) - -typedef struct _OrgFreedesktopDBusIntrospectableProxy OrgFreedesktopDBusIntrospectableProxy; -typedef struct _OrgFreedesktopDBusIntrospectableProxyClass OrgFreedesktopDBusIntrospectableProxyClass; -typedef struct _OrgFreedesktopDBusIntrospectableProxyPrivate OrgFreedesktopDBusIntrospectableProxyPrivate; - -struct _OrgFreedesktopDBusIntrospectableProxy -{ - /*< private >*/ - GDBusProxy parent_instance; - OrgFreedesktopDBusIntrospectableProxyPrivate *priv; -}; - -struct _OrgFreedesktopDBusIntrospectableProxyClass -{ - GDBusProxyClass parent_class; -}; - -GType org_freedesktop_dbus_introspectable_proxy_get_type (void) G_GNUC_CONST; - -#if GLIB_CHECK_VERSION(2, 44, 0) -G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusIntrospectableProxy, g_object_unref) -#endif - -void org_freedesktop_dbus_introspectable_proxy_new ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_finish ( - GAsyncResult *res, - GError **error); -OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_sync ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error); - -void org_freedesktop_dbus_introspectable_proxy_new_for_bus ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish ( - GAsyncResult *res, - GError **error); -OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error); - - -/* ---- */ - -#define TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (org_freedesktop_dbus_introspectable_skeleton_get_type ()) -#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeleton)) -#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeletonClass)) -#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeletonClass)) -#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON)) -#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON)) - -typedef struct _OrgFreedesktopDBusIntrospectableSkeleton OrgFreedesktopDBusIntrospectableSkeleton; -typedef struct _OrgFreedesktopDBusIntrospectableSkeletonClass OrgFreedesktopDBusIntrospectableSkeletonClass; -typedef struct _OrgFreedesktopDBusIntrospectableSkeletonPrivate OrgFreedesktopDBusIntrospectableSkeletonPrivate; - -struct _OrgFreedesktopDBusIntrospectableSkeleton -{ - /*< private >*/ - GDBusInterfaceSkeleton parent_instance; - OrgFreedesktopDBusIntrospectableSkeletonPrivate *priv; -}; - -struct _OrgFreedesktopDBusIntrospectableSkeletonClass -{ - GDBusInterfaceSkeletonClass parent_class; -}; - -GType org_freedesktop_dbus_introspectable_skeleton_get_type (void) G_GNUC_CONST; - -#if GLIB_CHECK_VERSION(2, 44, 0) -G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusIntrospectableSkeleton, g_object_unref) -#endif - -OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_skeleton_new (void); - - -/* ------------------------------------------------------------------------ */ -/* Declarations for org.freedesktop.DBus.Peer */ - -#define TYPE_ORG_FREEDESKTOP_DBUS_PEER (org_freedesktop_dbus_peer_get_type ()) -#define ORG_FREEDESKTOP_DBUS_PEER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER, OrgFreedesktopDBusPeer)) -#define IS_ORG_FREEDESKTOP_DBUS_PEER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER)) -#define ORG_FREEDESKTOP_DBUS_PEER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER, OrgFreedesktopDBusPeerIface)) - -struct _OrgFreedesktopDBusPeer; -typedef struct _OrgFreedesktopDBusPeer OrgFreedesktopDBusPeer; -typedef struct _OrgFreedesktopDBusPeerIface OrgFreedesktopDBusPeerIface; - -struct _OrgFreedesktopDBusPeerIface -{ - GTypeInterface parent_iface; - - gboolean (*handle_get_machine_id) ( - OrgFreedesktopDBusPeer *object, - GDBusMethodInvocation *invocation); - - gboolean (*handle_ping) ( - OrgFreedesktopDBusPeer *object, - GDBusMethodInvocation *invocation); - -}; - -GType org_freedesktop_dbus_peer_get_type (void) G_GNUC_CONST; - -GDBusInterfaceInfo *org_freedesktop_dbus_peer_interface_info (void); -guint org_freedesktop_dbus_peer_override_properties (GObjectClass *klass, guint property_id_begin); - - -/* D-Bus method call completion functions: */ -void org_freedesktop_dbus_peer_complete_ping ( - OrgFreedesktopDBusPeer *object, - GDBusMethodInvocation *invocation); - -void org_freedesktop_dbus_peer_complete_get_machine_id ( - OrgFreedesktopDBusPeer *object, - GDBusMethodInvocation *invocation, - const gchar *machine_uuid); - - - -/* D-Bus method calls: */ -void org_freedesktop_dbus_peer_call_ping ( - OrgFreedesktopDBusPeer *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean org_freedesktop_dbus_peer_call_ping_finish ( - OrgFreedesktopDBusPeer *proxy, - GAsyncResult *res, - GError **error); - -gboolean org_freedesktop_dbus_peer_call_ping_sync ( - OrgFreedesktopDBusPeer *proxy, - GCancellable *cancellable, - GError **error); - -void org_freedesktop_dbus_peer_call_get_machine_id ( - OrgFreedesktopDBusPeer *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean org_freedesktop_dbus_peer_call_get_machine_id_finish ( - OrgFreedesktopDBusPeer *proxy, - gchar **out_machine_uuid, - GAsyncResult *res, - GError **error); - -gboolean org_freedesktop_dbus_peer_call_get_machine_id_sync ( - OrgFreedesktopDBusPeer *proxy, - gchar **out_machine_uuid, - GCancellable *cancellable, - GError **error); - - - -/* ---- */ - -#define TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY (org_freedesktop_dbus_peer_proxy_get_type ()) -#define ORG_FREEDESKTOP_DBUS_PEER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxy)) -#define ORG_FREEDESKTOP_DBUS_PEER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxyClass)) -#define ORG_FREEDESKTOP_DBUS_PEER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxyClass)) -#define IS_ORG_FREEDESKTOP_DBUS_PEER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY)) -#define IS_ORG_FREEDESKTOP_DBUS_PEER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY)) - -typedef struct _OrgFreedesktopDBusPeerProxy OrgFreedesktopDBusPeerProxy; -typedef struct _OrgFreedesktopDBusPeerProxyClass OrgFreedesktopDBusPeerProxyClass; -typedef struct _OrgFreedesktopDBusPeerProxyPrivate OrgFreedesktopDBusPeerProxyPrivate; - -struct _OrgFreedesktopDBusPeerProxy -{ - /*< private >*/ - GDBusProxy parent_instance; - OrgFreedesktopDBusPeerProxyPrivate *priv; -}; - -struct _OrgFreedesktopDBusPeerProxyClass -{ - GDBusProxyClass parent_class; -}; - -GType org_freedesktop_dbus_peer_proxy_get_type (void) G_GNUC_CONST; - -#if GLIB_CHECK_VERSION(2, 44, 0) -G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPeerProxy, g_object_unref) -#endif - -void org_freedesktop_dbus_peer_proxy_new ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_finish ( - GAsyncResult *res, - GError **error); -OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_sync ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error); - -void org_freedesktop_dbus_peer_proxy_new_for_bus ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_for_bus_finish ( - GAsyncResult *res, - GError **error); -OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_for_bus_sync ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error); - - -/* ---- */ - -#define TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON (org_freedesktop_dbus_peer_skeleton_get_type ()) -#define ORG_FREEDESKTOP_DBUS_PEER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeleton)) -#define ORG_FREEDESKTOP_DBUS_PEER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeletonClass)) -#define ORG_FREEDESKTOP_DBUS_PEER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeletonClass)) -#define IS_ORG_FREEDESKTOP_DBUS_PEER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON)) -#define IS_ORG_FREEDESKTOP_DBUS_PEER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON)) - -typedef struct _OrgFreedesktopDBusPeerSkeleton OrgFreedesktopDBusPeerSkeleton; -typedef struct _OrgFreedesktopDBusPeerSkeletonClass OrgFreedesktopDBusPeerSkeletonClass; -typedef struct _OrgFreedesktopDBusPeerSkeletonPrivate OrgFreedesktopDBusPeerSkeletonPrivate; - -struct _OrgFreedesktopDBusPeerSkeleton -{ - /*< private >*/ - GDBusInterfaceSkeleton parent_instance; - OrgFreedesktopDBusPeerSkeletonPrivate *priv; -}; - -struct _OrgFreedesktopDBusPeerSkeletonClass -{ - GDBusInterfaceSkeletonClass parent_class; -}; - -GType org_freedesktop_dbus_peer_skeleton_get_type (void) G_GNUC_CONST; - -#if GLIB_CHECK_VERSION(2, 44, 0) -G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPeerSkeleton, g_object_unref) -#endif - -OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_skeleton_new (void); - - -/* ------------------------------------------------------------------------ */ -/* Declarations for org.lightmediascanner.Scanner1 */ - -#define TYPE_SCANNER1 (scanner1_get_type ()) -#define SCANNER1(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_SCANNER1, Scanner1)) -#define IS_SCANNER1(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_SCANNER1)) -#define SCANNER1_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_SCANNER1, Scanner1Iface)) - -struct _Scanner1; -typedef struct _Scanner1 Scanner1; -typedef struct _Scanner1Iface Scanner1Iface; - -struct _Scanner1Iface -{ - GTypeInterface parent_iface; - - - - gboolean (*handle_release_write_lock) ( - Scanner1 *object, - GDBusMethodInvocation *invocation); - - gboolean (*handle_request_write_lock) ( - Scanner1 *object, - GDBusMethodInvocation *invocation); - - gboolean (*handle_scan) ( - Scanner1 *object, - GDBusMethodInvocation *invocation, - GVariant *arg_specification); - - gboolean (*handle_stop) ( - Scanner1 *object, - GDBusMethodInvocation *invocation); - - GVariant * (*get_categories) (Scanner1 *object); - - const gchar * (*get_data_base_path) (Scanner1 *object); - - gboolean (*get_is_scanning) (Scanner1 *object); - - guint64 (*get_update_id) (Scanner1 *object); - - gboolean (*get_write_locked) (Scanner1 *object); - - void (*scan_progress) ( - Scanner1 *object, - const gchar *arg_Category, - const gchar *arg_Path, - guint64 arg_UpToDate, - guint64 arg_Processed, - guint64 arg_Deleted, - guint64 arg_Skipped, - guint64 arg_Errors); - -}; - -GType scanner1_get_type (void) G_GNUC_CONST; - -GDBusInterfaceInfo *scanner1_interface_info (void); -guint scanner1_override_properties (GObjectClass *klass, guint property_id_begin); - - -/* D-Bus method call completion functions: */ -void scanner1_complete_scan ( - Scanner1 *object, - GDBusMethodInvocation *invocation); - -void scanner1_complete_stop ( - Scanner1 *object, - GDBusMethodInvocation *invocation); - -void scanner1_complete_request_write_lock ( - Scanner1 *object, - GDBusMethodInvocation *invocation); - -void scanner1_complete_release_write_lock ( - Scanner1 *object, - GDBusMethodInvocation *invocation); - - - -/* D-Bus signal emissions functions: */ -void scanner1_emit_scan_progress ( - Scanner1 *object, - const gchar *arg_Category, - const gchar *arg_Path, - guint64 arg_UpToDate, - guint64 arg_Processed, - guint64 arg_Deleted, - guint64 arg_Skipped, - guint64 arg_Errors); - - - -/* D-Bus method calls: */ -void scanner1_call_scan ( - Scanner1 *proxy, - GVariant *arg_specification, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean scanner1_call_scan_finish ( - Scanner1 *proxy, - GAsyncResult *res, - GError **error); - -gboolean scanner1_call_scan_sync ( - Scanner1 *proxy, - GVariant *arg_specification, - GCancellable *cancellable, - GError **error); - -void scanner1_call_stop ( - Scanner1 *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean scanner1_call_stop_finish ( - Scanner1 *proxy, - GAsyncResult *res, - GError **error); - -gboolean scanner1_call_stop_sync ( - Scanner1 *proxy, - GCancellable *cancellable, - GError **error); - -void scanner1_call_request_write_lock ( - Scanner1 *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean scanner1_call_request_write_lock_finish ( - Scanner1 *proxy, - GAsyncResult *res, - GError **error); - -gboolean scanner1_call_request_write_lock_sync ( - Scanner1 *proxy, - GCancellable *cancellable, - GError **error); - -void scanner1_call_release_write_lock ( - Scanner1 *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean scanner1_call_release_write_lock_finish ( - Scanner1 *proxy, - GAsyncResult *res, - GError **error); - -gboolean scanner1_call_release_write_lock_sync ( - Scanner1 *proxy, - GCancellable *cancellable, - GError **error); - - - -/* D-Bus property accessors: */ -const gchar *scanner1_get_data_base_path (Scanner1 *object); -gchar *scanner1_dup_data_base_path (Scanner1 *object); -void scanner1_set_data_base_path (Scanner1 *object, const gchar *value); - -gboolean scanner1_get_is_scanning (Scanner1 *object); -void scanner1_set_is_scanning (Scanner1 *object, gboolean value); - -gboolean scanner1_get_write_locked (Scanner1 *object); -void scanner1_set_write_locked (Scanner1 *object, gboolean value); - -guint64 scanner1_get_update_id (Scanner1 *object); -void scanner1_set_update_id (Scanner1 *object, guint64 value); - -GVariant *scanner1_get_categories (Scanner1 *object); -GVariant *scanner1_dup_categories (Scanner1 *object); -void scanner1_set_categories (Scanner1 *object, GVariant *value); - - -/* ---- */ - -#define TYPE_SCANNER1_PROXY (scanner1_proxy_get_type ()) -#define SCANNER1_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_SCANNER1_PROXY, Scanner1Proxy)) -#define SCANNER1_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_SCANNER1_PROXY, Scanner1ProxyClass)) -#define SCANNER1_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_SCANNER1_PROXY, Scanner1ProxyClass)) -#define IS_SCANNER1_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_SCANNER1_PROXY)) -#define IS_SCANNER1_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_SCANNER1_PROXY)) - -typedef struct _Scanner1Proxy Scanner1Proxy; -typedef struct _Scanner1ProxyClass Scanner1ProxyClass; -typedef struct _Scanner1ProxyPrivate Scanner1ProxyPrivate; - -struct _Scanner1Proxy -{ - /*< private >*/ - GDBusProxy parent_instance; - Scanner1ProxyPrivate *priv; -}; - -struct _Scanner1ProxyClass -{ - GDBusProxyClass parent_class; -}; - -GType scanner1_proxy_get_type (void) G_GNUC_CONST; - -#if GLIB_CHECK_VERSION(2, 44, 0) -G_DEFINE_AUTOPTR_CLEANUP_FUNC (Scanner1Proxy, g_object_unref) -#endif - -void scanner1_proxy_new ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -Scanner1 *scanner1_proxy_new_finish ( - GAsyncResult *res, - GError **error); -Scanner1 *scanner1_proxy_new_sync ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error); - -void scanner1_proxy_new_for_bus ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -Scanner1 *scanner1_proxy_new_for_bus_finish ( - GAsyncResult *res, - GError **error); -Scanner1 *scanner1_proxy_new_for_bus_sync ( - GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error); - - -/* ---- */ - -#define TYPE_SCANNER1_SKELETON (scanner1_skeleton_get_type ()) -#define SCANNER1_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_SCANNER1_SKELETON, Scanner1Skeleton)) -#define SCANNER1_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_SCANNER1_SKELETON, Scanner1SkeletonClass)) -#define SCANNER1_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_SCANNER1_SKELETON, Scanner1SkeletonClass)) -#define IS_SCANNER1_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_SCANNER1_SKELETON)) -#define IS_SCANNER1_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_SCANNER1_SKELETON)) - -typedef struct _Scanner1Skeleton Scanner1Skeleton; -typedef struct _Scanner1SkeletonClass Scanner1SkeletonClass; -typedef struct _Scanner1SkeletonPrivate Scanner1SkeletonPrivate; - -struct _Scanner1Skeleton -{ - /*< private >*/ - GDBusInterfaceSkeleton parent_instance; - Scanner1SkeletonPrivate *priv; -}; - -struct _Scanner1SkeletonClass -{ - GDBusInterfaceSkeletonClass parent_class; -}; - -GType scanner1_skeleton_get_type (void) G_GNUC_CONST; - -#if GLIB_CHECK_VERSION(2, 44, 0) -G_DEFINE_AUTOPTR_CLEANUP_FUNC (Scanner1Skeleton, g_object_unref) -#endif - -Scanner1 *scanner1_skeleton_new (void); - - -G_END_DECLS - -#endif /* __LIGHTMEDIASCANNER_INTERFACE_H__ */ diff --git a/mediaplayer-api.c b/mediaplayer-api.c deleted file mode 100644 index e81c98a..0000000 --- a/mediaplayer-api.c +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright 2017 Konsulko Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define _GNU_SOURCE -#include -#include -#include -#include -#include - -#define AFB_BINDING_VERSION 2 -#include - -#include "mediaplayer-manager.h" - -static struct afb_event media_added_event; -static struct afb_event media_removed_event; - -/* - * @brief Subscribe for an event - * - * @param struct afb_req : an afb request structure - * - */ -static void subscribe(struct afb_req request) -{ - const char *value = afb_req_value(request, "value"); - if(value) { - if(!strcasecmp(value, "media_added")) { - afb_req_subscribe(request, media_added_event); - } else if(!strcasecmp(value, "media_removed")) { - afb_req_subscribe(request, media_removed_event); - } else { - afb_req_fail(request, "failed", "Invalid event"); - return; - } - } - afb_req_success(request, NULL, NULL); -} - -/* - * @brief Unsubscribe for an event - * - * @param struct afb_req : an afb request structure - * - */ -static void unsubscribe(struct afb_req request) -{ - const char *value = afb_req_value(request, "value"); - if(value) { - if(!strcasecmp(value, "media_added")) { - afb_req_unsubscribe(request, media_added_event); - } else if(!strcasecmp(value, "media_removed")) { - afb_req_unsubscribe(request, media_removed_event); - } else { - afb_req_fail(request, "failed", "Invalid event"); - return; - } - } - afb_req_success(request, NULL, NULL); -} - -static json_object *new_json_object_from_device(GList *list) -{ - json_object *jarray = json_object_new_array(); - json_object *jresp = json_object_new_object(); - json_object *jstring = NULL; - GList *l; - - for (l = list; l; l = l->next) - { - jstring = json_object_new_string(l->data); - json_object_array_add(jarray, jstring); - } - - if (jstring == NULL) - return NULL; - - json_object_object_add(jresp, "Media", jarray); - - return jresp; -} - -static void media_results_get (struct afb_req request) -{ - GList *list; - json_object *jresp = NULL; - - ListLock(); - list = media_lightmediascanner_scan(); - list = media_local_scan(list); - if (list == NULL) { - afb_req_fail(request, "failed", "media scan error"); - ListUnlock(); - return; - } - - jresp = new_json_object_from_device(list); - g_list_free(list); - ListUnlock(); - - if (jresp == NULL) { - afb_req_fail(request, "failed", "media parsing error"); - return; - } - - afb_req_success(request, jresp, "Media Results Displayed"); -} - -static void media_broadcast_device_added (GList *list) -{ - json_object *jresp = new_json_object_from_device(list); - - if (jresp != NULL) { - afb_event_push(media_added_event, jresp); - } -} - -static void media_broadcast_device_removed (const char *obj_path) -{ - json_object *jresp = json_object_new_object(); - json_object *jstring = json_object_new_string(obj_path); - - json_object_object_add(jresp, "Path", jstring); - - afb_event_push(media_removed_event, jresp); -} - -static const struct afb_verb_v2 binding_verbs[] = { - { "media_result", media_results_get, NULL, "Media scan result", AFB_SESSION_CHECK }, - { "subscribe", subscribe, NULL, "Subscribe for an event", AFB_SESSION_CHECK }, - { "unsubscribe", unsubscribe, NULL, "Unsubscribe for an event", AFB_SESSION_CHECK }, - { NULL } -}; - -static int preinit() -{ - Binding_RegisterCallback_t API_Callback; - API_Callback.binding_device_added = media_broadcast_device_added; - API_Callback.binding_device_removed = media_broadcast_device_removed; - BindingAPIRegister(&API_Callback); - - return MediaPlayerManagerInit(); -} - -static int init() -{ - media_added_event = afb_daemon_make_event("media_added"); - media_removed_event = afb_daemon_make_event("media_removed"); - - return 0; -} - -const struct afb_binding_v2 afbBindingV2 = { - .api = "media-manager", - .specification = "mediaplayer API", - .preinit = preinit, - .init = init, - .verbs = binding_verbs, -}; diff --git a/mediaplayer-manager.c b/mediaplayer-manager.c deleted file mode 100644 index 38e5cab..0000000 --- a/mediaplayer-manager.c +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Copyright 2017 Konsulko Group - * - * Based on bluetooth-manager.c - * Copyright 2016 ALPS ELECTRIC CO., LTD. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "mediaplayer-manager.h" - -static Binding_RegisterCallback_t g_RegisterCallback = { 0 }; -static stMediaPlayerManage MediaPlayerManage = { 0 }; - -/* ------ LOCAL FUNCTIONS --------- */ -void ListLock() { - g_mutex_lock(&(MediaPlayerManage.m)); -} - -void ListUnlock() { - g_mutex_unlock(&(MediaPlayerManage.m)); -} - -void DebugTraceSendMsg(int level, gchar* message) -{ -#ifdef LOCAL_PRINT_DEBUG - switch (level) - { - case DT_LEVEL_ERROR: - g_print("[E]"); - break; - - case DT_LEVEL_WARNING: - g_print("[W]"); - break; - - case DT_LEVEL_NOTICE: - g_print("[N]"); - break; - - case DT_LEVEL_INFO: - g_print("[I]"); - break; - - case DT_LEVEL_DEBUG: - g_print("[D]"); - break; - - default: - g_print("[-]"); - break; - } - - g_print("%s",message); -#endif - - if (message) { - g_free(message); - } - -} - -GList* media_local_scan(GList *list) -{ - gchar *path = g_strconcat(g_get_home_dir(), "/", "Music", NULL); - gchar *tmp = NULL; - GDir *dir; - - dir = g_dir_open(path, 0, NULL); - if (dir == NULL) - { - LOGE("Cannot open media path %s\n", path); - return list; - } - - while ((tmp = (gchar *) g_dir_read_name(dir)) != NULL) - { - list = g_list_append(list, g_strdup_printf("file://%s/%s", path, tmp)); - } - - g_free(path); - g_dir_close(dir); - - return list; -} - -GList* media_lightmediascanner_scan(void) -{ - sqlite3 *conn; - sqlite3_stmt *res; - GList *list = NULL; - const char *tail; - const gchar *db_path; - int ret = 0; - - db_path = scanner1_get_data_base_path(MediaPlayerManage.lms_proxy); - - ret = sqlite3_open(db_path, &conn); - if (ret) { - LOGE("Cannot open SQLITE database: '%s'\n", db_path); - return NULL; - } - - ret = sqlite3_prepare_v2(conn, SQL_QUERY, strlen(SQL_QUERY) + 1, &res, &tail); - if (ret) { - LOGE("Cannot execute query '%s'\n", SQL_QUERY); - return NULL; - } - - while (sqlite3_step(res) == SQLITE_ROW) { - struct stat buf; - const char *path = (const char *) sqlite3_column_text(res, 0); - - ret = stat(path, &buf); - if (ret) - continue; - - list = g_list_append(list, g_strdup_printf("file://%s", path)); - } - - return list; -} - - -static void -on_interface_proxy_properties_changed (GDBusProxy *proxy, - GVariant *changed_properties, - const gchar* const *invalidated_properties) -{ - GVariantIter iter; - const gchar *key; - GVariant *subValue; - const gchar *pInterface; - GList *list; - - pInterface = g_dbus_proxy_get_interface_name (proxy); - - if (0 != g_strcmp0(pInterface, LIGHTMEDIASCANNER_INTERFACE)) - return; - - g_variant_iter_init (&iter, changed_properties); - while (g_variant_iter_next (&iter, "{&sv}", &key, &subValue)) - { - gboolean val; - if (0 == g_strcmp0(key,"IsScanning")) { - g_variant_get(subValue, "b", &val); - if (val == TRUE) - return; - } else if (0 == g_strcmp0(key, "WriteLocked")) { - g_variant_get(subValue, "b", &val); - if (val == TRUE) - return; - } - } - - ListLock(); - - list = media_lightmediascanner_scan(); - - if (list != NULL && g_RegisterCallback.binding_device_added) - g_RegisterCallback.binding_device_added(list); - - g_list_free_full(list, g_free); - - ListUnlock(); -} - -static int MediaPlayerDBusInit(void) -{ - GError *error = NULL; - - MediaPlayerManage.lms_proxy = scanner1_proxy_new_for_bus_sync( - G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, LIGHTMEDIASCANNER_SERVICE, - LIGHTMEDIASCANNER_PATH, NULL, &error); - - if (MediaPlayerManage.lms_proxy == NULL) { - LOGE("Create LightMediaScanner Proxy failed\n"); - return -1; - } - - g_signal_connect (MediaPlayerManage.lms_proxy, - "g-properties-changed", - G_CALLBACK (on_interface_proxy_properties_changed), - NULL); - - return 0; -} - -static void *media_event_loop_thread(void *unused) -{ - GMainLoop *loop = g_main_loop_new(NULL, FALSE); - int ret; - - ret = MediaPlayerDBusInit(); - if (ret == 0) { - LOGD("g_main_loop_run\n"); - g_main_loop_run(loop); - } - - g_main_loop_unref(loop); - - return NULL; -} - -void -unmount_cb (GFileMonitor *mon, - GFile *file, - GFile *other_file, - GFileMonitorEvent event, - gpointer udata) -{ - gchar *path = g_file_get_path(file); - gchar *uri = g_strconcat("file://", path, NULL); - g_free(path); - - ListLock(); - - if (g_RegisterCallback.binding_device_removed && - event == G_FILE_MONITOR_EVENT_DELETED) { - g_RegisterCallback.binding_device_removed(uri); - } - - ListUnlock(); - g_free(uri); -} - -/* - * Create MediaPlayer Manager Thread - * Note: mediaplayer-api should do MediaPlayerManagerInit() before any other - * API calls - * Returns: 0 - success or error conditions - */ -int MediaPlayerManagerInit() { - pthread_t thread_id; - GFile *file; - GFileMonitor *mon; - - g_mutex_init(&(MediaPlayerManage.m)); - - file = g_file_new_for_path("/media"); - g_assert(file != NULL); - - mon = g_file_monitor (file, G_FILE_MONITOR_NONE, NULL, NULL); - g_assert(mon != NULL); - g_signal_connect (mon, "changed", G_CALLBACK(unmount_cb), NULL); - - pthread_create(&thread_id, NULL, media_event_loop_thread, NULL); - - return 0; -} - -/* - * Register MediaPlayer Manager Callback functions - */ -void BindingAPIRegister(const Binding_RegisterCallback_t* pstRegisterCallback) -{ - if (NULL != pstRegisterCallback) - { - if (NULL != pstRegisterCallback->binding_device_added) - { - g_RegisterCallback.binding_device_added = - pstRegisterCallback->binding_device_added; - } - - if (NULL != pstRegisterCallback->binding_device_removed) - { - g_RegisterCallback.binding_device_removed = - pstRegisterCallback->binding_device_removed; - } - } -} diff --git a/mediaplayer-manager.h b/mediaplayer-manager.h deleted file mode 100644 index 5864867..0000000 --- a/mediaplayer-manager.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2017 Konsulko Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef MEDIAPLAYER_MANAGER_H -#define MEDIAPLAYER_MANAGER_H - -#include -#include -#include - -#include "lightmediascanner_interface.h" - - /* Debug Trace Level */ -#define DT_LEVEL_ERROR (1 << 1) -#define DT_LEVEL_WARNING (1 << 2) -#define DT_LEVEL_NOTICE (1 << 3) -#define DT_LEVEL_INFO (1 << 4) -#define DT_LEVEL_DEBUG (1 << 5) -//#define _DEBUG - -#define LOGE(fmt, args...) \ - DebugTraceSendMsg(DT_LEVEL_ERROR, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args)) -#define LOGW(fmt, args...) \ - DebugTraceSendMsg(DT_LEVEL_WARNING, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args)) -#define LOGN(fmt, args...) \ - DebugTraceSendMsg(DT_LEVEL_NOTICE, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args)) -#define LOGI(fmt, args...) \ - DebugTraceSendMsg(DT_LEVEL_INFO, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args)) -#define LOGD(fmt, args...) \ - DebugTraceSendMsg(DT_LEVEL_DEBUG, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args)) - -#ifdef _DEBUG - #define _DEBUG_PRINT_DBUS - #define LOCAL_PRINT_DEBUG -#endif - -#ifdef LOCAL_PRINT_DEBUG -#define D_PRINTF(fmt, args...) \ - g_print("[DEBUG][%d:%s]"fmt, __LINE__, __FUNCTION__, ## args) -#define D_PRINTF_RAW(fmt, args...) \ - g_print(""fmt, ## args) -#else -#define D_PRINTF(fmt, args...) -#define D_PRINTF_RAW(fmt, args...) -#endif /* ifdef _DEBUG */ - -void DebugTraceSendMsg(int level, gchar* message); - -//service -#define AGENT_SERVICE "org.agent" - -//remote service -#define LIGHTMEDIASCANNER_SERVICE "org.lightmediascanner" - -//object path -#define LIGHTMEDIASCANNER_PATH "/org/lightmediascanner/Scanner1" - -//interface -#define LIGHTMEDIASCANNER_INTERFACE "org.lightmediascanner.Scanner1" -#define UDISKS_INTERFACE "org.freedesktop.UDisks" -#define FREEDESKTOP_PROPERTIES "org.freedesktop.DBus.Properties" - -//sqlite -#define SQL_QUERY "SELECT files.path FROM files LEFT JOIN audios " \ - "WHERE audios.id = files.id ORDER BY " \ - "audios.artist_id, audios.album_id, audios.trackno" - -typedef struct { - GList *list; - GMutex m; - Scanner1 *lms_proxy; -} stMediaPlayerManage; - -typedef struct tagBinding_RegisterCallback -{ - void (*binding_device_added)(GList *list); - void (*binding_device_removed)(const char *obj_path); -} Binding_RegisterCallback_t; - -/* ------ PUBLIC PLUGIN FUNCTIONS --------- */ -void BindingAPIRegister(const Binding_RegisterCallback_t* pstRegisterCallback); -int MediaPlayerManagerInit(void); - -void ListLock(); -void ListUnlock(); - -GList* media_lightmediascanner_scan(void); -GList* media_local_scan(GList *list); - -#endif -- cgit 1.2.3-korg