1 /*
2  * Generated by gdbus-codegen 2.40.2. DO NOT EDIT.
3  *
4  * The license of this code is the same as for the source it was derived from.
5  */
6 
7 #ifdef HAVE_CONFIG_H
8 #  include "config.h"
9 #endif
10 
11 #include "openbmc_intf.h"
12 
13 #include <string.h>
14 #ifdef G_OS_UNIX
15 #  include <gio/gunixfdlist.h>
16 #endif
17 
18 typedef struct
19 {
20   GDBusArgInfo parent_struct;
21   gboolean use_gvariant;
22 } _ExtendedGDBusArgInfo;
23 
24 typedef struct
25 {
26   GDBusMethodInfo parent_struct;
27   const gchar *signal_name;
28   gboolean pass_fdlist;
29 } _ExtendedGDBusMethodInfo;
30 
31 typedef struct
32 {
33   GDBusSignalInfo parent_struct;
34   const gchar *signal_name;
35 } _ExtendedGDBusSignalInfo;
36 
37 typedef struct
38 {
39   GDBusPropertyInfo parent_struct;
40   const gchar *hyphen_name;
41   gboolean use_gvariant;
42 } _ExtendedGDBusPropertyInfo;
43 
44 typedef struct
45 {
46   GDBusInterfaceInfo parent_struct;
47   const gchar *hyphen_name;
48 } _ExtendedGDBusInterfaceInfo;
49 
50 typedef struct
51 {
52   const _ExtendedGDBusPropertyInfo *info;
53   guint prop_id;
54   GValue orig_value; /* the value before the change */
55 } ChangedProperty;
56 
57 static void
58 _changed_property_free (ChangedProperty *data)
59 {
60   g_value_unset (&data->orig_value);
61   g_free (data);
62 }
63 
64 static gboolean
65 _g_strv_equal0 (gchar **a, gchar **b)
66 {
67   gboolean ret = FALSE;
68   guint n;
69   if (a == NULL && b == NULL)
70     {
71       ret = TRUE;
72       goto out;
73     }
74   if (a == NULL || b == NULL)
75     goto out;
76   if (g_strv_length (a) != g_strv_length (b))
77     goto out;
78   for (n = 0; a[n] != NULL; n++)
79     if (g_strcmp0 (a[n], b[n]) != 0)
80       goto out;
81   ret = TRUE;
82 out:
83   return ret;
84 }
85 
86 static gboolean
87 _g_variant_equal0 (GVariant *a, GVariant *b)
88 {
89   gboolean ret = FALSE;
90   if (a == NULL && b == NULL)
91     {
92       ret = TRUE;
93       goto out;
94     }
95   if (a == NULL || b == NULL)
96     goto out;
97   ret = g_variant_equal (a, b);
98 out:
99   return ret;
100 }
101 
102 G_GNUC_UNUSED static gboolean
103 _g_value_equal (const GValue *a, const GValue *b)
104 {
105   gboolean ret = FALSE;
106   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
107   switch (G_VALUE_TYPE (a))
108     {
109       case G_TYPE_BOOLEAN:
110         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
111         break;
112       case G_TYPE_UCHAR:
113         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
114         break;
115       case G_TYPE_INT:
116         ret = (g_value_get_int (a) == g_value_get_int (b));
117         break;
118       case G_TYPE_UINT:
119         ret = (g_value_get_uint (a) == g_value_get_uint (b));
120         break;
121       case G_TYPE_INT64:
122         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
123         break;
124       case G_TYPE_UINT64:
125         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
126         break;
127       case G_TYPE_DOUBLE:
128         {
129           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
130           gdouble da = g_value_get_double (a);
131           gdouble db = g_value_get_double (b);
132           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
133         }
134         break;
135       case G_TYPE_STRING:
136         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
137         break;
138       case G_TYPE_VARIANT:
139         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
140         break;
141       default:
142         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
143           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
144         else
145           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
146         break;
147     }
148   return ret;
149 }
150 
151 /* ------------------------------------------------------------------------
152  * Code for interface org.openbmc.Hwmon
153  * ------------------------------------------------------------------------
154  */
155 
156 /**
157  * SECTION:Hwmon
158  * @title: Hwmon
159  * @short_description: Generated C code for the org.openbmc.Hwmon D-Bus interface
160  *
161  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-Hwmon.top_of_page">org.openbmc.Hwmon</link> D-Bus interface in C.
162  */
163 
164 /* ---- Introspection data for org.openbmc.Hwmon ---- */
165 
166 static const _ExtendedGDBusPropertyInfo _hwmon_property_info_poll_interval =
167 {
168   {
169     -1,
170     (gchar *) "poll_interval",
171     (gchar *) "i",
172     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
173     NULL
174   },
175   "poll-interval",
176   FALSE
177 };
178 
179 static const _ExtendedGDBusPropertyInfo _hwmon_property_info_sysfs_path =
180 {
181   {
182     -1,
183     (gchar *) "sysfs_path",
184     (gchar *) "s",
185     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
186     NULL
187   },
188   "sysfs-path",
189   FALSE
190 };
191 
192 static const _ExtendedGDBusPropertyInfo _hwmon_property_info_scale =
193 {
194   {
195     -1,
196     (gchar *) "scale",
197     (gchar *) "i",
198     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
199     NULL
200   },
201   "scale",
202   FALSE
203 };
204 
205 static const _ExtendedGDBusPropertyInfo * const _hwmon_property_info_pointers[] =
206 {
207   &_hwmon_property_info_poll_interval,
208   &_hwmon_property_info_sysfs_path,
209   &_hwmon_property_info_scale,
210   NULL
211 };
212 
213 static const _ExtendedGDBusInterfaceInfo _hwmon_interface_info =
214 {
215   {
216     -1,
217     (gchar *) "org.openbmc.Hwmon",
218     NULL,
219     NULL,
220     (GDBusPropertyInfo **) &_hwmon_property_info_pointers,
221     NULL
222   },
223   "hwmon",
224 };
225 
226 
227 /**
228  * hwmon_interface_info:
229  *
230  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-Hwmon.top_of_page">org.openbmc.Hwmon</link> D-Bus interface.
231  *
232  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
233  */
234 GDBusInterfaceInfo *
235 hwmon_interface_info (void)
236 {
237   return (GDBusInterfaceInfo *) &_hwmon_interface_info.parent_struct;
238 }
239 
240 /**
241  * hwmon_override_properties:
242  * @klass: The class structure for a #GObject<!-- -->-derived class.
243  * @property_id_begin: The property id to assign to the first overridden property.
244  *
245  * Overrides all #GObject properties in the #Hwmon interface for a concrete class.
246  * The properties are overridden in the order they are defined.
247  *
248  * Returns: The last property id.
249  */
250 guint
251 hwmon_override_properties (GObjectClass *klass, guint property_id_begin)
252 {
253   g_object_class_override_property (klass, property_id_begin++, "poll-interval");
254   g_object_class_override_property (klass, property_id_begin++, "sysfs-path");
255   g_object_class_override_property (klass, property_id_begin++, "scale");
256   return property_id_begin - 1;
257 }
258 
259 
260 
261 /**
262  * Hwmon:
263  *
264  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Hwmon.top_of_page">org.openbmc.Hwmon</link>.
265  */
266 
267 /**
268  * HwmonIface:
269  * @parent_iface: The parent interface.
270  * @get_poll_interval: Getter for the #Hwmon:poll-interval property.
271  * @get_scale: Getter for the #Hwmon:scale property.
272  * @get_sysfs_path: Getter for the #Hwmon:sysfs-path property.
273  *
274  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Hwmon.top_of_page">org.openbmc.Hwmon</link>.
275  */
276 
277 typedef HwmonIface HwmonInterface;
278 G_DEFINE_INTERFACE (Hwmon, hwmon, G_TYPE_OBJECT);
279 
280 static void
281 hwmon_default_init (HwmonIface *iface)
282 {
283   /* GObject properties for D-Bus properties: */
284   /**
285    * Hwmon:poll-interval:
286    *
287    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Hwmon.poll_interval">"poll_interval"</link>.
288    *
289    * 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.
290    */
291   g_object_interface_install_property (iface,
292     g_param_spec_int ("poll-interval", "poll_interval", "poll_interval", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
293   /**
294    * Hwmon:sysfs-path:
295    *
296    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Hwmon.sysfs_path">"sysfs_path"</link>.
297    *
298    * 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.
299    */
300   g_object_interface_install_property (iface,
301     g_param_spec_string ("sysfs-path", "sysfs_path", "sysfs_path", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
302   /**
303    * Hwmon:scale:
304    *
305    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Hwmon.scale">"scale"</link>.
306    *
307    * 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.
308    */
309   g_object_interface_install_property (iface,
310     g_param_spec_int ("scale", "scale", "scale", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
311 }
312 
313 /**
314  * hwmon_get_poll_interval: (skip)
315  * @object: A #Hwmon.
316  *
317  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Hwmon.poll_interval">"poll_interval"</link> D-Bus property.
318  *
319  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
320  *
321  * Returns: The property value.
322  */
323 gint
324 hwmon_get_poll_interval (Hwmon *object)
325 {
326   return HWMON_GET_IFACE (object)->get_poll_interval (object);
327 }
328 
329 /**
330  * hwmon_set_poll_interval: (skip)
331  * @object: A #Hwmon.
332  * @value: The value to set.
333  *
334  * Sets the <link linkend="gdbus-property-org-openbmc-Hwmon.poll_interval">"poll_interval"</link> D-Bus property to @value.
335  *
336  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
337  */
338 void
339 hwmon_set_poll_interval (Hwmon *object, gint value)
340 {
341   g_object_set (G_OBJECT (object), "poll-interval", value, NULL);
342 }
343 
344 /**
345  * hwmon_get_sysfs_path: (skip)
346  * @object: A #Hwmon.
347  *
348  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Hwmon.sysfs_path">"sysfs_path"</link> D-Bus property.
349  *
350  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
351  *
352  * <warning>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 hwmon_dup_sysfs_path() if on another thread.</warning>
353  *
354  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
355  */
356 const gchar *
357 hwmon_get_sysfs_path (Hwmon *object)
358 {
359   return HWMON_GET_IFACE (object)->get_sysfs_path (object);
360 }
361 
362 /**
363  * hwmon_dup_sysfs_path: (skip)
364  * @object: A #Hwmon.
365  *
366  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-Hwmon.sysfs_path">"sysfs_path"</link> D-Bus property.
367  *
368  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
369  *
370  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
371  */
372 gchar *
373 hwmon_dup_sysfs_path (Hwmon *object)
374 {
375   gchar *value;
376   g_object_get (G_OBJECT (object), "sysfs-path", &value, NULL);
377   return value;
378 }
379 
380 /**
381  * hwmon_set_sysfs_path: (skip)
382  * @object: A #Hwmon.
383  * @value: The value to set.
384  *
385  * Sets the <link linkend="gdbus-property-org-openbmc-Hwmon.sysfs_path">"sysfs_path"</link> D-Bus property to @value.
386  *
387  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
388  */
389 void
390 hwmon_set_sysfs_path (Hwmon *object, const gchar *value)
391 {
392   g_object_set (G_OBJECT (object), "sysfs-path", value, NULL);
393 }
394 
395 /**
396  * hwmon_get_scale: (skip)
397  * @object: A #Hwmon.
398  *
399  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Hwmon.scale">"scale"</link> D-Bus property.
400  *
401  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
402  *
403  * Returns: The property value.
404  */
405 gint
406 hwmon_get_scale (Hwmon *object)
407 {
408   return HWMON_GET_IFACE (object)->get_scale (object);
409 }
410 
411 /**
412  * hwmon_set_scale: (skip)
413  * @object: A #Hwmon.
414  * @value: The value to set.
415  *
416  * Sets the <link linkend="gdbus-property-org-openbmc-Hwmon.scale">"scale"</link> D-Bus property to @value.
417  *
418  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
419  */
420 void
421 hwmon_set_scale (Hwmon *object, gint value)
422 {
423   g_object_set (G_OBJECT (object), "scale", value, NULL);
424 }
425 
426 /* ------------------------------------------------------------------------ */
427 
428 /**
429  * HwmonProxy:
430  *
431  * The #HwmonProxy structure contains only private data and should only be accessed using the provided API.
432  */
433 
434 /**
435  * HwmonProxyClass:
436  * @parent_class: The parent class.
437  *
438  * Class structure for #HwmonProxy.
439  */
440 
441 struct _HwmonProxyPrivate
442 {
443   GData *qdata;
444 };
445 
446 static void hwmon_proxy_iface_init (HwmonIface *iface);
447 
448 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
449 G_DEFINE_TYPE_WITH_CODE (HwmonProxy, hwmon_proxy, G_TYPE_DBUS_PROXY,
450                          G_ADD_PRIVATE (HwmonProxy)
451                          G_IMPLEMENT_INTERFACE (TYPE_HWMON, hwmon_proxy_iface_init));
452 
453 #else
454 G_DEFINE_TYPE_WITH_CODE (HwmonProxy, hwmon_proxy, G_TYPE_DBUS_PROXY,
455                          G_IMPLEMENT_INTERFACE (TYPE_HWMON, hwmon_proxy_iface_init));
456 
457 #endif
458 static void
459 hwmon_proxy_finalize (GObject *object)
460 {
461   HwmonProxy *proxy = HWMON_PROXY (object);
462   g_datalist_clear (&proxy->priv->qdata);
463   G_OBJECT_CLASS (hwmon_proxy_parent_class)->finalize (object);
464 }
465 
466 static void
467 hwmon_proxy_get_property (GObject      *object,
468   guint         prop_id,
469   GValue       *value,
470   GParamSpec   *pspec G_GNUC_UNUSED)
471 {
472   const _ExtendedGDBusPropertyInfo *info;
473   GVariant *variant;
474   g_assert (prop_id != 0 && prop_id - 1 < 3);
475   info = _hwmon_property_info_pointers[prop_id - 1];
476   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
477   if (info->use_gvariant)
478     {
479       g_value_set_variant (value, variant);
480     }
481   else
482     {
483       if (variant != NULL)
484         g_dbus_gvariant_to_gvalue (variant, value);
485     }
486   if (variant != NULL)
487     g_variant_unref (variant);
488 }
489 
490 static void
491 hwmon_proxy_set_property_cb (GDBusProxy *proxy,
492   GAsyncResult *res,
493   gpointer      user_data)
494 {
495   const _ExtendedGDBusPropertyInfo *info = user_data;
496   GError *error;
497   GVariant *_ret;
498   error = NULL;
499   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
500   if (!_ret)
501     {
502       g_warning ("Error setting property '%s' on interface org.openbmc.Hwmon: %s (%s, %d)",
503                  info->parent_struct.name,
504                  error->message, g_quark_to_string (error->domain), error->code);
505       g_error_free (error);
506     }
507   else
508     {
509       g_variant_unref (_ret);
510     }
511 }
512 
513 static void
514 hwmon_proxy_set_property (GObject      *object,
515   guint         prop_id,
516   const GValue *value,
517   GParamSpec   *pspec G_GNUC_UNUSED)
518 {
519   const _ExtendedGDBusPropertyInfo *info;
520   GVariant *variant;
521   g_assert (prop_id != 0 && prop_id - 1 < 3);
522   info = _hwmon_property_info_pointers[prop_id - 1];
523   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
524   g_dbus_proxy_call (G_DBUS_PROXY (object),
525     "org.freedesktop.DBus.Properties.Set",
526     g_variant_new ("(ssv)", "org.openbmc.Hwmon", info->parent_struct.name, variant),
527     G_DBUS_CALL_FLAGS_NONE,
528     -1,
529     NULL, (GAsyncReadyCallback) hwmon_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
530   g_variant_unref (variant);
531 }
532 
533 static void
534 hwmon_proxy_g_signal (GDBusProxy *proxy,
535   const gchar *sender_name G_GNUC_UNUSED,
536   const gchar *signal_name,
537   GVariant *parameters)
538 {
539   _ExtendedGDBusSignalInfo *info;
540   GVariantIter iter;
541   GVariant *child;
542   GValue *paramv;
543   guint num_params;
544   guint n;
545   guint signal_id;
546   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_hwmon_interface_info.parent_struct, signal_name);
547   if (info == NULL)
548     return;
549   num_params = g_variant_n_children (parameters);
550   paramv = g_new0 (GValue, num_params + 1);
551   g_value_init (&paramv[0], TYPE_HWMON);
552   g_value_set_object (&paramv[0], proxy);
553   g_variant_iter_init (&iter, parameters);
554   n = 1;
555   while ((child = g_variant_iter_next_value (&iter)) != NULL)
556     {
557       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
558       if (arg_info->use_gvariant)
559         {
560           g_value_init (&paramv[n], G_TYPE_VARIANT);
561           g_value_set_variant (&paramv[n], child);
562           n++;
563         }
564       else
565         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
566       g_variant_unref (child);
567     }
568   signal_id = g_signal_lookup (info->signal_name, TYPE_HWMON);
569   g_signal_emitv (paramv, signal_id, 0, NULL);
570   for (n = 0; n < num_params + 1; n++)
571     g_value_unset (&paramv[n]);
572   g_free (paramv);
573 }
574 
575 static void
576 hwmon_proxy_g_properties_changed (GDBusProxy *_proxy,
577   GVariant *changed_properties,
578   const gchar *const *invalidated_properties)
579 {
580   HwmonProxy *proxy = HWMON_PROXY (_proxy);
581   guint n;
582   const gchar *key;
583   GVariantIter *iter;
584   _ExtendedGDBusPropertyInfo *info;
585   g_variant_get (changed_properties, "a{sv}", &iter);
586   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
587     {
588       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_hwmon_interface_info.parent_struct, key);
589       g_datalist_remove_data (&proxy->priv->qdata, key);
590       if (info != NULL)
591         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
592     }
593   g_variant_iter_free (iter);
594   for (n = 0; invalidated_properties[n] != NULL; n++)
595     {
596       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_hwmon_interface_info.parent_struct, invalidated_properties[n]);
597       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
598       if (info != NULL)
599         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
600     }
601 }
602 
603 static gint
604 hwmon_proxy_get_poll_interval (Hwmon *object)
605 {
606   HwmonProxy *proxy = HWMON_PROXY (object);
607   GVariant *variant;
608   gint value = 0;
609   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "poll_interval");
610   if (variant != NULL)
611     {
612       value = g_variant_get_int32 (variant);
613       g_variant_unref (variant);
614     }
615   return value;
616 }
617 
618 static const gchar *
619 hwmon_proxy_get_sysfs_path (Hwmon *object)
620 {
621   HwmonProxy *proxy = HWMON_PROXY (object);
622   GVariant *variant;
623   const gchar *value = NULL;
624   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "sysfs_path");
625   if (variant != NULL)
626     {
627       value = g_variant_get_string (variant, NULL);
628       g_variant_unref (variant);
629     }
630   return value;
631 }
632 
633 static gint
634 hwmon_proxy_get_scale (Hwmon *object)
635 {
636   HwmonProxy *proxy = HWMON_PROXY (object);
637   GVariant *variant;
638   gint value = 0;
639   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "scale");
640   if (variant != NULL)
641     {
642       value = g_variant_get_int32 (variant);
643       g_variant_unref (variant);
644     }
645   return value;
646 }
647 
648 static void
649 hwmon_proxy_init (HwmonProxy *proxy)
650 {
651 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
652   proxy->priv = hwmon_proxy_get_instance_private (proxy);
653 #else
654   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_HWMON_PROXY, HwmonProxyPrivate);
655 #endif
656 
657   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), hwmon_interface_info ());
658 }
659 
660 static void
661 hwmon_proxy_class_init (HwmonProxyClass *klass)
662 {
663   GObjectClass *gobject_class;
664   GDBusProxyClass *proxy_class;
665 
666   gobject_class = G_OBJECT_CLASS (klass);
667   gobject_class->finalize     = hwmon_proxy_finalize;
668   gobject_class->get_property = hwmon_proxy_get_property;
669   gobject_class->set_property = hwmon_proxy_set_property;
670 
671   proxy_class = G_DBUS_PROXY_CLASS (klass);
672   proxy_class->g_signal = hwmon_proxy_g_signal;
673   proxy_class->g_properties_changed = hwmon_proxy_g_properties_changed;
674 
675   hwmon_override_properties (gobject_class, 1);
676 
677 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
678   g_type_class_add_private (klass, sizeof (HwmonProxyPrivate));
679 #endif
680 }
681 
682 static void
683 hwmon_proxy_iface_init (HwmonIface *iface)
684 {
685   iface->get_poll_interval = hwmon_proxy_get_poll_interval;
686   iface->get_sysfs_path = hwmon_proxy_get_sysfs_path;
687   iface->get_scale = hwmon_proxy_get_scale;
688 }
689 
690 /**
691  * hwmon_proxy_new:
692  * @connection: A #GDBusConnection.
693  * @flags: Flags from the #GDBusProxyFlags enumeration.
694  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
695  * @object_path: An object path.
696  * @cancellable: (allow-none): A #GCancellable or %NULL.
697  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
698  * @user_data: User data to pass to @callback.
699  *
700  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Hwmon.top_of_page">org.openbmc.Hwmon</link>. See g_dbus_proxy_new() for more details.
701  *
702  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
703  * You can then call hwmon_proxy_new_finish() to get the result of the operation.
704  *
705  * See hwmon_proxy_new_sync() for the synchronous, blocking version of this constructor.
706  */
707 void
708 hwmon_proxy_new (
709     GDBusConnection     *connection,
710     GDBusProxyFlags      flags,
711     const gchar         *name,
712     const gchar         *object_path,
713     GCancellable        *cancellable,
714     GAsyncReadyCallback  callback,
715     gpointer             user_data)
716 {
717   g_async_initable_new_async (TYPE_HWMON_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.openbmc.Hwmon", NULL);
718 }
719 
720 /**
721  * hwmon_proxy_new_finish:
722  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to hwmon_proxy_new().
723  * @error: Return location for error or %NULL
724  *
725  * Finishes an operation started with hwmon_proxy_new().
726  *
727  * Returns: (transfer full) (type HwmonProxy): The constructed proxy object or %NULL if @error is set.
728  */
729 Hwmon *
730 hwmon_proxy_new_finish (
731     GAsyncResult        *res,
732     GError             **error)
733 {
734   GObject *ret;
735   GObject *source_object;
736   source_object = g_async_result_get_source_object (res);
737   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
738   g_object_unref (source_object);
739   if (ret != NULL)
740     return HWMON (ret);
741   else
742     return NULL;
743 }
744 
745 /**
746  * hwmon_proxy_new_sync:
747  * @connection: A #GDBusConnection.
748  * @flags: Flags from the #GDBusProxyFlags enumeration.
749  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
750  * @object_path: An object path.
751  * @cancellable: (allow-none): A #GCancellable or %NULL.
752  * @error: Return location for error or %NULL
753  *
754  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Hwmon.top_of_page">org.openbmc.Hwmon</link>. See g_dbus_proxy_new_sync() for more details.
755  *
756  * The calling thread is blocked until a reply is received.
757  *
758  * See hwmon_proxy_new() for the asynchronous version of this constructor.
759  *
760  * Returns: (transfer full) (type HwmonProxy): The constructed proxy object or %NULL if @error is set.
761  */
762 Hwmon *
763 hwmon_proxy_new_sync (
764     GDBusConnection     *connection,
765     GDBusProxyFlags      flags,
766     const gchar         *name,
767     const gchar         *object_path,
768     GCancellable        *cancellable,
769     GError             **error)
770 {
771   GInitable *ret;
772   ret = g_initable_new (TYPE_HWMON_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.Hwmon", NULL);
773   if (ret != NULL)
774     return HWMON (ret);
775   else
776     return NULL;
777 }
778 
779 
780 /**
781  * hwmon_proxy_new_for_bus:
782  * @bus_type: A #GBusType.
783  * @flags: Flags from the #GDBusProxyFlags enumeration.
784  * @name: A bus name (well-known or unique).
785  * @object_path: An object path.
786  * @cancellable: (allow-none): A #GCancellable or %NULL.
787  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
788  * @user_data: User data to pass to @callback.
789  *
790  * Like hwmon_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
791  *
792  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
793  * You can then call hwmon_proxy_new_for_bus_finish() to get the result of the operation.
794  *
795  * See hwmon_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
796  */
797 void
798 hwmon_proxy_new_for_bus (
799     GBusType             bus_type,
800     GDBusProxyFlags      flags,
801     const gchar         *name,
802     const gchar         *object_path,
803     GCancellable        *cancellable,
804     GAsyncReadyCallback  callback,
805     gpointer             user_data)
806 {
807   g_async_initable_new_async (TYPE_HWMON_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.openbmc.Hwmon", NULL);
808 }
809 
810 /**
811  * hwmon_proxy_new_for_bus_finish:
812  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to hwmon_proxy_new_for_bus().
813  * @error: Return location for error or %NULL
814  *
815  * Finishes an operation started with hwmon_proxy_new_for_bus().
816  *
817  * Returns: (transfer full) (type HwmonProxy): The constructed proxy object or %NULL if @error is set.
818  */
819 Hwmon *
820 hwmon_proxy_new_for_bus_finish (
821     GAsyncResult        *res,
822     GError             **error)
823 {
824   GObject *ret;
825   GObject *source_object;
826   source_object = g_async_result_get_source_object (res);
827   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
828   g_object_unref (source_object);
829   if (ret != NULL)
830     return HWMON (ret);
831   else
832     return NULL;
833 }
834 
835 /**
836  * hwmon_proxy_new_for_bus_sync:
837  * @bus_type: A #GBusType.
838  * @flags: Flags from the #GDBusProxyFlags enumeration.
839  * @name: A bus name (well-known or unique).
840  * @object_path: An object path.
841  * @cancellable: (allow-none): A #GCancellable or %NULL.
842  * @error: Return location for error or %NULL
843  *
844  * Like hwmon_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
845  *
846  * The calling thread is blocked until a reply is received.
847  *
848  * See hwmon_proxy_new_for_bus() for the asynchronous version of this constructor.
849  *
850  * Returns: (transfer full) (type HwmonProxy): The constructed proxy object or %NULL if @error is set.
851  */
852 Hwmon *
853 hwmon_proxy_new_for_bus_sync (
854     GBusType             bus_type,
855     GDBusProxyFlags      flags,
856     const gchar         *name,
857     const gchar         *object_path,
858     GCancellable        *cancellable,
859     GError             **error)
860 {
861   GInitable *ret;
862   ret = g_initable_new (TYPE_HWMON_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.Hwmon", NULL);
863   if (ret != NULL)
864     return HWMON (ret);
865   else
866     return NULL;
867 }
868 
869 
870 /* ------------------------------------------------------------------------ */
871 
872 /**
873  * HwmonSkeleton:
874  *
875  * The #HwmonSkeleton structure contains only private data and should only be accessed using the provided API.
876  */
877 
878 /**
879  * HwmonSkeletonClass:
880  * @parent_class: The parent class.
881  *
882  * Class structure for #HwmonSkeleton.
883  */
884 
885 struct _HwmonSkeletonPrivate
886 {
887   GValue *properties;
888   GList *changed_properties;
889   GSource *changed_properties_idle_source;
890   GMainContext *context;
891   GMutex lock;
892 };
893 
894 static void
895 _hwmon_skeleton_handle_method_call (
896   GDBusConnection *connection G_GNUC_UNUSED,
897   const gchar *sender G_GNUC_UNUSED,
898   const gchar *object_path G_GNUC_UNUSED,
899   const gchar *interface_name,
900   const gchar *method_name,
901   GVariant *parameters,
902   GDBusMethodInvocation *invocation,
903   gpointer user_data)
904 {
905   HwmonSkeleton *skeleton = HWMON_SKELETON (user_data);
906   _ExtendedGDBusMethodInfo *info;
907   GVariantIter iter;
908   GVariant *child;
909   GValue *paramv;
910   guint num_params;
911   guint num_extra;
912   guint n;
913   guint signal_id;
914   GValue return_value = G_VALUE_INIT;
915   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
916   g_assert (info != NULL);
917   num_params = g_variant_n_children (parameters);
918   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
919   n = 0;
920   g_value_init (&paramv[n], TYPE_HWMON);
921   g_value_set_object (&paramv[n++], skeleton);
922   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
923   g_value_set_object (&paramv[n++], invocation);
924   if (info->pass_fdlist)
925     {
926 #ifdef G_OS_UNIX
927       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
928       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
929 #else
930       g_assert_not_reached ();
931 #endif
932     }
933   g_variant_iter_init (&iter, parameters);
934   while ((child = g_variant_iter_next_value (&iter)) != NULL)
935     {
936       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
937       if (arg_info->use_gvariant)
938         {
939           g_value_init (&paramv[n], G_TYPE_VARIANT);
940           g_value_set_variant (&paramv[n], child);
941           n++;
942         }
943       else
944         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
945       g_variant_unref (child);
946     }
947   signal_id = g_signal_lookup (info->signal_name, TYPE_HWMON);
948   g_value_init (&return_value, G_TYPE_BOOLEAN);
949   g_signal_emitv (paramv, signal_id, 0, &return_value);
950   if (!g_value_get_boolean (&return_value))
951     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);
952   g_value_unset (&return_value);
953   for (n = 0; n < num_params + num_extra; n++)
954     g_value_unset (&paramv[n]);
955   g_free (paramv);
956 }
957 
958 static GVariant *
959 _hwmon_skeleton_handle_get_property (
960   GDBusConnection *connection G_GNUC_UNUSED,
961   const gchar *sender G_GNUC_UNUSED,
962   const gchar *object_path G_GNUC_UNUSED,
963   const gchar *interface_name G_GNUC_UNUSED,
964   const gchar *property_name,
965   GError **error,
966   gpointer user_data)
967 {
968   HwmonSkeleton *skeleton = HWMON_SKELETON (user_data);
969   GValue value = G_VALUE_INIT;
970   GParamSpec *pspec;
971   _ExtendedGDBusPropertyInfo *info;
972   GVariant *ret;
973   ret = NULL;
974   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_hwmon_interface_info.parent_struct, property_name);
975   g_assert (info != NULL);
976   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
977   if (pspec == NULL)
978     {
979       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
980     }
981   else
982     {
983       g_value_init (&value, pspec->value_type);
984       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
985       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
986       g_value_unset (&value);
987     }
988   return ret;
989 }
990 
991 static gboolean
992 _hwmon_skeleton_handle_set_property (
993   GDBusConnection *connection G_GNUC_UNUSED,
994   const gchar *sender G_GNUC_UNUSED,
995   const gchar *object_path G_GNUC_UNUSED,
996   const gchar *interface_name G_GNUC_UNUSED,
997   const gchar *property_name,
998   GVariant *variant,
999   GError **error,
1000   gpointer user_data)
1001 {
1002   HwmonSkeleton *skeleton = HWMON_SKELETON (user_data);
1003   GValue value = G_VALUE_INIT;
1004   GParamSpec *pspec;
1005   _ExtendedGDBusPropertyInfo *info;
1006   gboolean ret;
1007   ret = FALSE;
1008   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_hwmon_interface_info.parent_struct, property_name);
1009   g_assert (info != NULL);
1010   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
1011   if (pspec == NULL)
1012     {
1013       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
1014     }
1015   else
1016     {
1017       if (info->use_gvariant)
1018         g_value_set_variant (&value, variant);
1019       else
1020         g_dbus_gvariant_to_gvalue (variant, &value);
1021       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
1022       g_value_unset (&value);
1023       ret = TRUE;
1024     }
1025   return ret;
1026 }
1027 
1028 static const GDBusInterfaceVTable _hwmon_skeleton_vtable =
1029 {
1030   _hwmon_skeleton_handle_method_call,
1031   _hwmon_skeleton_handle_get_property,
1032   _hwmon_skeleton_handle_set_property,
1033   {NULL}
1034 };
1035 
1036 static GDBusInterfaceInfo *
1037 hwmon_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
1038 {
1039   return hwmon_interface_info ();
1040 }
1041 
1042 static GDBusInterfaceVTable *
1043 hwmon_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
1044 {
1045   return (GDBusInterfaceVTable *) &_hwmon_skeleton_vtable;
1046 }
1047 
1048 static GVariant *
1049 hwmon_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
1050 {
1051   HwmonSkeleton *skeleton = HWMON_SKELETON (_skeleton);
1052 
1053   GVariantBuilder builder;
1054   guint n;
1055   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
1056   if (_hwmon_interface_info.parent_struct.properties == NULL)
1057     goto out;
1058   for (n = 0; _hwmon_interface_info.parent_struct.properties[n] != NULL; n++)
1059     {
1060       GDBusPropertyInfo *info = _hwmon_interface_info.parent_struct.properties[n];
1061       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
1062         {
1063           GVariant *value;
1064           value = _hwmon_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.openbmc.Hwmon", info->name, NULL, skeleton);
1065           if (value != NULL)
1066             {
1067               g_variant_take_ref (value);
1068               g_variant_builder_add (&builder, "{sv}", info->name, value);
1069               g_variant_unref (value);
1070             }
1071         }
1072     }
1073 out:
1074   return g_variant_builder_end (&builder);
1075 }
1076 
1077 static gboolean _hwmon_emit_changed (gpointer user_data);
1078 
1079 static void
1080 hwmon_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
1081 {
1082   HwmonSkeleton *skeleton = HWMON_SKELETON (_skeleton);
1083   gboolean emit_changed = FALSE;
1084 
1085   g_mutex_lock (&skeleton->priv->lock);
1086   if (skeleton->priv->changed_properties_idle_source != NULL)
1087     {
1088       g_source_destroy (skeleton->priv->changed_properties_idle_source);
1089       skeleton->priv->changed_properties_idle_source = NULL;
1090       emit_changed = TRUE;
1091     }
1092   g_mutex_unlock (&skeleton->priv->lock);
1093 
1094   if (emit_changed)
1095     _hwmon_emit_changed (skeleton);
1096 }
1097 
1098 static void hwmon_skeleton_iface_init (HwmonIface *iface);
1099 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
1100 G_DEFINE_TYPE_WITH_CODE (HwmonSkeleton, hwmon_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
1101                          G_ADD_PRIVATE (HwmonSkeleton)
1102                          G_IMPLEMENT_INTERFACE (TYPE_HWMON, hwmon_skeleton_iface_init));
1103 
1104 #else
1105 G_DEFINE_TYPE_WITH_CODE (HwmonSkeleton, hwmon_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
1106                          G_IMPLEMENT_INTERFACE (TYPE_HWMON, hwmon_skeleton_iface_init));
1107 
1108 #endif
1109 static void
1110 hwmon_skeleton_finalize (GObject *object)
1111 {
1112   HwmonSkeleton *skeleton = HWMON_SKELETON (object);
1113   guint n;
1114   for (n = 0; n < 3; n++)
1115     g_value_unset (&skeleton->priv->properties[n]);
1116   g_free (skeleton->priv->properties);
1117   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
1118   if (skeleton->priv->changed_properties_idle_source != NULL)
1119     g_source_destroy (skeleton->priv->changed_properties_idle_source);
1120   g_main_context_unref (skeleton->priv->context);
1121   g_mutex_clear (&skeleton->priv->lock);
1122   G_OBJECT_CLASS (hwmon_skeleton_parent_class)->finalize (object);
1123 }
1124 
1125 static void
1126 hwmon_skeleton_get_property (GObject      *object,
1127   guint         prop_id,
1128   GValue       *value,
1129   GParamSpec   *pspec G_GNUC_UNUSED)
1130 {
1131   HwmonSkeleton *skeleton = HWMON_SKELETON (object);
1132   g_assert (prop_id != 0 && prop_id - 1 < 3);
1133   g_mutex_lock (&skeleton->priv->lock);
1134   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
1135   g_mutex_unlock (&skeleton->priv->lock);
1136 }
1137 
1138 static gboolean
1139 _hwmon_emit_changed (gpointer user_data)
1140 {
1141   HwmonSkeleton *skeleton = HWMON_SKELETON (user_data);
1142   GList *l;
1143   GVariantBuilder builder;
1144   GVariantBuilder invalidated_builder;
1145   guint num_changes;
1146 
1147   g_mutex_lock (&skeleton->priv->lock);
1148   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
1149   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
1150   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
1151     {
1152       ChangedProperty *cp = l->data;
1153       GVariant *variant;
1154       const GValue *cur_value;
1155 
1156       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
1157       if (!_g_value_equal (cur_value, &cp->orig_value))
1158         {
1159           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
1160           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
1161           g_variant_unref (variant);
1162           num_changes++;
1163         }
1164     }
1165   if (num_changes > 0)
1166     {
1167       GList *connections, *ll;
1168       GVariant *signal_variant;
1169       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.Hwmon",
1170                                            &builder, &invalidated_builder));
1171       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
1172       for (ll = connections; ll != NULL; ll = ll->next)
1173         {
1174           GDBusConnection *connection = ll->data;
1175 
1176           g_dbus_connection_emit_signal (connection,
1177                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
1178                                          "org.freedesktop.DBus.Properties",
1179                                          "PropertiesChanged",
1180                                          signal_variant,
1181                                          NULL);
1182         }
1183       g_variant_unref (signal_variant);
1184       g_list_free_full (connections, g_object_unref);
1185     }
1186   else
1187     {
1188       g_variant_builder_clear (&builder);
1189       g_variant_builder_clear (&invalidated_builder);
1190     }
1191   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
1192   skeleton->priv->changed_properties = NULL;
1193   skeleton->priv->changed_properties_idle_source = NULL;
1194   g_mutex_unlock (&skeleton->priv->lock);
1195   return FALSE;
1196 }
1197 
1198 static void
1199 _hwmon_schedule_emit_changed (HwmonSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
1200 {
1201   ChangedProperty *cp;
1202   GList *l;
1203   cp = NULL;
1204   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
1205     {
1206       ChangedProperty *i_cp = l->data;
1207       if (i_cp->info == info)
1208         {
1209           cp = i_cp;
1210           break;
1211         }
1212     }
1213   if (cp == NULL)
1214     {
1215       cp = g_new0 (ChangedProperty, 1);
1216       cp->prop_id = prop_id;
1217       cp->info = info;
1218       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
1219       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
1220       g_value_copy (orig_value, &cp->orig_value);
1221     }
1222 }
1223 
1224 static void
1225 hwmon_skeleton_notify (GObject      *object,
1226   GParamSpec *pspec G_GNUC_UNUSED)
1227 {
1228   HwmonSkeleton *skeleton = HWMON_SKELETON (object);
1229   g_mutex_lock (&skeleton->priv->lock);
1230   if (skeleton->priv->changed_properties != NULL &&
1231       skeleton->priv->changed_properties_idle_source == NULL)
1232     {
1233       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
1234       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
1235       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _hwmon_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
1236       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
1237       g_source_unref (skeleton->priv->changed_properties_idle_source);
1238     }
1239   g_mutex_unlock (&skeleton->priv->lock);
1240 }
1241 
1242 static void
1243 hwmon_skeleton_set_property (GObject      *object,
1244   guint         prop_id,
1245   const GValue *value,
1246   GParamSpec   *pspec)
1247 {
1248   HwmonSkeleton *skeleton = HWMON_SKELETON (object);
1249   g_assert (prop_id != 0 && prop_id - 1 < 3);
1250   g_mutex_lock (&skeleton->priv->lock);
1251   g_object_freeze_notify (object);
1252   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
1253     {
1254       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
1255         _hwmon_schedule_emit_changed (skeleton, _hwmon_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
1256       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
1257       g_object_notify_by_pspec (object, pspec);
1258     }
1259   g_mutex_unlock (&skeleton->priv->lock);
1260   g_object_thaw_notify (object);
1261 }
1262 
1263 static void
1264 hwmon_skeleton_init (HwmonSkeleton *skeleton)
1265 {
1266 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
1267   skeleton->priv = hwmon_skeleton_get_instance_private (skeleton);
1268 #else
1269   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_HWMON_SKELETON, HwmonSkeletonPrivate);
1270 #endif
1271 
1272   g_mutex_init (&skeleton->priv->lock);
1273   skeleton->priv->context = g_main_context_ref_thread_default ();
1274   skeleton->priv->properties = g_new0 (GValue, 3);
1275   g_value_init (&skeleton->priv->properties[0], G_TYPE_INT);
1276   g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING);
1277   g_value_init (&skeleton->priv->properties[2], G_TYPE_INT);
1278 }
1279 
1280 static gint
1281 hwmon_skeleton_get_poll_interval (Hwmon *object)
1282 {
1283   HwmonSkeleton *skeleton = HWMON_SKELETON (object);
1284   gint value;
1285   g_mutex_lock (&skeleton->priv->lock);
1286   value = g_value_get_int (&(skeleton->priv->properties[0]));
1287   g_mutex_unlock (&skeleton->priv->lock);
1288   return value;
1289 }
1290 
1291 static const gchar *
1292 hwmon_skeleton_get_sysfs_path (Hwmon *object)
1293 {
1294   HwmonSkeleton *skeleton = HWMON_SKELETON (object);
1295   const gchar *value;
1296   g_mutex_lock (&skeleton->priv->lock);
1297   value = g_value_get_string (&(skeleton->priv->properties[1]));
1298   g_mutex_unlock (&skeleton->priv->lock);
1299   return value;
1300 }
1301 
1302 static gint
1303 hwmon_skeleton_get_scale (Hwmon *object)
1304 {
1305   HwmonSkeleton *skeleton = HWMON_SKELETON (object);
1306   gint value;
1307   g_mutex_lock (&skeleton->priv->lock);
1308   value = g_value_get_int (&(skeleton->priv->properties[2]));
1309   g_mutex_unlock (&skeleton->priv->lock);
1310   return value;
1311 }
1312 
1313 static void
1314 hwmon_skeleton_class_init (HwmonSkeletonClass *klass)
1315 {
1316   GObjectClass *gobject_class;
1317   GDBusInterfaceSkeletonClass *skeleton_class;
1318 
1319   gobject_class = G_OBJECT_CLASS (klass);
1320   gobject_class->finalize = hwmon_skeleton_finalize;
1321   gobject_class->get_property = hwmon_skeleton_get_property;
1322   gobject_class->set_property = hwmon_skeleton_set_property;
1323   gobject_class->notify       = hwmon_skeleton_notify;
1324 
1325 
1326   hwmon_override_properties (gobject_class, 1);
1327 
1328   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
1329   skeleton_class->get_info = hwmon_skeleton_dbus_interface_get_info;
1330   skeleton_class->get_properties = hwmon_skeleton_dbus_interface_get_properties;
1331   skeleton_class->flush = hwmon_skeleton_dbus_interface_flush;
1332   skeleton_class->get_vtable = hwmon_skeleton_dbus_interface_get_vtable;
1333 
1334 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
1335   g_type_class_add_private (klass, sizeof (HwmonSkeletonPrivate));
1336 #endif
1337 }
1338 
1339 static void
1340 hwmon_skeleton_iface_init (HwmonIface *iface)
1341 {
1342   iface->get_poll_interval = hwmon_skeleton_get_poll_interval;
1343   iface->get_sysfs_path = hwmon_skeleton_get_sysfs_path;
1344   iface->get_scale = hwmon_skeleton_get_scale;
1345 }
1346 
1347 /**
1348  * hwmon_skeleton_new:
1349  *
1350  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Hwmon.top_of_page">org.openbmc.Hwmon</link>.
1351  *
1352  * Returns: (transfer full) (type HwmonSkeleton): The skeleton object.
1353  */
1354 Hwmon *
1355 hwmon_skeleton_new (void)
1356 {
1357   return HWMON (g_object_new (TYPE_HWMON_SKELETON, NULL));
1358 }
1359 
1360 /* ------------------------------------------------------------------------
1361  * Code for interface org.openbmc.Fan
1362  * ------------------------------------------------------------------------
1363  */
1364 
1365 /**
1366  * SECTION:Fan
1367  * @title: Fan
1368  * @short_description: Generated C code for the org.openbmc.Fan D-Bus interface
1369  *
1370  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-Fan.top_of_page">org.openbmc.Fan</link> D-Bus interface in C.
1371  */
1372 
1373 /* ---- Introspection data for org.openbmc.Fan ---- */
1374 
1375 static const _ExtendedGDBusArgInfo _fan_method_info_set_cooling_zone_IN_ARG_cooling_zone =
1376 {
1377   {
1378     -1,
1379     (gchar *) "cooling_zone",
1380     (gchar *) "i",
1381     NULL
1382   },
1383   FALSE
1384 };
1385 
1386 static const _ExtendedGDBusArgInfo * const _fan_method_info_set_cooling_zone_IN_ARG_pointers[] =
1387 {
1388   &_fan_method_info_set_cooling_zone_IN_ARG_cooling_zone,
1389   NULL
1390 };
1391 
1392 static const _ExtendedGDBusMethodInfo _fan_method_info_set_cooling_zone =
1393 {
1394   {
1395     -1,
1396     (gchar *) "setCoolingZone",
1397     (GDBusArgInfo **) &_fan_method_info_set_cooling_zone_IN_ARG_pointers,
1398     NULL,
1399     NULL
1400   },
1401   "handle-set-cooling-zone",
1402   FALSE
1403 };
1404 
1405 static const _ExtendedGDBusArgInfo _fan_method_info_get_speed_OUT_ARG_speed =
1406 {
1407   {
1408     -1,
1409     (gchar *) "speed",
1410     (gchar *) "i",
1411     NULL
1412   },
1413   FALSE
1414 };
1415 
1416 static const _ExtendedGDBusArgInfo * const _fan_method_info_get_speed_OUT_ARG_pointers[] =
1417 {
1418   &_fan_method_info_get_speed_OUT_ARG_speed,
1419   NULL
1420 };
1421 
1422 static const _ExtendedGDBusMethodInfo _fan_method_info_get_speed =
1423 {
1424   {
1425     -1,
1426     (gchar *) "getSpeed",
1427     NULL,
1428     (GDBusArgInfo **) &_fan_method_info_get_speed_OUT_ARG_pointers,
1429     NULL
1430   },
1431   "handle-get-speed",
1432   FALSE
1433 };
1434 
1435 static const _ExtendedGDBusArgInfo _fan_method_info_set_speed_IN_ARG_speed =
1436 {
1437   {
1438     -1,
1439     (gchar *) "speed",
1440     (gchar *) "i",
1441     NULL
1442   },
1443   FALSE
1444 };
1445 
1446 static const _ExtendedGDBusArgInfo * const _fan_method_info_set_speed_IN_ARG_pointers[] =
1447 {
1448   &_fan_method_info_set_speed_IN_ARG_speed,
1449   NULL
1450 };
1451 
1452 static const _ExtendedGDBusMethodInfo _fan_method_info_set_speed =
1453 {
1454   {
1455     -1,
1456     (gchar *) "setSpeed",
1457     (GDBusArgInfo **) &_fan_method_info_set_speed_IN_ARG_pointers,
1458     NULL,
1459     NULL
1460   },
1461   "handle-set-speed",
1462   FALSE
1463 };
1464 
1465 static const _ExtendedGDBusMethodInfo * const _fan_method_info_pointers[] =
1466 {
1467   &_fan_method_info_set_cooling_zone,
1468   &_fan_method_info_get_speed,
1469   &_fan_method_info_set_speed,
1470   NULL
1471 };
1472 
1473 static const _ExtendedGDBusArgInfo _fan_signal_info_speed_changed_ARG_speed =
1474 {
1475   {
1476     -1,
1477     (gchar *) "speed",
1478     (gchar *) "i",
1479     NULL
1480   },
1481   FALSE
1482 };
1483 
1484 static const _ExtendedGDBusArgInfo * const _fan_signal_info_speed_changed_ARG_pointers[] =
1485 {
1486   &_fan_signal_info_speed_changed_ARG_speed,
1487   NULL
1488 };
1489 
1490 static const _ExtendedGDBusSignalInfo _fan_signal_info_speed_changed =
1491 {
1492   {
1493     -1,
1494     (gchar *) "SpeedChanged",
1495     (GDBusArgInfo **) &_fan_signal_info_speed_changed_ARG_pointers,
1496     NULL
1497   },
1498   "speed-changed"
1499 };
1500 
1501 static const _ExtendedGDBusSignalInfo _fan_signal_info_tach_error =
1502 {
1503   {
1504     -1,
1505     (gchar *) "TachError",
1506     NULL,
1507     NULL
1508   },
1509   "tach-error"
1510 };
1511 
1512 static const _ExtendedGDBusSignalInfo * const _fan_signal_info_pointers[] =
1513 {
1514   &_fan_signal_info_speed_changed,
1515   &_fan_signal_info_tach_error,
1516   NULL
1517 };
1518 
1519 static const _ExtendedGDBusPropertyInfo _fan_property_info_speed =
1520 {
1521   {
1522     -1,
1523     (gchar *) "speed",
1524     (gchar *) "i",
1525     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
1526     NULL
1527   },
1528   "speed",
1529   FALSE
1530 };
1531 
1532 static const _ExtendedGDBusPropertyInfo _fan_property_info_cooling_zone =
1533 {
1534   {
1535     -1,
1536     (gchar *) "cooling_zone",
1537     (gchar *) "i",
1538     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
1539     NULL
1540   },
1541   "cooling-zone",
1542   FALSE
1543 };
1544 
1545 static const _ExtendedGDBusPropertyInfo _fan_property_info_pwm_num =
1546 {
1547   {
1548     -1,
1549     (gchar *) "pwm_num",
1550     (gchar *) "i",
1551     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
1552     NULL
1553   },
1554   "pwm-num",
1555   FALSE
1556 };
1557 
1558 static const _ExtendedGDBusPropertyInfo * const _fan_property_info_pointers[] =
1559 {
1560   &_fan_property_info_speed,
1561   &_fan_property_info_cooling_zone,
1562   &_fan_property_info_pwm_num,
1563   NULL
1564 };
1565 
1566 static const _ExtendedGDBusInterfaceInfo _fan_interface_info =
1567 {
1568   {
1569     -1,
1570     (gchar *) "org.openbmc.Fan",
1571     (GDBusMethodInfo **) &_fan_method_info_pointers,
1572     (GDBusSignalInfo **) &_fan_signal_info_pointers,
1573     (GDBusPropertyInfo **) &_fan_property_info_pointers,
1574     NULL
1575   },
1576   "fan",
1577 };
1578 
1579 
1580 /**
1581  * fan_interface_info:
1582  *
1583  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-Fan.top_of_page">org.openbmc.Fan</link> D-Bus interface.
1584  *
1585  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
1586  */
1587 GDBusInterfaceInfo *
1588 fan_interface_info (void)
1589 {
1590   return (GDBusInterfaceInfo *) &_fan_interface_info.parent_struct;
1591 }
1592 
1593 /**
1594  * fan_override_properties:
1595  * @klass: The class structure for a #GObject<!-- -->-derived class.
1596  * @property_id_begin: The property id to assign to the first overridden property.
1597  *
1598  * Overrides all #GObject properties in the #Fan interface for a concrete class.
1599  * The properties are overridden in the order they are defined.
1600  *
1601  * Returns: The last property id.
1602  */
1603 guint
1604 fan_override_properties (GObjectClass *klass, guint property_id_begin)
1605 {
1606   g_object_class_override_property (klass, property_id_begin++, "speed");
1607   g_object_class_override_property (klass, property_id_begin++, "cooling-zone");
1608   g_object_class_override_property (klass, property_id_begin++, "pwm-num");
1609   return property_id_begin - 1;
1610 }
1611 
1612 
1613 
1614 /**
1615  * Fan:
1616  *
1617  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Fan.top_of_page">org.openbmc.Fan</link>.
1618  */
1619 
1620 /**
1621  * FanIface:
1622  * @parent_iface: The parent interface.
1623  * @handle_get_speed: Handler for the #Fan::handle-get-speed signal.
1624  * @handle_set_cooling_zone: Handler for the #Fan::handle-set-cooling-zone signal.
1625  * @handle_set_speed: Handler for the #Fan::handle-set-speed signal.
1626  * @get_cooling_zone: Getter for the #Fan:cooling-zone property.
1627  * @get_pwm_num: Getter for the #Fan:pwm-num property.
1628  * @get_speed: Getter for the #Fan:speed property.
1629  * @speed_changed: Handler for the #Fan::speed-changed signal.
1630  * @tach_error: Handler for the #Fan::tach-error signal.
1631  *
1632  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Fan.top_of_page">org.openbmc.Fan</link>.
1633  */
1634 
1635 typedef FanIface FanInterface;
1636 G_DEFINE_INTERFACE (Fan, fan, G_TYPE_OBJECT);
1637 
1638 static void
1639 fan_default_init (FanIface *iface)
1640 {
1641   /* GObject signals for incoming D-Bus method calls: */
1642   /**
1643    * Fan::handle-set-cooling-zone:
1644    * @object: A #Fan.
1645    * @invocation: A #GDBusMethodInvocation.
1646    * @arg_cooling_zone: Argument passed by remote caller.
1647    *
1648    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Fan.setCoolingZone">setCoolingZone()</link> D-Bus method.
1649    *
1650    * 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 fan_complete_set_cooling_zone() 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.
1651    *
1652    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
1653    */
1654   g_signal_new ("handle-set-cooling-zone",
1655     G_TYPE_FROM_INTERFACE (iface),
1656     G_SIGNAL_RUN_LAST,
1657     G_STRUCT_OFFSET (FanIface, handle_set_cooling_zone),
1658     g_signal_accumulator_true_handled,
1659     NULL,
1660     g_cclosure_marshal_generic,
1661     G_TYPE_BOOLEAN,
1662     2,
1663     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_INT);
1664 
1665   /**
1666    * Fan::handle-get-speed:
1667    * @object: A #Fan.
1668    * @invocation: A #GDBusMethodInvocation.
1669    *
1670    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Fan.getSpeed">getSpeed()</link> D-Bus method.
1671    *
1672    * 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 fan_complete_get_speed() 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.
1673    *
1674    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
1675    */
1676   g_signal_new ("handle-get-speed",
1677     G_TYPE_FROM_INTERFACE (iface),
1678     G_SIGNAL_RUN_LAST,
1679     G_STRUCT_OFFSET (FanIface, handle_get_speed),
1680     g_signal_accumulator_true_handled,
1681     NULL,
1682     g_cclosure_marshal_generic,
1683     G_TYPE_BOOLEAN,
1684     1,
1685     G_TYPE_DBUS_METHOD_INVOCATION);
1686 
1687   /**
1688    * Fan::handle-set-speed:
1689    * @object: A #Fan.
1690    * @invocation: A #GDBusMethodInvocation.
1691    * @arg_speed: Argument passed by remote caller.
1692    *
1693    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Fan.setSpeed">setSpeed()</link> D-Bus method.
1694    *
1695    * 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 fan_complete_set_speed() 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.
1696    *
1697    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
1698    */
1699   g_signal_new ("handle-set-speed",
1700     G_TYPE_FROM_INTERFACE (iface),
1701     G_SIGNAL_RUN_LAST,
1702     G_STRUCT_OFFSET (FanIface, handle_set_speed),
1703     g_signal_accumulator_true_handled,
1704     NULL,
1705     g_cclosure_marshal_generic,
1706     G_TYPE_BOOLEAN,
1707     2,
1708     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_INT);
1709 
1710   /* GObject signals for received D-Bus signals: */
1711   /**
1712    * Fan::speed-changed:
1713    * @object: A #Fan.
1714    * @arg_speed: Argument.
1715    *
1716    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Fan.SpeedChanged">"SpeedChanged"</link> is received.
1717    *
1718    * 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.
1719    */
1720   g_signal_new ("speed-changed",
1721     G_TYPE_FROM_INTERFACE (iface),
1722     G_SIGNAL_RUN_LAST,
1723     G_STRUCT_OFFSET (FanIface, speed_changed),
1724     NULL,
1725     NULL,
1726     g_cclosure_marshal_generic,
1727     G_TYPE_NONE,
1728     1, G_TYPE_INT);
1729 
1730   /**
1731    * Fan::tach-error:
1732    * @object: A #Fan.
1733    *
1734    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Fan.TachError">"TachError"</link> is received.
1735    *
1736    * 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.
1737    */
1738   g_signal_new ("tach-error",
1739     G_TYPE_FROM_INTERFACE (iface),
1740     G_SIGNAL_RUN_LAST,
1741     G_STRUCT_OFFSET (FanIface, tach_error),
1742     NULL,
1743     NULL,
1744     g_cclosure_marshal_generic,
1745     G_TYPE_NONE,
1746     0);
1747 
1748   /* GObject properties for D-Bus properties: */
1749   /**
1750    * Fan:speed:
1751    *
1752    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Fan.speed">"speed"</link>.
1753    *
1754    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
1755    */
1756   g_object_interface_install_property (iface,
1757     g_param_spec_int ("speed", "speed", "speed", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
1758   /**
1759    * Fan:cooling-zone:
1760    *
1761    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Fan.cooling_zone">"cooling_zone"</link>.
1762    *
1763    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
1764    */
1765   g_object_interface_install_property (iface,
1766     g_param_spec_int ("cooling-zone", "cooling_zone", "cooling_zone", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
1767   /**
1768    * Fan:pwm-num:
1769    *
1770    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Fan.pwm_num">"pwm_num"</link>.
1771    *
1772    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
1773    */
1774   g_object_interface_install_property (iface,
1775     g_param_spec_int ("pwm-num", "pwm_num", "pwm_num", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
1776 }
1777 
1778 /**
1779  * fan_get_speed: (skip)
1780  * @object: A #Fan.
1781  *
1782  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Fan.speed">"speed"</link> D-Bus property.
1783  *
1784  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
1785  *
1786  * Returns: The property value.
1787  */
1788 gint
1789 fan_get_speed (Fan *object)
1790 {
1791   return FAN_GET_IFACE (object)->get_speed (object);
1792 }
1793 
1794 /**
1795  * fan_set_speed: (skip)
1796  * @object: A #Fan.
1797  * @value: The value to set.
1798  *
1799  * Sets the <link linkend="gdbus-property-org-openbmc-Fan.speed">"speed"</link> D-Bus property to @value.
1800  *
1801  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
1802  */
1803 void
1804 fan_set_speed (Fan *object, gint value)
1805 {
1806   g_object_set (G_OBJECT (object), "speed", value, NULL);
1807 }
1808 
1809 /**
1810  * fan_get_cooling_zone: (skip)
1811  * @object: A #Fan.
1812  *
1813  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Fan.cooling_zone">"cooling_zone"</link> D-Bus property.
1814  *
1815  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
1816  *
1817  * Returns: The property value.
1818  */
1819 gint
1820 fan_get_cooling_zone (Fan *object)
1821 {
1822   return FAN_GET_IFACE (object)->get_cooling_zone (object);
1823 }
1824 
1825 /**
1826  * fan_set_cooling_zone: (skip)
1827  * @object: A #Fan.
1828  * @value: The value to set.
1829  *
1830  * Sets the <link linkend="gdbus-property-org-openbmc-Fan.cooling_zone">"cooling_zone"</link> D-Bus property to @value.
1831  *
1832  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
1833  */
1834 void
1835 fan_set_cooling_zone (Fan *object, gint value)
1836 {
1837   g_object_set (G_OBJECT (object), "cooling-zone", value, NULL);
1838 }
1839 
1840 /**
1841  * fan_get_pwm_num: (skip)
1842  * @object: A #Fan.
1843  *
1844  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Fan.pwm_num">"pwm_num"</link> D-Bus property.
1845  *
1846  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
1847  *
1848  * Returns: The property value.
1849  */
1850 gint
1851 fan_get_pwm_num (Fan *object)
1852 {
1853   return FAN_GET_IFACE (object)->get_pwm_num (object);
1854 }
1855 
1856 /**
1857  * fan_set_pwm_num: (skip)
1858  * @object: A #Fan.
1859  * @value: The value to set.
1860  *
1861  * Sets the <link linkend="gdbus-property-org-openbmc-Fan.pwm_num">"pwm_num"</link> D-Bus property to @value.
1862  *
1863  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
1864  */
1865 void
1866 fan_set_pwm_num (Fan *object, gint value)
1867 {
1868   g_object_set (G_OBJECT (object), "pwm-num", value, NULL);
1869 }
1870 
1871 /**
1872  * fan_emit_speed_changed:
1873  * @object: A #Fan.
1874  * @arg_speed: Argument to pass with the signal.
1875  *
1876  * Emits the <link linkend="gdbus-signal-org-openbmc-Fan.SpeedChanged">"SpeedChanged"</link> D-Bus signal.
1877  */
1878 void
1879 fan_emit_speed_changed (
1880     Fan *object,
1881     gint arg_speed)
1882 {
1883   g_signal_emit_by_name (object, "speed-changed", arg_speed);
1884 }
1885 
1886 /**
1887  * fan_emit_tach_error:
1888  * @object: A #Fan.
1889  *
1890  * Emits the <link linkend="gdbus-signal-org-openbmc-Fan.TachError">"TachError"</link> D-Bus signal.
1891  */
1892 void
1893 fan_emit_tach_error (
1894     Fan *object)
1895 {
1896   g_signal_emit_by_name (object, "tach-error");
1897 }
1898 
1899 /**
1900  * fan_call_set_cooling_zone:
1901  * @proxy: A #FanProxy.
1902  * @arg_cooling_zone: Argument to pass with the method invocation.
1903  * @cancellable: (allow-none): A #GCancellable or %NULL.
1904  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
1905  * @user_data: User data to pass to @callback.
1906  *
1907  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Fan.setCoolingZone">setCoolingZone()</link> D-Bus method on @proxy.
1908  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
1909  * You can then call fan_call_set_cooling_zone_finish() to get the result of the operation.
1910  *
1911  * See fan_call_set_cooling_zone_sync() for the synchronous, blocking version of this method.
1912  */
1913 void
1914 fan_call_set_cooling_zone (
1915     Fan *proxy,
1916     gint arg_cooling_zone,
1917     GCancellable *cancellable,
1918     GAsyncReadyCallback callback,
1919     gpointer user_data)
1920 {
1921   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
1922     "setCoolingZone",
1923     g_variant_new ("(i)",
1924                    arg_cooling_zone),
1925     G_DBUS_CALL_FLAGS_NONE,
1926     -1,
1927     cancellable,
1928     callback,
1929     user_data);
1930 }
1931 
1932 /**
1933  * fan_call_set_cooling_zone_finish:
1934  * @proxy: A #FanProxy.
1935  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to fan_call_set_cooling_zone().
1936  * @error: Return location for error or %NULL.
1937  *
1938  * Finishes an operation started with fan_call_set_cooling_zone().
1939  *
1940  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
1941  */
1942 gboolean
1943 fan_call_set_cooling_zone_finish (
1944     Fan *proxy,
1945     GAsyncResult *res,
1946     GError **error)
1947 {
1948   GVariant *_ret;
1949   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
1950   if (_ret == NULL)
1951     goto _out;
1952   g_variant_get (_ret,
1953                  "()");
1954   g_variant_unref (_ret);
1955 _out:
1956   return _ret != NULL;
1957 }
1958 
1959 /**
1960  * fan_call_set_cooling_zone_sync:
1961  * @proxy: A #FanProxy.
1962  * @arg_cooling_zone: Argument to pass with the method invocation.
1963  * @cancellable: (allow-none): A #GCancellable or %NULL.
1964  * @error: Return location for error or %NULL.
1965  *
1966  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Fan.setCoolingZone">setCoolingZone()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
1967  *
1968  * See fan_call_set_cooling_zone() for the asynchronous version of this method.
1969  *
1970  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
1971  */
1972 gboolean
1973 fan_call_set_cooling_zone_sync (
1974     Fan *proxy,
1975     gint arg_cooling_zone,
1976     GCancellable *cancellable,
1977     GError **error)
1978 {
1979   GVariant *_ret;
1980   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
1981     "setCoolingZone",
1982     g_variant_new ("(i)",
1983                    arg_cooling_zone),
1984     G_DBUS_CALL_FLAGS_NONE,
1985     -1,
1986     cancellable,
1987     error);
1988   if (_ret == NULL)
1989     goto _out;
1990   g_variant_get (_ret,
1991                  "()");
1992   g_variant_unref (_ret);
1993 _out:
1994   return _ret != NULL;
1995 }
1996 
1997 /**
1998  * fan_call_get_speed:
1999  * @proxy: A #FanProxy.
2000  * @cancellable: (allow-none): A #GCancellable or %NULL.
2001  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
2002  * @user_data: User data to pass to @callback.
2003  *
2004  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Fan.getSpeed">getSpeed()</link> D-Bus method on @proxy.
2005  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
2006  * You can then call fan_call_get_speed_finish() to get the result of the operation.
2007  *
2008  * See fan_call_get_speed_sync() for the synchronous, blocking version of this method.
2009  */
2010 void
2011 fan_call_get_speed (
2012     Fan *proxy,
2013     GCancellable *cancellable,
2014     GAsyncReadyCallback callback,
2015     gpointer user_data)
2016 {
2017   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
2018     "getSpeed",
2019     g_variant_new ("()"),
2020     G_DBUS_CALL_FLAGS_NONE,
2021     -1,
2022     cancellable,
2023     callback,
2024     user_data);
2025 }
2026 
2027 /**
2028  * fan_call_get_speed_finish:
2029  * @proxy: A #FanProxy.
2030  * @out_speed: (out): Return location for return parameter or %NULL to ignore.
2031  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to fan_call_get_speed().
2032  * @error: Return location for error or %NULL.
2033  *
2034  * Finishes an operation started with fan_call_get_speed().
2035  *
2036  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
2037  */
2038 gboolean
2039 fan_call_get_speed_finish (
2040     Fan *proxy,
2041     gint *out_speed,
2042     GAsyncResult *res,
2043     GError **error)
2044 {
2045   GVariant *_ret;
2046   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
2047   if (_ret == NULL)
2048     goto _out;
2049   g_variant_get (_ret,
2050                  "(i)",
2051                  out_speed);
2052   g_variant_unref (_ret);
2053 _out:
2054   return _ret != NULL;
2055 }
2056 
2057 /**
2058  * fan_call_get_speed_sync:
2059  * @proxy: A #FanProxy.
2060  * @out_speed: (out): Return location for return parameter or %NULL to ignore.
2061  * @cancellable: (allow-none): A #GCancellable or %NULL.
2062  * @error: Return location for error or %NULL.
2063  *
2064  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Fan.getSpeed">getSpeed()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
2065  *
2066  * See fan_call_get_speed() for the asynchronous version of this method.
2067  *
2068  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
2069  */
2070 gboolean
2071 fan_call_get_speed_sync (
2072     Fan *proxy,
2073     gint *out_speed,
2074     GCancellable *cancellable,
2075     GError **error)
2076 {
2077   GVariant *_ret;
2078   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
2079     "getSpeed",
2080     g_variant_new ("()"),
2081     G_DBUS_CALL_FLAGS_NONE,
2082     -1,
2083     cancellable,
2084     error);
2085   if (_ret == NULL)
2086     goto _out;
2087   g_variant_get (_ret,
2088                  "(i)",
2089                  out_speed);
2090   g_variant_unref (_ret);
2091 _out:
2092   return _ret != NULL;
2093 }
2094 
2095 /**
2096  * fan_call_set_speed:
2097  * @proxy: A #FanProxy.
2098  * @arg_speed: Argument to pass with the method invocation.
2099  * @cancellable: (allow-none): A #GCancellable or %NULL.
2100  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
2101  * @user_data: User data to pass to @callback.
2102  *
2103  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Fan.setSpeed">setSpeed()</link> D-Bus method on @proxy.
2104  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
2105  * You can then call fan_call_set_speed_finish() to get the result of the operation.
2106  *
2107  * See fan_call_set_speed_sync() for the synchronous, blocking version of this method.
2108  */
2109 void
2110 fan_call_set_speed (
2111     Fan *proxy,
2112     gint arg_speed,
2113     GCancellable *cancellable,
2114     GAsyncReadyCallback callback,
2115     gpointer user_data)
2116 {
2117   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
2118     "setSpeed",
2119     g_variant_new ("(i)",
2120                    arg_speed),
2121     G_DBUS_CALL_FLAGS_NONE,
2122     -1,
2123     cancellable,
2124     callback,
2125     user_data);
2126 }
2127 
2128 /**
2129  * fan_call_set_speed_finish:
2130  * @proxy: A #FanProxy.
2131  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to fan_call_set_speed().
2132  * @error: Return location for error or %NULL.
2133  *
2134  * Finishes an operation started with fan_call_set_speed().
2135  *
2136  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
2137  */
2138 gboolean
2139 fan_call_set_speed_finish (
2140     Fan *proxy,
2141     GAsyncResult *res,
2142     GError **error)
2143 {
2144   GVariant *_ret;
2145   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
2146   if (_ret == NULL)
2147     goto _out;
2148   g_variant_get (_ret,
2149                  "()");
2150   g_variant_unref (_ret);
2151 _out:
2152   return _ret != NULL;
2153 }
2154 
2155 /**
2156  * fan_call_set_speed_sync:
2157  * @proxy: A #FanProxy.
2158  * @arg_speed: Argument to pass with the method invocation.
2159  * @cancellable: (allow-none): A #GCancellable or %NULL.
2160  * @error: Return location for error or %NULL.
2161  *
2162  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Fan.setSpeed">setSpeed()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
2163  *
2164  * See fan_call_set_speed() for the asynchronous version of this method.
2165  *
2166  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
2167  */
2168 gboolean
2169 fan_call_set_speed_sync (
2170     Fan *proxy,
2171     gint arg_speed,
2172     GCancellable *cancellable,
2173     GError **error)
2174 {
2175   GVariant *_ret;
2176   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
2177     "setSpeed",
2178     g_variant_new ("(i)",
2179                    arg_speed),
2180     G_DBUS_CALL_FLAGS_NONE,
2181     -1,
2182     cancellable,
2183     error);
2184   if (_ret == NULL)
2185     goto _out;
2186   g_variant_get (_ret,
2187                  "()");
2188   g_variant_unref (_ret);
2189 _out:
2190   return _ret != NULL;
2191 }
2192 
2193 /**
2194  * fan_complete_set_cooling_zone:
2195  * @object: A #Fan.
2196  * @invocation: (transfer full): A #GDBusMethodInvocation.
2197  *
2198  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Fan.setCoolingZone">setCoolingZone()</link> 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.
2199  *
2200  * This method will free @invocation, you cannot use it afterwards.
2201  */
2202 void
2203 fan_complete_set_cooling_zone (
2204     Fan *object,
2205     GDBusMethodInvocation *invocation)
2206 {
2207   g_dbus_method_invocation_return_value (invocation,
2208     g_variant_new ("()"));
2209 }
2210 
2211 /**
2212  * fan_complete_get_speed:
2213  * @object: A #Fan.
2214  * @invocation: (transfer full): A #GDBusMethodInvocation.
2215  * @speed: Parameter to return.
2216  *
2217  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Fan.getSpeed">getSpeed()</link> 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.
2218  *
2219  * This method will free @invocation, you cannot use it afterwards.
2220  */
2221 void
2222 fan_complete_get_speed (
2223     Fan *object,
2224     GDBusMethodInvocation *invocation,
2225     gint speed)
2226 {
2227   g_dbus_method_invocation_return_value (invocation,
2228     g_variant_new ("(i)",
2229                    speed));
2230 }
2231 
2232 /**
2233  * fan_complete_set_speed:
2234  * @object: A #Fan.
2235  * @invocation: (transfer full): A #GDBusMethodInvocation.
2236  *
2237  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Fan.setSpeed">setSpeed()</link> 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.
2238  *
2239  * This method will free @invocation, you cannot use it afterwards.
2240  */
2241 void
2242 fan_complete_set_speed (
2243     Fan *object,
2244     GDBusMethodInvocation *invocation)
2245 {
2246   g_dbus_method_invocation_return_value (invocation,
2247     g_variant_new ("()"));
2248 }
2249 
2250 /* ------------------------------------------------------------------------ */
2251 
2252 /**
2253  * FanProxy:
2254  *
2255  * The #FanProxy structure contains only private data and should only be accessed using the provided API.
2256  */
2257 
2258 /**
2259  * FanProxyClass:
2260  * @parent_class: The parent class.
2261  *
2262  * Class structure for #FanProxy.
2263  */
2264 
2265 struct _FanProxyPrivate
2266 {
2267   GData *qdata;
2268 };
2269 
2270 static void fan_proxy_iface_init (FanIface *iface);
2271 
2272 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
2273 G_DEFINE_TYPE_WITH_CODE (FanProxy, fan_proxy, G_TYPE_DBUS_PROXY,
2274                          G_ADD_PRIVATE (FanProxy)
2275                          G_IMPLEMENT_INTERFACE (TYPE_FAN, fan_proxy_iface_init));
2276 
2277 #else
2278 G_DEFINE_TYPE_WITH_CODE (FanProxy, fan_proxy, G_TYPE_DBUS_PROXY,
2279                          G_IMPLEMENT_INTERFACE (TYPE_FAN, fan_proxy_iface_init));
2280 
2281 #endif
2282 static void
2283 fan_proxy_finalize (GObject *object)
2284 {
2285   FanProxy *proxy = FAN_PROXY (object);
2286   g_datalist_clear (&proxy->priv->qdata);
2287   G_OBJECT_CLASS (fan_proxy_parent_class)->finalize (object);
2288 }
2289 
2290 static void
2291 fan_proxy_get_property (GObject      *object,
2292   guint         prop_id,
2293   GValue       *value,
2294   GParamSpec   *pspec G_GNUC_UNUSED)
2295 {
2296   const _ExtendedGDBusPropertyInfo *info;
2297   GVariant *variant;
2298   g_assert (prop_id != 0 && prop_id - 1 < 3);
2299   info = _fan_property_info_pointers[prop_id - 1];
2300   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
2301   if (info->use_gvariant)
2302     {
2303       g_value_set_variant (value, variant);
2304     }
2305   else
2306     {
2307       if (variant != NULL)
2308         g_dbus_gvariant_to_gvalue (variant, value);
2309     }
2310   if (variant != NULL)
2311     g_variant_unref (variant);
2312 }
2313 
2314 static void
2315 fan_proxy_set_property_cb (GDBusProxy *proxy,
2316   GAsyncResult *res,
2317   gpointer      user_data)
2318 {
2319   const _ExtendedGDBusPropertyInfo *info = user_data;
2320   GError *error;
2321   GVariant *_ret;
2322   error = NULL;
2323   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
2324   if (!_ret)
2325     {
2326       g_warning ("Error setting property '%s' on interface org.openbmc.Fan: %s (%s, %d)",
2327                  info->parent_struct.name,
2328                  error->message, g_quark_to_string (error->domain), error->code);
2329       g_error_free (error);
2330     }
2331   else
2332     {
2333       g_variant_unref (_ret);
2334     }
2335 }
2336 
2337 static void
2338 fan_proxy_set_property (GObject      *object,
2339   guint         prop_id,
2340   const GValue *value,
2341   GParamSpec   *pspec G_GNUC_UNUSED)
2342 {
2343   const _ExtendedGDBusPropertyInfo *info;
2344   GVariant *variant;
2345   g_assert (prop_id != 0 && prop_id - 1 < 3);
2346   info = _fan_property_info_pointers[prop_id - 1];
2347   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
2348   g_dbus_proxy_call (G_DBUS_PROXY (object),
2349     "org.freedesktop.DBus.Properties.Set",
2350     g_variant_new ("(ssv)", "org.openbmc.Fan", info->parent_struct.name, variant),
2351     G_DBUS_CALL_FLAGS_NONE,
2352     -1,
2353     NULL, (GAsyncReadyCallback) fan_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
2354   g_variant_unref (variant);
2355 }
2356 
2357 static void
2358 fan_proxy_g_signal (GDBusProxy *proxy,
2359   const gchar *sender_name G_GNUC_UNUSED,
2360   const gchar *signal_name,
2361   GVariant *parameters)
2362 {
2363   _ExtendedGDBusSignalInfo *info;
2364   GVariantIter iter;
2365   GVariant *child;
2366   GValue *paramv;
2367   guint num_params;
2368   guint n;
2369   guint signal_id;
2370   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_fan_interface_info.parent_struct, signal_name);
2371   if (info == NULL)
2372     return;
2373   num_params = g_variant_n_children (parameters);
2374   paramv = g_new0 (GValue, num_params + 1);
2375   g_value_init (&paramv[0], TYPE_FAN);
2376   g_value_set_object (&paramv[0], proxy);
2377   g_variant_iter_init (&iter, parameters);
2378   n = 1;
2379   while ((child = g_variant_iter_next_value (&iter)) != NULL)
2380     {
2381       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
2382       if (arg_info->use_gvariant)
2383         {
2384           g_value_init (&paramv[n], G_TYPE_VARIANT);
2385           g_value_set_variant (&paramv[n], child);
2386           n++;
2387         }
2388       else
2389         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
2390       g_variant_unref (child);
2391     }
2392   signal_id = g_signal_lookup (info->signal_name, TYPE_FAN);
2393   g_signal_emitv (paramv, signal_id, 0, NULL);
2394   for (n = 0; n < num_params + 1; n++)
2395     g_value_unset (&paramv[n]);
2396   g_free (paramv);
2397 }
2398 
2399 static void
2400 fan_proxy_g_properties_changed (GDBusProxy *_proxy,
2401   GVariant *changed_properties,
2402   const gchar *const *invalidated_properties)
2403 {
2404   FanProxy *proxy = FAN_PROXY (_proxy);
2405   guint n;
2406   const gchar *key;
2407   GVariantIter *iter;
2408   _ExtendedGDBusPropertyInfo *info;
2409   g_variant_get (changed_properties, "a{sv}", &iter);
2410   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
2411     {
2412       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_fan_interface_info.parent_struct, key);
2413       g_datalist_remove_data (&proxy->priv->qdata, key);
2414       if (info != NULL)
2415         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
2416     }
2417   g_variant_iter_free (iter);
2418   for (n = 0; invalidated_properties[n] != NULL; n++)
2419     {
2420       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_fan_interface_info.parent_struct, invalidated_properties[n]);
2421       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
2422       if (info != NULL)
2423         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
2424     }
2425 }
2426 
2427 static gint
2428 fan_proxy_get_speed (Fan *object)
2429 {
2430   FanProxy *proxy = FAN_PROXY (object);
2431   GVariant *variant;
2432   gint value = 0;
2433   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "speed");
2434   if (variant != NULL)
2435     {
2436       value = g_variant_get_int32 (variant);
2437       g_variant_unref (variant);
2438     }
2439   return value;
2440 }
2441 
2442 static gint
2443 fan_proxy_get_cooling_zone (Fan *object)
2444 {
2445   FanProxy *proxy = FAN_PROXY (object);
2446   GVariant *variant;
2447   gint value = 0;
2448   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "cooling_zone");
2449   if (variant != NULL)
2450     {
2451       value = g_variant_get_int32 (variant);
2452       g_variant_unref (variant);
2453     }
2454   return value;
2455 }
2456 
2457 static gint
2458 fan_proxy_get_pwm_num (Fan *object)
2459 {
2460   FanProxy *proxy = FAN_PROXY (object);
2461   GVariant *variant;
2462   gint value = 0;
2463   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "pwm_num");
2464   if (variant != NULL)
2465     {
2466       value = g_variant_get_int32 (variant);
2467       g_variant_unref (variant);
2468     }
2469   return value;
2470 }
2471 
2472 static void
2473 fan_proxy_init (FanProxy *proxy)
2474 {
2475 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
2476   proxy->priv = fan_proxy_get_instance_private (proxy);
2477 #else
2478   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_FAN_PROXY, FanProxyPrivate);
2479 #endif
2480 
2481   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), fan_interface_info ());
2482 }
2483 
2484 static void
2485 fan_proxy_class_init (FanProxyClass *klass)
2486 {
2487   GObjectClass *gobject_class;
2488   GDBusProxyClass *proxy_class;
2489 
2490   gobject_class = G_OBJECT_CLASS (klass);
2491   gobject_class->finalize     = fan_proxy_finalize;
2492   gobject_class->get_property = fan_proxy_get_property;
2493   gobject_class->set_property = fan_proxy_set_property;
2494 
2495   proxy_class = G_DBUS_PROXY_CLASS (klass);
2496   proxy_class->g_signal = fan_proxy_g_signal;
2497   proxy_class->g_properties_changed = fan_proxy_g_properties_changed;
2498 
2499   fan_override_properties (gobject_class, 1);
2500 
2501 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
2502   g_type_class_add_private (klass, sizeof (FanProxyPrivate));
2503 #endif
2504 }
2505 
2506 static void
2507 fan_proxy_iface_init (FanIface *iface)
2508 {
2509   iface->get_speed = fan_proxy_get_speed;
2510   iface->get_cooling_zone = fan_proxy_get_cooling_zone;
2511   iface->get_pwm_num = fan_proxy_get_pwm_num;
2512 }
2513 
2514 /**
2515  * fan_proxy_new:
2516  * @connection: A #GDBusConnection.
2517  * @flags: Flags from the #GDBusProxyFlags enumeration.
2518  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
2519  * @object_path: An object path.
2520  * @cancellable: (allow-none): A #GCancellable or %NULL.
2521  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
2522  * @user_data: User data to pass to @callback.
2523  *
2524  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Fan.top_of_page">org.openbmc.Fan</link>. See g_dbus_proxy_new() for more details.
2525  *
2526  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
2527  * You can then call fan_proxy_new_finish() to get the result of the operation.
2528  *
2529  * See fan_proxy_new_sync() for the synchronous, blocking version of this constructor.
2530  */
2531 void
2532 fan_proxy_new (
2533     GDBusConnection     *connection,
2534     GDBusProxyFlags      flags,
2535     const gchar         *name,
2536     const gchar         *object_path,
2537     GCancellable        *cancellable,
2538     GAsyncReadyCallback  callback,
2539     gpointer             user_data)
2540 {
2541   g_async_initable_new_async (TYPE_FAN_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.openbmc.Fan", NULL);
2542 }
2543 
2544 /**
2545  * fan_proxy_new_finish:
2546  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to fan_proxy_new().
2547  * @error: Return location for error or %NULL
2548  *
2549  * Finishes an operation started with fan_proxy_new().
2550  *
2551  * Returns: (transfer full) (type FanProxy): The constructed proxy object or %NULL if @error is set.
2552  */
2553 Fan *
2554 fan_proxy_new_finish (
2555     GAsyncResult        *res,
2556     GError             **error)
2557 {
2558   GObject *ret;
2559   GObject *source_object;
2560   source_object = g_async_result_get_source_object (res);
2561   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
2562   g_object_unref (source_object);
2563   if (ret != NULL)
2564     return FAN (ret);
2565   else
2566     return NULL;
2567 }
2568 
2569 /**
2570  * fan_proxy_new_sync:
2571  * @connection: A #GDBusConnection.
2572  * @flags: Flags from the #GDBusProxyFlags enumeration.
2573  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
2574  * @object_path: An object path.
2575  * @cancellable: (allow-none): A #GCancellable or %NULL.
2576  * @error: Return location for error or %NULL
2577  *
2578  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Fan.top_of_page">org.openbmc.Fan</link>. See g_dbus_proxy_new_sync() for more details.
2579  *
2580  * The calling thread is blocked until a reply is received.
2581  *
2582  * See fan_proxy_new() for the asynchronous version of this constructor.
2583  *
2584  * Returns: (transfer full) (type FanProxy): The constructed proxy object or %NULL if @error is set.
2585  */
2586 Fan *
2587 fan_proxy_new_sync (
2588     GDBusConnection     *connection,
2589     GDBusProxyFlags      flags,
2590     const gchar         *name,
2591     const gchar         *object_path,
2592     GCancellable        *cancellable,
2593     GError             **error)
2594 {
2595   GInitable *ret;
2596   ret = g_initable_new (TYPE_FAN_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.Fan", NULL);
2597   if (ret != NULL)
2598     return FAN (ret);
2599   else
2600     return NULL;
2601 }
2602 
2603 
2604 /**
2605  * fan_proxy_new_for_bus:
2606  * @bus_type: A #GBusType.
2607  * @flags: Flags from the #GDBusProxyFlags enumeration.
2608  * @name: A bus name (well-known or unique).
2609  * @object_path: An object path.
2610  * @cancellable: (allow-none): A #GCancellable or %NULL.
2611  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
2612  * @user_data: User data to pass to @callback.
2613  *
2614  * Like fan_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
2615  *
2616  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
2617  * You can then call fan_proxy_new_for_bus_finish() to get the result of the operation.
2618  *
2619  * See fan_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
2620  */
2621 void
2622 fan_proxy_new_for_bus (
2623     GBusType             bus_type,
2624     GDBusProxyFlags      flags,
2625     const gchar         *name,
2626     const gchar         *object_path,
2627     GCancellable        *cancellable,
2628     GAsyncReadyCallback  callback,
2629     gpointer             user_data)
2630 {
2631   g_async_initable_new_async (TYPE_FAN_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.openbmc.Fan", NULL);
2632 }
2633 
2634 /**
2635  * fan_proxy_new_for_bus_finish:
2636  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to fan_proxy_new_for_bus().
2637  * @error: Return location for error or %NULL
2638  *
2639  * Finishes an operation started with fan_proxy_new_for_bus().
2640  *
2641  * Returns: (transfer full) (type FanProxy): The constructed proxy object or %NULL if @error is set.
2642  */
2643 Fan *
2644 fan_proxy_new_for_bus_finish (
2645     GAsyncResult        *res,
2646     GError             **error)
2647 {
2648   GObject *ret;
2649   GObject *source_object;
2650   source_object = g_async_result_get_source_object (res);
2651   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
2652   g_object_unref (source_object);
2653   if (ret != NULL)
2654     return FAN (ret);
2655   else
2656     return NULL;
2657 }
2658 
2659 /**
2660  * fan_proxy_new_for_bus_sync:
2661  * @bus_type: A #GBusType.
2662  * @flags: Flags from the #GDBusProxyFlags enumeration.
2663  * @name: A bus name (well-known or unique).
2664  * @object_path: An object path.
2665  * @cancellable: (allow-none): A #GCancellable or %NULL.
2666  * @error: Return location for error or %NULL
2667  *
2668  * Like fan_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
2669  *
2670  * The calling thread is blocked until a reply is received.
2671  *
2672  * See fan_proxy_new_for_bus() for the asynchronous version of this constructor.
2673  *
2674  * Returns: (transfer full) (type FanProxy): The constructed proxy object or %NULL if @error is set.
2675  */
2676 Fan *
2677 fan_proxy_new_for_bus_sync (
2678     GBusType             bus_type,
2679     GDBusProxyFlags      flags,
2680     const gchar         *name,
2681     const gchar         *object_path,
2682     GCancellable        *cancellable,
2683     GError             **error)
2684 {
2685   GInitable *ret;
2686   ret = g_initable_new (TYPE_FAN_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.Fan", NULL);
2687   if (ret != NULL)
2688     return FAN (ret);
2689   else
2690     return NULL;
2691 }
2692 
2693 
2694 /* ------------------------------------------------------------------------ */
2695 
2696 /**
2697  * FanSkeleton:
2698  *
2699  * The #FanSkeleton structure contains only private data and should only be accessed using the provided API.
2700  */
2701 
2702 /**
2703  * FanSkeletonClass:
2704  * @parent_class: The parent class.
2705  *
2706  * Class structure for #FanSkeleton.
2707  */
2708 
2709 struct _FanSkeletonPrivate
2710 {
2711   GValue *properties;
2712   GList *changed_properties;
2713   GSource *changed_properties_idle_source;
2714   GMainContext *context;
2715   GMutex lock;
2716 };
2717 
2718 static void
2719 _fan_skeleton_handle_method_call (
2720   GDBusConnection *connection G_GNUC_UNUSED,
2721   const gchar *sender G_GNUC_UNUSED,
2722   const gchar *object_path G_GNUC_UNUSED,
2723   const gchar *interface_name,
2724   const gchar *method_name,
2725   GVariant *parameters,
2726   GDBusMethodInvocation *invocation,
2727   gpointer user_data)
2728 {
2729   FanSkeleton *skeleton = FAN_SKELETON (user_data);
2730   _ExtendedGDBusMethodInfo *info;
2731   GVariantIter iter;
2732   GVariant *child;
2733   GValue *paramv;
2734   guint num_params;
2735   guint num_extra;
2736   guint n;
2737   guint signal_id;
2738   GValue return_value = G_VALUE_INIT;
2739   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
2740   g_assert (info != NULL);
2741   num_params = g_variant_n_children (parameters);
2742   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
2743   n = 0;
2744   g_value_init (&paramv[n], TYPE_FAN);
2745   g_value_set_object (&paramv[n++], skeleton);
2746   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
2747   g_value_set_object (&paramv[n++], invocation);
2748   if (info->pass_fdlist)
2749     {
2750 #ifdef G_OS_UNIX
2751       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
2752       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
2753 #else
2754       g_assert_not_reached ();
2755 #endif
2756     }
2757   g_variant_iter_init (&iter, parameters);
2758   while ((child = g_variant_iter_next_value (&iter)) != NULL)
2759     {
2760       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
2761       if (arg_info->use_gvariant)
2762         {
2763           g_value_init (&paramv[n], G_TYPE_VARIANT);
2764           g_value_set_variant (&paramv[n], child);
2765           n++;
2766         }
2767       else
2768         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
2769       g_variant_unref (child);
2770     }
2771   signal_id = g_signal_lookup (info->signal_name, TYPE_FAN);
2772   g_value_init (&return_value, G_TYPE_BOOLEAN);
2773   g_signal_emitv (paramv, signal_id, 0, &return_value);
2774   if (!g_value_get_boolean (&return_value))
2775     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);
2776   g_value_unset (&return_value);
2777   for (n = 0; n < num_params + num_extra; n++)
2778     g_value_unset (&paramv[n]);
2779   g_free (paramv);
2780 }
2781 
2782 static GVariant *
2783 _fan_skeleton_handle_get_property (
2784   GDBusConnection *connection G_GNUC_UNUSED,
2785   const gchar *sender G_GNUC_UNUSED,
2786   const gchar *object_path G_GNUC_UNUSED,
2787   const gchar *interface_name G_GNUC_UNUSED,
2788   const gchar *property_name,
2789   GError **error,
2790   gpointer user_data)
2791 {
2792   FanSkeleton *skeleton = FAN_SKELETON (user_data);
2793   GValue value = G_VALUE_INIT;
2794   GParamSpec *pspec;
2795   _ExtendedGDBusPropertyInfo *info;
2796   GVariant *ret;
2797   ret = NULL;
2798   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_fan_interface_info.parent_struct, property_name);
2799   g_assert (info != NULL);
2800   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
2801   if (pspec == NULL)
2802     {
2803       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
2804     }
2805   else
2806     {
2807       g_value_init (&value, pspec->value_type);
2808       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
2809       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
2810       g_value_unset (&value);
2811     }
2812   return ret;
2813 }
2814 
2815 static gboolean
2816 _fan_skeleton_handle_set_property (
2817   GDBusConnection *connection G_GNUC_UNUSED,
2818   const gchar *sender G_GNUC_UNUSED,
2819   const gchar *object_path G_GNUC_UNUSED,
2820   const gchar *interface_name G_GNUC_UNUSED,
2821   const gchar *property_name,
2822   GVariant *variant,
2823   GError **error,
2824   gpointer user_data)
2825 {
2826   FanSkeleton *skeleton = FAN_SKELETON (user_data);
2827   GValue value = G_VALUE_INIT;
2828   GParamSpec *pspec;
2829   _ExtendedGDBusPropertyInfo *info;
2830   gboolean ret;
2831   ret = FALSE;
2832   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_fan_interface_info.parent_struct, property_name);
2833   g_assert (info != NULL);
2834   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
2835   if (pspec == NULL)
2836     {
2837       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
2838     }
2839   else
2840     {
2841       if (info->use_gvariant)
2842         g_value_set_variant (&value, variant);
2843       else
2844         g_dbus_gvariant_to_gvalue (variant, &value);
2845       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
2846       g_value_unset (&value);
2847       ret = TRUE;
2848     }
2849   return ret;
2850 }
2851 
2852 static const GDBusInterfaceVTable _fan_skeleton_vtable =
2853 {
2854   _fan_skeleton_handle_method_call,
2855   _fan_skeleton_handle_get_property,
2856   _fan_skeleton_handle_set_property,
2857   {NULL}
2858 };
2859 
2860 static GDBusInterfaceInfo *
2861 fan_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
2862 {
2863   return fan_interface_info ();
2864 }
2865 
2866 static GDBusInterfaceVTable *
2867 fan_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
2868 {
2869   return (GDBusInterfaceVTable *) &_fan_skeleton_vtable;
2870 }
2871 
2872 static GVariant *
2873 fan_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
2874 {
2875   FanSkeleton *skeleton = FAN_SKELETON (_skeleton);
2876 
2877   GVariantBuilder builder;
2878   guint n;
2879   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
2880   if (_fan_interface_info.parent_struct.properties == NULL)
2881     goto out;
2882   for (n = 0; _fan_interface_info.parent_struct.properties[n] != NULL; n++)
2883     {
2884       GDBusPropertyInfo *info = _fan_interface_info.parent_struct.properties[n];
2885       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
2886         {
2887           GVariant *value;
2888           value = _fan_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.openbmc.Fan", info->name, NULL, skeleton);
2889           if (value != NULL)
2890             {
2891               g_variant_take_ref (value);
2892               g_variant_builder_add (&builder, "{sv}", info->name, value);
2893               g_variant_unref (value);
2894             }
2895         }
2896     }
2897 out:
2898   return g_variant_builder_end (&builder);
2899 }
2900 
2901 static gboolean _fan_emit_changed (gpointer user_data);
2902 
2903 static void
2904 fan_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
2905 {
2906   FanSkeleton *skeleton = FAN_SKELETON (_skeleton);
2907   gboolean emit_changed = FALSE;
2908 
2909   g_mutex_lock (&skeleton->priv->lock);
2910   if (skeleton->priv->changed_properties_idle_source != NULL)
2911     {
2912       g_source_destroy (skeleton->priv->changed_properties_idle_source);
2913       skeleton->priv->changed_properties_idle_source = NULL;
2914       emit_changed = TRUE;
2915     }
2916   g_mutex_unlock (&skeleton->priv->lock);
2917 
2918   if (emit_changed)
2919     _fan_emit_changed (skeleton);
2920 }
2921 
2922 static void
2923 _fan_on_signal_speed_changed (
2924     Fan *object,
2925     gint arg_speed)
2926 {
2927   FanSkeleton *skeleton = FAN_SKELETON (object);
2928 
2929   GList      *connections, *l;
2930   GVariant   *signal_variant;
2931   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
2932 
2933   signal_variant = g_variant_ref_sink (g_variant_new ("(i)",
2934                    arg_speed));
2935   for (l = connections; l != NULL; l = l->next)
2936     {
2937       GDBusConnection *connection = l->data;
2938       g_dbus_connection_emit_signal (connection,
2939         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Fan", "SpeedChanged",
2940         signal_variant, NULL);
2941     }
2942   g_variant_unref (signal_variant);
2943   g_list_free_full (connections, g_object_unref);
2944 }
2945 
2946 static void
2947 _fan_on_signal_tach_error (
2948     Fan *object)
2949 {
2950   FanSkeleton *skeleton = FAN_SKELETON (object);
2951 
2952   GList      *connections, *l;
2953   GVariant   *signal_variant;
2954   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
2955 
2956   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
2957   for (l = connections; l != NULL; l = l->next)
2958     {
2959       GDBusConnection *connection = l->data;
2960       g_dbus_connection_emit_signal (connection,
2961         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Fan", "TachError",
2962         signal_variant, NULL);
2963     }
2964   g_variant_unref (signal_variant);
2965   g_list_free_full (connections, g_object_unref);
2966 }
2967 
2968 static void fan_skeleton_iface_init (FanIface *iface);
2969 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
2970 G_DEFINE_TYPE_WITH_CODE (FanSkeleton, fan_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
2971                          G_ADD_PRIVATE (FanSkeleton)
2972                          G_IMPLEMENT_INTERFACE (TYPE_FAN, fan_skeleton_iface_init));
2973 
2974 #else
2975 G_DEFINE_TYPE_WITH_CODE (FanSkeleton, fan_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
2976                          G_IMPLEMENT_INTERFACE (TYPE_FAN, fan_skeleton_iface_init));
2977 
2978 #endif
2979 static void
2980 fan_skeleton_finalize (GObject *object)
2981 {
2982   FanSkeleton *skeleton = FAN_SKELETON (object);
2983   guint n;
2984   for (n = 0; n < 3; n++)
2985     g_value_unset (&skeleton->priv->properties[n]);
2986   g_free (skeleton->priv->properties);
2987   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
2988   if (skeleton->priv->changed_properties_idle_source != NULL)
2989     g_source_destroy (skeleton->priv->changed_properties_idle_source);
2990   g_main_context_unref (skeleton->priv->context);
2991   g_mutex_clear (&skeleton->priv->lock);
2992   G_OBJECT_CLASS (fan_skeleton_parent_class)->finalize (object);
2993 }
2994 
2995 static void
2996 fan_skeleton_get_property (GObject      *object,
2997   guint         prop_id,
2998   GValue       *value,
2999   GParamSpec   *pspec G_GNUC_UNUSED)
3000 {
3001   FanSkeleton *skeleton = FAN_SKELETON (object);
3002   g_assert (prop_id != 0 && prop_id - 1 < 3);
3003   g_mutex_lock (&skeleton->priv->lock);
3004   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
3005   g_mutex_unlock (&skeleton->priv->lock);
3006 }
3007 
3008 static gboolean
3009 _fan_emit_changed (gpointer user_data)
3010 {
3011   FanSkeleton *skeleton = FAN_SKELETON (user_data);
3012   GList *l;
3013   GVariantBuilder builder;
3014   GVariantBuilder invalidated_builder;
3015   guint num_changes;
3016 
3017   g_mutex_lock (&skeleton->priv->lock);
3018   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
3019   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
3020   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
3021     {
3022       ChangedProperty *cp = l->data;
3023       GVariant *variant;
3024       const GValue *cur_value;
3025 
3026       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
3027       if (!_g_value_equal (cur_value, &cp->orig_value))
3028         {
3029           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
3030           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
3031           g_variant_unref (variant);
3032           num_changes++;
3033         }
3034     }
3035   if (num_changes > 0)
3036     {
3037       GList *connections, *ll;
3038       GVariant *signal_variant;
3039       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.Fan",
3040                                            &builder, &invalidated_builder));
3041       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
3042       for (ll = connections; ll != NULL; ll = ll->next)
3043         {
3044           GDBusConnection *connection = ll->data;
3045 
3046           g_dbus_connection_emit_signal (connection,
3047                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
3048                                          "org.freedesktop.DBus.Properties",
3049                                          "PropertiesChanged",
3050                                          signal_variant,
3051                                          NULL);
3052         }
3053       g_variant_unref (signal_variant);
3054       g_list_free_full (connections, g_object_unref);
3055     }
3056   else
3057     {
3058       g_variant_builder_clear (&builder);
3059       g_variant_builder_clear (&invalidated_builder);
3060     }
3061   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
3062   skeleton->priv->changed_properties = NULL;
3063   skeleton->priv->changed_properties_idle_source = NULL;
3064   g_mutex_unlock (&skeleton->priv->lock);
3065   return FALSE;
3066 }
3067 
3068 static void
3069 _fan_schedule_emit_changed (FanSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
3070 {
3071   ChangedProperty *cp;
3072   GList *l;
3073   cp = NULL;
3074   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
3075     {
3076       ChangedProperty *i_cp = l->data;
3077       if (i_cp->info == info)
3078         {
3079           cp = i_cp;
3080           break;
3081         }
3082     }
3083   if (cp == NULL)
3084     {
3085       cp = g_new0 (ChangedProperty, 1);
3086       cp->prop_id = prop_id;
3087       cp->info = info;
3088       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
3089       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
3090       g_value_copy (orig_value, &cp->orig_value);
3091     }
3092 }
3093 
3094 static void
3095 fan_skeleton_notify (GObject      *object,
3096   GParamSpec *pspec G_GNUC_UNUSED)
3097 {
3098   FanSkeleton *skeleton = FAN_SKELETON (object);
3099   g_mutex_lock (&skeleton->priv->lock);
3100   if (skeleton->priv->changed_properties != NULL &&
3101       skeleton->priv->changed_properties_idle_source == NULL)
3102     {
3103       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
3104       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
3105       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _fan_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
3106       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
3107       g_source_unref (skeleton->priv->changed_properties_idle_source);
3108     }
3109   g_mutex_unlock (&skeleton->priv->lock);
3110 }
3111 
3112 static void
3113 fan_skeleton_set_property (GObject      *object,
3114   guint         prop_id,
3115   const GValue *value,
3116   GParamSpec   *pspec)
3117 {
3118   FanSkeleton *skeleton = FAN_SKELETON (object);
3119   g_assert (prop_id != 0 && prop_id - 1 < 3);
3120   g_mutex_lock (&skeleton->priv->lock);
3121   g_object_freeze_notify (object);
3122   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
3123     {
3124       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
3125         _fan_schedule_emit_changed (skeleton, _fan_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
3126       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
3127       g_object_notify_by_pspec (object, pspec);
3128     }
3129   g_mutex_unlock (&skeleton->priv->lock);
3130   g_object_thaw_notify (object);
3131 }
3132 
3133 static void
3134 fan_skeleton_init (FanSkeleton *skeleton)
3135 {
3136 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
3137   skeleton->priv = fan_skeleton_get_instance_private (skeleton);
3138 #else
3139   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_FAN_SKELETON, FanSkeletonPrivate);
3140 #endif
3141 
3142   g_mutex_init (&skeleton->priv->lock);
3143   skeleton->priv->context = g_main_context_ref_thread_default ();
3144   skeleton->priv->properties = g_new0 (GValue, 3);
3145   g_value_init (&skeleton->priv->properties[0], G_TYPE_INT);
3146   g_value_init (&skeleton->priv->properties[1], G_TYPE_INT);
3147   g_value_init (&skeleton->priv->properties[2], G_TYPE_INT);
3148 }
3149 
3150 static gint
3151 fan_skeleton_get_speed (Fan *object)
3152 {
3153   FanSkeleton *skeleton = FAN_SKELETON (object);
3154   gint value;
3155   g_mutex_lock (&skeleton->priv->lock);
3156   value = g_value_get_int (&(skeleton->priv->properties[0]));
3157   g_mutex_unlock (&skeleton->priv->lock);
3158   return value;
3159 }
3160 
3161 static gint
3162 fan_skeleton_get_cooling_zone (Fan *object)
3163 {
3164   FanSkeleton *skeleton = FAN_SKELETON (object);
3165   gint value;
3166   g_mutex_lock (&skeleton->priv->lock);
3167   value = g_value_get_int (&(skeleton->priv->properties[1]));
3168   g_mutex_unlock (&skeleton->priv->lock);
3169   return value;
3170 }
3171 
3172 static gint
3173 fan_skeleton_get_pwm_num (Fan *object)
3174 {
3175   FanSkeleton *skeleton = FAN_SKELETON (object);
3176   gint value;
3177   g_mutex_lock (&skeleton->priv->lock);
3178   value = g_value_get_int (&(skeleton->priv->properties[2]));
3179   g_mutex_unlock (&skeleton->priv->lock);
3180   return value;
3181 }
3182 
3183 static void
3184 fan_skeleton_class_init (FanSkeletonClass *klass)
3185 {
3186   GObjectClass *gobject_class;
3187   GDBusInterfaceSkeletonClass *skeleton_class;
3188 
3189   gobject_class = G_OBJECT_CLASS (klass);
3190   gobject_class->finalize = fan_skeleton_finalize;
3191   gobject_class->get_property = fan_skeleton_get_property;
3192   gobject_class->set_property = fan_skeleton_set_property;
3193   gobject_class->notify       = fan_skeleton_notify;
3194 
3195 
3196   fan_override_properties (gobject_class, 1);
3197 
3198   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
3199   skeleton_class->get_info = fan_skeleton_dbus_interface_get_info;
3200   skeleton_class->get_properties = fan_skeleton_dbus_interface_get_properties;
3201   skeleton_class->flush = fan_skeleton_dbus_interface_flush;
3202   skeleton_class->get_vtable = fan_skeleton_dbus_interface_get_vtable;
3203 
3204 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
3205   g_type_class_add_private (klass, sizeof (FanSkeletonPrivate));
3206 #endif
3207 }
3208 
3209 static void
3210 fan_skeleton_iface_init (FanIface *iface)
3211 {
3212   iface->speed_changed = _fan_on_signal_speed_changed;
3213   iface->tach_error = _fan_on_signal_tach_error;
3214   iface->get_speed = fan_skeleton_get_speed;
3215   iface->get_cooling_zone = fan_skeleton_get_cooling_zone;
3216   iface->get_pwm_num = fan_skeleton_get_pwm_num;
3217 }
3218 
3219 /**
3220  * fan_skeleton_new:
3221  *
3222  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Fan.top_of_page">org.openbmc.Fan</link>.
3223  *
3224  * Returns: (transfer full) (type FanSkeleton): The skeleton object.
3225  */
3226 Fan *
3227 fan_skeleton_new (void)
3228 {
3229   return FAN (g_object_new (TYPE_FAN_SKELETON, NULL));
3230 }
3231 
3232 /* ------------------------------------------------------------------------
3233  * Code for interface org.openbmc.SensorValue
3234  * ------------------------------------------------------------------------
3235  */
3236 
3237 /**
3238  * SECTION:SensorValue
3239  * @title: SensorValue
3240  * @short_description: Generated C code for the org.openbmc.SensorValue D-Bus interface
3241  *
3242  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-SensorValue.top_of_page">org.openbmc.SensorValue</link> D-Bus interface in C.
3243  */
3244 
3245 /* ---- Introspection data for org.openbmc.SensorValue ---- */
3246 
3247 static const _ExtendedGDBusMethodInfo _sensor_value_method_info_init =
3248 {
3249   {
3250     -1,
3251     (gchar *) "init",
3252     NULL,
3253     NULL,
3254     NULL
3255   },
3256   "handle-init",
3257   FALSE
3258 };
3259 
3260 static const _ExtendedGDBusArgInfo _sensor_value_method_info_get_value_OUT_ARG_value =
3261 {
3262   {
3263     -1,
3264     (gchar *) "value",
3265     (gchar *) "v",
3266     NULL
3267   },
3268   FALSE
3269 };
3270 
3271 static const _ExtendedGDBusArgInfo * const _sensor_value_method_info_get_value_OUT_ARG_pointers[] =
3272 {
3273   &_sensor_value_method_info_get_value_OUT_ARG_value,
3274   NULL
3275 };
3276 
3277 static const _ExtendedGDBusMethodInfo _sensor_value_method_info_get_value =
3278 {
3279   {
3280     -1,
3281     (gchar *) "getValue",
3282     NULL,
3283     (GDBusArgInfo **) &_sensor_value_method_info_get_value_OUT_ARG_pointers,
3284     NULL
3285   },
3286   "handle-get-value",
3287   FALSE
3288 };
3289 
3290 static const _ExtendedGDBusArgInfo _sensor_value_method_info_set_value_IN_ARG_value =
3291 {
3292   {
3293     -1,
3294     (gchar *) "value",
3295     (gchar *) "v",
3296     NULL
3297   },
3298   FALSE
3299 };
3300 
3301 static const _ExtendedGDBusArgInfo * const _sensor_value_method_info_set_value_IN_ARG_pointers[] =
3302 {
3303   &_sensor_value_method_info_set_value_IN_ARG_value,
3304   NULL
3305 };
3306 
3307 static const _ExtendedGDBusMethodInfo _sensor_value_method_info_set_value =
3308 {
3309   {
3310     -1,
3311     (gchar *) "setValue",
3312     (GDBusArgInfo **) &_sensor_value_method_info_set_value_IN_ARG_pointers,
3313     NULL,
3314     NULL
3315   },
3316   "handle-set-value",
3317   FALSE
3318 };
3319 
3320 static const _ExtendedGDBusMethodInfo * const _sensor_value_method_info_pointers[] =
3321 {
3322   &_sensor_value_method_info_init,
3323   &_sensor_value_method_info_get_value,
3324   &_sensor_value_method_info_set_value,
3325   NULL
3326 };
3327 
3328 static const _ExtendedGDBusArgInfo _sensor_value_signal_info_changed_ARG_value =
3329 {
3330   {
3331     -1,
3332     (gchar *) "value",
3333     (gchar *) "v",
3334     NULL
3335   },
3336   FALSE
3337 };
3338 
3339 static const _ExtendedGDBusArgInfo _sensor_value_signal_info_changed_ARG_units =
3340 {
3341   {
3342     -1,
3343     (gchar *) "units",
3344     (gchar *) "s",
3345     NULL
3346   },
3347   FALSE
3348 };
3349 
3350 static const _ExtendedGDBusArgInfo * const _sensor_value_signal_info_changed_ARG_pointers[] =
3351 {
3352   &_sensor_value_signal_info_changed_ARG_value,
3353   &_sensor_value_signal_info_changed_ARG_units,
3354   NULL
3355 };
3356 
3357 static const _ExtendedGDBusSignalInfo _sensor_value_signal_info_changed =
3358 {
3359   {
3360     -1,
3361     (gchar *) "Changed",
3362     (GDBusArgInfo **) &_sensor_value_signal_info_changed_ARG_pointers,
3363     NULL
3364   },
3365   "changed"
3366 };
3367 
3368 static const _ExtendedGDBusSignalInfo _sensor_value_signal_info_error =
3369 {
3370   {
3371     -1,
3372     (gchar *) "Error",
3373     NULL,
3374     NULL
3375   },
3376   "error"
3377 };
3378 
3379 static const _ExtendedGDBusArgInfo _sensor_value_signal_info_heartbeat_ARG_bus_name =
3380 {
3381   {
3382     -1,
3383     (gchar *) "bus_name",
3384     (gchar *) "s",
3385     NULL
3386   },
3387   FALSE
3388 };
3389 
3390 static const _ExtendedGDBusArgInfo * const _sensor_value_signal_info_heartbeat_ARG_pointers[] =
3391 {
3392   &_sensor_value_signal_info_heartbeat_ARG_bus_name,
3393   NULL
3394 };
3395 
3396 static const _ExtendedGDBusSignalInfo _sensor_value_signal_info_heartbeat =
3397 {
3398   {
3399     -1,
3400     (gchar *) "Heartbeat",
3401     (GDBusArgInfo **) &_sensor_value_signal_info_heartbeat_ARG_pointers,
3402     NULL
3403   },
3404   "heartbeat"
3405 };
3406 
3407 static const _ExtendedGDBusSignalInfo * const _sensor_value_signal_info_pointers[] =
3408 {
3409   &_sensor_value_signal_info_changed,
3410   &_sensor_value_signal_info_error,
3411   &_sensor_value_signal_info_heartbeat,
3412   NULL
3413 };
3414 
3415 static const _ExtendedGDBusPropertyInfo _sensor_value_property_info_value =
3416 {
3417   {
3418     -1,
3419     (gchar *) "value",
3420     (gchar *) "v",
3421     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
3422     NULL
3423   },
3424   "value",
3425   FALSE
3426 };
3427 
3428 static const _ExtendedGDBusPropertyInfo _sensor_value_property_info_units =
3429 {
3430   {
3431     -1,
3432     (gchar *) "units",
3433     (gchar *) "s",
3434     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
3435     NULL
3436   },
3437   "units",
3438   FALSE
3439 };
3440 
3441 static const _ExtendedGDBusPropertyInfo _sensor_value_property_info_poll_interval =
3442 {
3443   {
3444     -1,
3445     (gchar *) "poll_interval",
3446     (gchar *) "i",
3447     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
3448     NULL
3449   },
3450   "poll-interval",
3451   FALSE
3452 };
3453 
3454 static const _ExtendedGDBusPropertyInfo _sensor_value_property_info_heatbeat =
3455 {
3456   {
3457     -1,
3458     (gchar *) "heatbeat",
3459     (gchar *) "i",
3460     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
3461     NULL
3462   },
3463   "heatbeat",
3464   FALSE
3465 };
3466 
3467 static const _ExtendedGDBusPropertyInfo _sensor_value_property_info_settable =
3468 {
3469   {
3470     -1,
3471     (gchar *) "settable",
3472     (gchar *) "b",
3473     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
3474     NULL
3475   },
3476   "settable",
3477   FALSE
3478 };
3479 
3480 static const _ExtendedGDBusPropertyInfo * const _sensor_value_property_info_pointers[] =
3481 {
3482   &_sensor_value_property_info_value,
3483   &_sensor_value_property_info_units,
3484   &_sensor_value_property_info_poll_interval,
3485   &_sensor_value_property_info_heatbeat,
3486   &_sensor_value_property_info_settable,
3487   NULL
3488 };
3489 
3490 static const _ExtendedGDBusInterfaceInfo _sensor_value_interface_info =
3491 {
3492   {
3493     -1,
3494     (gchar *) "org.openbmc.SensorValue",
3495     (GDBusMethodInfo **) &_sensor_value_method_info_pointers,
3496     (GDBusSignalInfo **) &_sensor_value_signal_info_pointers,
3497     (GDBusPropertyInfo **) &_sensor_value_property_info_pointers,
3498     NULL
3499   },
3500   "sensor-value",
3501 };
3502 
3503 
3504 /**
3505  * sensor_value_interface_info:
3506  *
3507  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-SensorValue.top_of_page">org.openbmc.SensorValue</link> D-Bus interface.
3508  *
3509  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
3510  */
3511 GDBusInterfaceInfo *
3512 sensor_value_interface_info (void)
3513 {
3514   return (GDBusInterfaceInfo *) &_sensor_value_interface_info.parent_struct;
3515 }
3516 
3517 /**
3518  * sensor_value_override_properties:
3519  * @klass: The class structure for a #GObject<!-- -->-derived class.
3520  * @property_id_begin: The property id to assign to the first overridden property.
3521  *
3522  * Overrides all #GObject properties in the #SensorValue interface for a concrete class.
3523  * The properties are overridden in the order they are defined.
3524  *
3525  * Returns: The last property id.
3526  */
3527 guint
3528 sensor_value_override_properties (GObjectClass *klass, guint property_id_begin)
3529 {
3530   g_object_class_override_property (klass, property_id_begin++, "value");
3531   g_object_class_override_property (klass, property_id_begin++, "units");
3532   g_object_class_override_property (klass, property_id_begin++, "poll-interval");
3533   g_object_class_override_property (klass, property_id_begin++, "heatbeat");
3534   g_object_class_override_property (klass, property_id_begin++, "settable");
3535   return property_id_begin - 1;
3536 }
3537 
3538 
3539 
3540 /**
3541  * SensorValue:
3542  *
3543  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorValue.top_of_page">org.openbmc.SensorValue</link>.
3544  */
3545 
3546 /**
3547  * SensorValueIface:
3548  * @parent_iface: The parent interface.
3549  * @handle_get_value: Handler for the #SensorValue::handle-get-value signal.
3550  * @handle_init: Handler for the #SensorValue::handle-init signal.
3551  * @handle_set_value: Handler for the #SensorValue::handle-set-value signal.
3552  * @get_heatbeat: Getter for the #SensorValue:heatbeat property.
3553  * @get_poll_interval: Getter for the #SensorValue:poll-interval property.
3554  * @get_settable: Getter for the #SensorValue:settable property.
3555  * @get_units: Getter for the #SensorValue:units property.
3556  * @get_value: Getter for the #SensorValue:value property.
3557  * @changed: Handler for the #SensorValue::changed signal.
3558  * @error: Handler for the #SensorValue::error signal.
3559  * @heartbeat: Handler for the #SensorValue::heartbeat signal.
3560  *
3561  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorValue.top_of_page">org.openbmc.SensorValue</link>.
3562  */
3563 
3564 typedef SensorValueIface SensorValueInterface;
3565 G_DEFINE_INTERFACE (SensorValue, sensor_value, G_TYPE_OBJECT);
3566 
3567 static void
3568 sensor_value_default_init (SensorValueIface *iface)
3569 {
3570   /* GObject signals for incoming D-Bus method calls: */
3571   /**
3572    * SensorValue::handle-init:
3573    * @object: A #SensorValue.
3574    * @invocation: A #GDBusMethodInvocation.
3575    *
3576    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-SensorValue.init">init()</link> D-Bus method.
3577    *
3578    * 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 sensor_value_complete_init() 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.
3579    *
3580    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
3581    */
3582   g_signal_new ("handle-init",
3583     G_TYPE_FROM_INTERFACE (iface),
3584     G_SIGNAL_RUN_LAST,
3585     G_STRUCT_OFFSET (SensorValueIface, handle_init),
3586     g_signal_accumulator_true_handled,
3587     NULL,
3588     g_cclosure_marshal_generic,
3589     G_TYPE_BOOLEAN,
3590     1,
3591     G_TYPE_DBUS_METHOD_INVOCATION);
3592 
3593   /**
3594    * SensorValue::handle-get-value:
3595    * @object: A #SensorValue.
3596    * @invocation: A #GDBusMethodInvocation.
3597    *
3598    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-SensorValue.getValue">getValue()</link> D-Bus method.
3599    *
3600    * 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 sensor_value_complete_get_value() 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.
3601    *
3602    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
3603    */
3604   g_signal_new ("handle-get-value",
3605     G_TYPE_FROM_INTERFACE (iface),
3606     G_SIGNAL_RUN_LAST,
3607     G_STRUCT_OFFSET (SensorValueIface, handle_get_value),
3608     g_signal_accumulator_true_handled,
3609     NULL,
3610     g_cclosure_marshal_generic,
3611     G_TYPE_BOOLEAN,
3612     1,
3613     G_TYPE_DBUS_METHOD_INVOCATION);
3614 
3615   /**
3616    * SensorValue::handle-set-value:
3617    * @object: A #SensorValue.
3618    * @invocation: A #GDBusMethodInvocation.
3619    * @arg_value: Argument passed by remote caller.
3620    *
3621    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-SensorValue.setValue">setValue()</link> D-Bus method.
3622    *
3623    * 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 sensor_value_complete_set_value() 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.
3624    *
3625    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
3626    */
3627   g_signal_new ("handle-set-value",
3628     G_TYPE_FROM_INTERFACE (iface),
3629     G_SIGNAL_RUN_LAST,
3630     G_STRUCT_OFFSET (SensorValueIface, handle_set_value),
3631     g_signal_accumulator_true_handled,
3632     NULL,
3633     g_cclosure_marshal_generic,
3634     G_TYPE_BOOLEAN,
3635     2,
3636     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT);
3637 
3638   /* GObject signals for received D-Bus signals: */
3639   /**
3640    * SensorValue::changed:
3641    * @object: A #SensorValue.
3642    * @arg_value: Argument.
3643    * @arg_units: Argument.
3644    *
3645    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-SensorValue.Changed">"Changed"</link> is received.
3646    *
3647    * 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.
3648    */
3649   g_signal_new ("changed",
3650     G_TYPE_FROM_INTERFACE (iface),
3651     G_SIGNAL_RUN_LAST,
3652     G_STRUCT_OFFSET (SensorValueIface, changed),
3653     NULL,
3654     NULL,
3655     g_cclosure_marshal_generic,
3656     G_TYPE_NONE,
3657     2, G_TYPE_VARIANT, G_TYPE_STRING);
3658 
3659   /**
3660    * SensorValue::error:
3661    * @object: A #SensorValue.
3662    *
3663    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-SensorValue.Error">"Error"</link> is received.
3664    *
3665    * 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.
3666    */
3667   g_signal_new ("error",
3668     G_TYPE_FROM_INTERFACE (iface),
3669     G_SIGNAL_RUN_LAST,
3670     G_STRUCT_OFFSET (SensorValueIface, error),
3671     NULL,
3672     NULL,
3673     g_cclosure_marshal_generic,
3674     G_TYPE_NONE,
3675     0);
3676 
3677   /**
3678    * SensorValue::heartbeat:
3679    * @object: A #SensorValue.
3680    * @arg_bus_name: Argument.
3681    *
3682    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-SensorValue.Heartbeat">"Heartbeat"</link> is received.
3683    *
3684    * 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.
3685    */
3686   g_signal_new ("heartbeat",
3687     G_TYPE_FROM_INTERFACE (iface),
3688     G_SIGNAL_RUN_LAST,
3689     G_STRUCT_OFFSET (SensorValueIface, heartbeat),
3690     NULL,
3691     NULL,
3692     g_cclosure_marshal_generic,
3693     G_TYPE_NONE,
3694     1, G_TYPE_STRING);
3695 
3696   /* GObject properties for D-Bus properties: */
3697   /**
3698    * SensorValue:value:
3699    *
3700    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorValue.value">"value"</link>.
3701    *
3702    * 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.
3703    */
3704   g_object_interface_install_property (iface,
3705     g_param_spec_variant ("value", "value", "value", G_VARIANT_TYPE ("v"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
3706   /**
3707    * SensorValue:units:
3708    *
3709    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorValue.units">"units"</link>.
3710    *
3711    * 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.
3712    */
3713   g_object_interface_install_property (iface,
3714     g_param_spec_string ("units", "units", "units", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
3715   /**
3716    * SensorValue:poll-interval:
3717    *
3718    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorValue.poll_interval">"poll_interval"</link>.
3719    *
3720    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
3721    */
3722   g_object_interface_install_property (iface,
3723     g_param_spec_int ("poll-interval", "poll_interval", "poll_interval", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
3724   /**
3725    * SensorValue:heatbeat:
3726    *
3727    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorValue.heatbeat">"heatbeat"</link>.
3728    *
3729    * 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.
3730    */
3731   g_object_interface_install_property (iface,
3732     g_param_spec_int ("heatbeat", "heatbeat", "heatbeat", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
3733   /**
3734    * SensorValue:settable:
3735    *
3736    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorValue.settable">"settable"</link>.
3737    *
3738    * 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.
3739    */
3740   g_object_interface_install_property (iface,
3741     g_param_spec_boolean ("settable", "settable", "settable", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
3742 }
3743 
3744 /**
3745  * sensor_value_get_value: (skip)
3746  * @object: A #SensorValue.
3747  *
3748  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorValue.value">"value"</link> D-Bus property.
3749  *
3750  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
3751  *
3752  * <warning>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 sensor_value_dup_value() if on another thread.</warning>
3753  *
3754  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
3755  */
3756 GVariant *
3757 sensor_value_get_value (SensorValue *object)
3758 {
3759   return SENSOR_VALUE_GET_IFACE (object)->get_value (object);
3760 }
3761 
3762 /**
3763  * sensor_value_dup_value: (skip)
3764  * @object: A #SensorValue.
3765  *
3766  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-SensorValue.value">"value"</link> D-Bus property.
3767  *
3768  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
3769  *
3770  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref().
3771  */
3772 GVariant *
3773 sensor_value_dup_value (SensorValue *object)
3774 {
3775   GVariant *value;
3776   g_object_get (G_OBJECT (object), "value", &value, NULL);
3777   return value;
3778 }
3779 
3780 /**
3781  * sensor_value_set_value: (skip)
3782  * @object: A #SensorValue.
3783  * @value: The value to set.
3784  *
3785  * Sets the <link linkend="gdbus-property-org-openbmc-SensorValue.value">"value"</link> D-Bus property to @value.
3786  *
3787  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
3788  */
3789 void
3790 sensor_value_set_value (SensorValue *object, GVariant *value)
3791 {
3792   g_object_set (G_OBJECT (object), "value", value, NULL);
3793 }
3794 
3795 /**
3796  * sensor_value_get_units: (skip)
3797  * @object: A #SensorValue.
3798  *
3799  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorValue.units">"units"</link> D-Bus property.
3800  *
3801  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
3802  *
3803  * <warning>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 sensor_value_dup_units() if on another thread.</warning>
3804  *
3805  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
3806  */
3807 const gchar *
3808 sensor_value_get_units (SensorValue *object)
3809 {
3810   return SENSOR_VALUE_GET_IFACE (object)->get_units (object);
3811 }
3812 
3813 /**
3814  * sensor_value_dup_units: (skip)
3815  * @object: A #SensorValue.
3816  *
3817  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-SensorValue.units">"units"</link> D-Bus property.
3818  *
3819  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
3820  *
3821  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
3822  */
3823 gchar *
3824 sensor_value_dup_units (SensorValue *object)
3825 {
3826   gchar *value;
3827   g_object_get (G_OBJECT (object), "units", &value, NULL);
3828   return value;
3829 }
3830 
3831 /**
3832  * sensor_value_set_units: (skip)
3833  * @object: A #SensorValue.
3834  * @value: The value to set.
3835  *
3836  * Sets the <link linkend="gdbus-property-org-openbmc-SensorValue.units">"units"</link> D-Bus property to @value.
3837  *
3838  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
3839  */
3840 void
3841 sensor_value_set_units (SensorValue *object, const gchar *value)
3842 {
3843   g_object_set (G_OBJECT (object), "units", value, NULL);
3844 }
3845 
3846 /**
3847  * sensor_value_get_poll_interval: (skip)
3848  * @object: A #SensorValue.
3849  *
3850  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorValue.poll_interval">"poll_interval"</link> D-Bus property.
3851  *
3852  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
3853  *
3854  * Returns: The property value.
3855  */
3856 gint
3857 sensor_value_get_poll_interval (SensorValue *object)
3858 {
3859   return SENSOR_VALUE_GET_IFACE (object)->get_poll_interval (object);
3860 }
3861 
3862 /**
3863  * sensor_value_set_poll_interval: (skip)
3864  * @object: A #SensorValue.
3865  * @value: The value to set.
3866  *
3867  * Sets the <link linkend="gdbus-property-org-openbmc-SensorValue.poll_interval">"poll_interval"</link> D-Bus property to @value.
3868  *
3869  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
3870  */
3871 void
3872 sensor_value_set_poll_interval (SensorValue *object, gint value)
3873 {
3874   g_object_set (G_OBJECT (object), "poll-interval", value, NULL);
3875 }
3876 
3877 /**
3878  * sensor_value_get_heatbeat: (skip)
3879  * @object: A #SensorValue.
3880  *
3881  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorValue.heatbeat">"heatbeat"</link> D-Bus property.
3882  *
3883  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
3884  *
3885  * Returns: The property value.
3886  */
3887 gint
3888 sensor_value_get_heatbeat (SensorValue *object)
3889 {
3890   return SENSOR_VALUE_GET_IFACE (object)->get_heatbeat (object);
3891 }
3892 
3893 /**
3894  * sensor_value_set_heatbeat: (skip)
3895  * @object: A #SensorValue.
3896  * @value: The value to set.
3897  *
3898  * Sets the <link linkend="gdbus-property-org-openbmc-SensorValue.heatbeat">"heatbeat"</link> D-Bus property to @value.
3899  *
3900  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
3901  */
3902 void
3903 sensor_value_set_heatbeat (SensorValue *object, gint value)
3904 {
3905   g_object_set (G_OBJECT (object), "heatbeat", value, NULL);
3906 }
3907 
3908 /**
3909  * sensor_value_get_settable: (skip)
3910  * @object: A #SensorValue.
3911  *
3912  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorValue.settable">"settable"</link> D-Bus property.
3913  *
3914  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
3915  *
3916  * Returns: The property value.
3917  */
3918 gboolean
3919 sensor_value_get_settable (SensorValue *object)
3920 {
3921   return SENSOR_VALUE_GET_IFACE (object)->get_settable (object);
3922 }
3923 
3924 /**
3925  * sensor_value_set_settable: (skip)
3926  * @object: A #SensorValue.
3927  * @value: The value to set.
3928  *
3929  * Sets the <link linkend="gdbus-property-org-openbmc-SensorValue.settable">"settable"</link> D-Bus property to @value.
3930  *
3931  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
3932  */
3933 void
3934 sensor_value_set_settable (SensorValue *object, gboolean value)
3935 {
3936   g_object_set (G_OBJECT (object), "settable", value, NULL);
3937 }
3938 
3939 /**
3940  * sensor_value_emit_changed:
3941  * @object: A #SensorValue.
3942  * @arg_value: Argument to pass with the signal.
3943  * @arg_units: Argument to pass with the signal.
3944  *
3945  * Emits the <link linkend="gdbus-signal-org-openbmc-SensorValue.Changed">"Changed"</link> D-Bus signal.
3946  */
3947 void
3948 sensor_value_emit_changed (
3949     SensorValue *object,
3950     GVariant *arg_value,
3951     const gchar *arg_units)
3952 {
3953   g_signal_emit_by_name (object, "changed", arg_value, arg_units);
3954 }
3955 
3956 /**
3957  * sensor_value_emit_error:
3958  * @object: A #SensorValue.
3959  *
3960  * Emits the <link linkend="gdbus-signal-org-openbmc-SensorValue.Error">"Error"</link> D-Bus signal.
3961  */
3962 void
3963 sensor_value_emit_error (
3964     SensorValue *object)
3965 {
3966   g_signal_emit_by_name (object, "error");
3967 }
3968 
3969 /**
3970  * sensor_value_emit_heartbeat:
3971  * @object: A #SensorValue.
3972  * @arg_bus_name: Argument to pass with the signal.
3973  *
3974  * Emits the <link linkend="gdbus-signal-org-openbmc-SensorValue.Heartbeat">"Heartbeat"</link> D-Bus signal.
3975  */
3976 void
3977 sensor_value_emit_heartbeat (
3978     SensorValue *object,
3979     const gchar *arg_bus_name)
3980 {
3981   g_signal_emit_by_name (object, "heartbeat", arg_bus_name);
3982 }
3983 
3984 /**
3985  * sensor_value_call_init:
3986  * @proxy: A #SensorValueProxy.
3987  * @cancellable: (allow-none): A #GCancellable or %NULL.
3988  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
3989  * @user_data: User data to pass to @callback.
3990  *
3991  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-SensorValue.init">init()</link> D-Bus method on @proxy.
3992  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
3993  * You can then call sensor_value_call_init_finish() to get the result of the operation.
3994  *
3995  * See sensor_value_call_init_sync() for the synchronous, blocking version of this method.
3996  */
3997 void
3998 sensor_value_call_init (
3999     SensorValue *proxy,
4000     GCancellable *cancellable,
4001     GAsyncReadyCallback callback,
4002     gpointer user_data)
4003 {
4004   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
4005     "init",
4006     g_variant_new ("()"),
4007     G_DBUS_CALL_FLAGS_NONE,
4008     -1,
4009     cancellable,
4010     callback,
4011     user_data);
4012 }
4013 
4014 /**
4015  * sensor_value_call_init_finish:
4016  * @proxy: A #SensorValueProxy.
4017  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_value_call_init().
4018  * @error: Return location for error or %NULL.
4019  *
4020  * Finishes an operation started with sensor_value_call_init().
4021  *
4022  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
4023  */
4024 gboolean
4025 sensor_value_call_init_finish (
4026     SensorValue *proxy,
4027     GAsyncResult *res,
4028     GError **error)
4029 {
4030   GVariant *_ret;
4031   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
4032   if (_ret == NULL)
4033     goto _out;
4034   g_variant_get (_ret,
4035                  "()");
4036   g_variant_unref (_ret);
4037 _out:
4038   return _ret != NULL;
4039 }
4040 
4041 /**
4042  * sensor_value_call_init_sync:
4043  * @proxy: A #SensorValueProxy.
4044  * @cancellable: (allow-none): A #GCancellable or %NULL.
4045  * @error: Return location for error or %NULL.
4046  *
4047  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-SensorValue.init">init()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
4048  *
4049  * See sensor_value_call_init() for the asynchronous version of this method.
4050  *
4051  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
4052  */
4053 gboolean
4054 sensor_value_call_init_sync (
4055     SensorValue *proxy,
4056     GCancellable *cancellable,
4057     GError **error)
4058 {
4059   GVariant *_ret;
4060   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
4061     "init",
4062     g_variant_new ("()"),
4063     G_DBUS_CALL_FLAGS_NONE,
4064     -1,
4065     cancellable,
4066     error);
4067   if (_ret == NULL)
4068     goto _out;
4069   g_variant_get (_ret,
4070                  "()");
4071   g_variant_unref (_ret);
4072 _out:
4073   return _ret != NULL;
4074 }
4075 
4076 /**
4077  * sensor_value_call_get_value:
4078  * @proxy: A #SensorValueProxy.
4079  * @cancellable: (allow-none): A #GCancellable or %NULL.
4080  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
4081  * @user_data: User data to pass to @callback.
4082  *
4083  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-SensorValue.getValue">getValue()</link> D-Bus method on @proxy.
4084  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
4085  * You can then call sensor_value_call_get_value_finish() to get the result of the operation.
4086  *
4087  * See sensor_value_call_get_value_sync() for the synchronous, blocking version of this method.
4088  */
4089 void
4090 sensor_value_call_get_value (
4091     SensorValue *proxy,
4092     GCancellable *cancellable,
4093     GAsyncReadyCallback callback,
4094     gpointer user_data)
4095 {
4096   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
4097     "getValue",
4098     g_variant_new ("()"),
4099     G_DBUS_CALL_FLAGS_NONE,
4100     -1,
4101     cancellable,
4102     callback,
4103     user_data);
4104 }
4105 
4106 /**
4107  * sensor_value_call_get_value_finish:
4108  * @proxy: A #SensorValueProxy.
4109  * @out_value: (out): Return location for return parameter or %NULL to ignore.
4110  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_value_call_get_value().
4111  * @error: Return location for error or %NULL.
4112  *
4113  * Finishes an operation started with sensor_value_call_get_value().
4114  *
4115  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
4116  */
4117 gboolean
4118 sensor_value_call_get_value_finish (
4119     SensorValue *proxy,
4120     GVariant **out_value,
4121     GAsyncResult *res,
4122     GError **error)
4123 {
4124   GVariant *_ret;
4125   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
4126   if (_ret == NULL)
4127     goto _out;
4128   g_variant_get (_ret,
4129                  "(@v)",
4130                  out_value);
4131   g_variant_unref (_ret);
4132 _out:
4133   return _ret != NULL;
4134 }
4135 
4136 /**
4137  * sensor_value_call_get_value_sync:
4138  * @proxy: A #SensorValueProxy.
4139  * @out_value: (out): Return location for return parameter or %NULL to ignore.
4140  * @cancellable: (allow-none): A #GCancellable or %NULL.
4141  * @error: Return location for error or %NULL.
4142  *
4143  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-SensorValue.getValue">getValue()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
4144  *
4145  * See sensor_value_call_get_value() for the asynchronous version of this method.
4146  *
4147  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
4148  */
4149 gboolean
4150 sensor_value_call_get_value_sync (
4151     SensorValue *proxy,
4152     GVariant **out_value,
4153     GCancellable *cancellable,
4154     GError **error)
4155 {
4156   GVariant *_ret;
4157   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
4158     "getValue",
4159     g_variant_new ("()"),
4160     G_DBUS_CALL_FLAGS_NONE,
4161     -1,
4162     cancellable,
4163     error);
4164   if (_ret == NULL)
4165     goto _out;
4166   g_variant_get (_ret,
4167                  "(@v)",
4168                  out_value);
4169   g_variant_unref (_ret);
4170 _out:
4171   return _ret != NULL;
4172 }
4173 
4174 /**
4175  * sensor_value_call_set_value:
4176  * @proxy: A #SensorValueProxy.
4177  * @arg_value: Argument to pass with the method invocation.
4178  * @cancellable: (allow-none): A #GCancellable or %NULL.
4179  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
4180  * @user_data: User data to pass to @callback.
4181  *
4182  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-SensorValue.setValue">setValue()</link> D-Bus method on @proxy.
4183  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
4184  * You can then call sensor_value_call_set_value_finish() to get the result of the operation.
4185  *
4186  * See sensor_value_call_set_value_sync() for the synchronous, blocking version of this method.
4187  */
4188 void
4189 sensor_value_call_set_value (
4190     SensorValue *proxy,
4191     GVariant *arg_value,
4192     GCancellable *cancellable,
4193     GAsyncReadyCallback callback,
4194     gpointer user_data)
4195 {
4196   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
4197     "setValue",
4198     g_variant_new ("(@v)",
4199                    arg_value),
4200     G_DBUS_CALL_FLAGS_NONE,
4201     -1,
4202     cancellable,
4203     callback,
4204     user_data);
4205 }
4206 
4207 /**
4208  * sensor_value_call_set_value_finish:
4209  * @proxy: A #SensorValueProxy.
4210  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_value_call_set_value().
4211  * @error: Return location for error or %NULL.
4212  *
4213  * Finishes an operation started with sensor_value_call_set_value().
4214  *
4215  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
4216  */
4217 gboolean
4218 sensor_value_call_set_value_finish (
4219     SensorValue *proxy,
4220     GAsyncResult *res,
4221     GError **error)
4222 {
4223   GVariant *_ret;
4224   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
4225   if (_ret == NULL)
4226     goto _out;
4227   g_variant_get (_ret,
4228                  "()");
4229   g_variant_unref (_ret);
4230 _out:
4231   return _ret != NULL;
4232 }
4233 
4234 /**
4235  * sensor_value_call_set_value_sync:
4236  * @proxy: A #SensorValueProxy.
4237  * @arg_value: Argument to pass with the method invocation.
4238  * @cancellable: (allow-none): A #GCancellable or %NULL.
4239  * @error: Return location for error or %NULL.
4240  *
4241  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-SensorValue.setValue">setValue()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
4242  *
4243  * See sensor_value_call_set_value() for the asynchronous version of this method.
4244  *
4245  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
4246  */
4247 gboolean
4248 sensor_value_call_set_value_sync (
4249     SensorValue *proxy,
4250     GVariant *arg_value,
4251     GCancellable *cancellable,
4252     GError **error)
4253 {
4254   GVariant *_ret;
4255   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
4256     "setValue",
4257     g_variant_new ("(@v)",
4258                    arg_value),
4259     G_DBUS_CALL_FLAGS_NONE,
4260     -1,
4261     cancellable,
4262     error);
4263   if (_ret == NULL)
4264     goto _out;
4265   g_variant_get (_ret,
4266                  "()");
4267   g_variant_unref (_ret);
4268 _out:
4269   return _ret != NULL;
4270 }
4271 
4272 /**
4273  * sensor_value_complete_init:
4274  * @object: A #SensorValue.
4275  * @invocation: (transfer full): A #GDBusMethodInvocation.
4276  *
4277  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-SensorValue.init">init()</link> 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.
4278  *
4279  * This method will free @invocation, you cannot use it afterwards.
4280  */
4281 void
4282 sensor_value_complete_init (
4283     SensorValue *object,
4284     GDBusMethodInvocation *invocation)
4285 {
4286   g_dbus_method_invocation_return_value (invocation,
4287     g_variant_new ("()"));
4288 }
4289 
4290 /**
4291  * sensor_value_complete_get_value:
4292  * @object: A #SensorValue.
4293  * @invocation: (transfer full): A #GDBusMethodInvocation.
4294  * @value: Parameter to return.
4295  *
4296  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-SensorValue.getValue">getValue()</link> 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.
4297  *
4298  * This method will free @invocation, you cannot use it afterwards.
4299  */
4300 void
4301 sensor_value_complete_get_value (
4302     SensorValue *object,
4303     GDBusMethodInvocation *invocation,
4304     GVariant *value)
4305 {
4306   g_dbus_method_invocation_return_value (invocation,
4307     g_variant_new ("(@v)",
4308                    value));
4309 }
4310 
4311 /**
4312  * sensor_value_complete_set_value:
4313  * @object: A #SensorValue.
4314  * @invocation: (transfer full): A #GDBusMethodInvocation.
4315  *
4316  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-SensorValue.setValue">setValue()</link> 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.
4317  *
4318  * This method will free @invocation, you cannot use it afterwards.
4319  */
4320 void
4321 sensor_value_complete_set_value (
4322     SensorValue *object,
4323     GDBusMethodInvocation *invocation)
4324 {
4325   g_dbus_method_invocation_return_value (invocation,
4326     g_variant_new ("()"));
4327 }
4328 
4329 /* ------------------------------------------------------------------------ */
4330 
4331 /**
4332  * SensorValueProxy:
4333  *
4334  * The #SensorValueProxy structure contains only private data and should only be accessed using the provided API.
4335  */
4336 
4337 /**
4338  * SensorValueProxyClass:
4339  * @parent_class: The parent class.
4340  *
4341  * Class structure for #SensorValueProxy.
4342  */
4343 
4344 struct _SensorValueProxyPrivate
4345 {
4346   GData *qdata;
4347 };
4348 
4349 static void sensor_value_proxy_iface_init (SensorValueIface *iface);
4350 
4351 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
4352 G_DEFINE_TYPE_WITH_CODE (SensorValueProxy, sensor_value_proxy, G_TYPE_DBUS_PROXY,
4353                          G_ADD_PRIVATE (SensorValueProxy)
4354                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_VALUE, sensor_value_proxy_iface_init));
4355 
4356 #else
4357 G_DEFINE_TYPE_WITH_CODE (SensorValueProxy, sensor_value_proxy, G_TYPE_DBUS_PROXY,
4358                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_VALUE, sensor_value_proxy_iface_init));
4359 
4360 #endif
4361 static void
4362 sensor_value_proxy_finalize (GObject *object)
4363 {
4364   SensorValueProxy *proxy = SENSOR_VALUE_PROXY (object);
4365   g_datalist_clear (&proxy->priv->qdata);
4366   G_OBJECT_CLASS (sensor_value_proxy_parent_class)->finalize (object);
4367 }
4368 
4369 static void
4370 sensor_value_proxy_get_property (GObject      *object,
4371   guint         prop_id,
4372   GValue       *value,
4373   GParamSpec   *pspec G_GNUC_UNUSED)
4374 {
4375   const _ExtendedGDBusPropertyInfo *info;
4376   GVariant *variant;
4377   g_assert (prop_id != 0 && prop_id - 1 < 5);
4378   info = _sensor_value_property_info_pointers[prop_id - 1];
4379   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
4380   if (info->use_gvariant)
4381     {
4382       g_value_set_variant (value, variant);
4383     }
4384   else
4385     {
4386       if (variant != NULL)
4387         g_dbus_gvariant_to_gvalue (variant, value);
4388     }
4389   if (variant != NULL)
4390     g_variant_unref (variant);
4391 }
4392 
4393 static void
4394 sensor_value_proxy_set_property_cb (GDBusProxy *proxy,
4395   GAsyncResult *res,
4396   gpointer      user_data)
4397 {
4398   const _ExtendedGDBusPropertyInfo *info = user_data;
4399   GError *error;
4400   GVariant *_ret;
4401   error = NULL;
4402   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
4403   if (!_ret)
4404     {
4405       g_warning ("Error setting property '%s' on interface org.openbmc.SensorValue: %s (%s, %d)",
4406                  info->parent_struct.name,
4407                  error->message, g_quark_to_string (error->domain), error->code);
4408       g_error_free (error);
4409     }
4410   else
4411     {
4412       g_variant_unref (_ret);
4413     }
4414 }
4415 
4416 static void
4417 sensor_value_proxy_set_property (GObject      *object,
4418   guint         prop_id,
4419   const GValue *value,
4420   GParamSpec   *pspec G_GNUC_UNUSED)
4421 {
4422   const _ExtendedGDBusPropertyInfo *info;
4423   GVariant *variant;
4424   g_assert (prop_id != 0 && prop_id - 1 < 5);
4425   info = _sensor_value_property_info_pointers[prop_id - 1];
4426   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
4427   g_dbus_proxy_call (G_DBUS_PROXY (object),
4428     "org.freedesktop.DBus.Properties.Set",
4429     g_variant_new ("(ssv)", "org.openbmc.SensorValue", info->parent_struct.name, variant),
4430     G_DBUS_CALL_FLAGS_NONE,
4431     -1,
4432     NULL, (GAsyncReadyCallback) sensor_value_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
4433   g_variant_unref (variant);
4434 }
4435 
4436 static void
4437 sensor_value_proxy_g_signal (GDBusProxy *proxy,
4438   const gchar *sender_name G_GNUC_UNUSED,
4439   const gchar *signal_name,
4440   GVariant *parameters)
4441 {
4442   _ExtendedGDBusSignalInfo *info;
4443   GVariantIter iter;
4444   GVariant *child;
4445   GValue *paramv;
4446   guint num_params;
4447   guint n;
4448   guint signal_id;
4449   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_sensor_value_interface_info.parent_struct, signal_name);
4450   if (info == NULL)
4451     return;
4452   num_params = g_variant_n_children (parameters);
4453   paramv = g_new0 (GValue, num_params + 1);
4454   g_value_init (&paramv[0], TYPE_SENSOR_VALUE);
4455   g_value_set_object (&paramv[0], proxy);
4456   g_variant_iter_init (&iter, parameters);
4457   n = 1;
4458   while ((child = g_variant_iter_next_value (&iter)) != NULL)
4459     {
4460       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
4461       if (arg_info->use_gvariant)
4462         {
4463           g_value_init (&paramv[n], G_TYPE_VARIANT);
4464           g_value_set_variant (&paramv[n], child);
4465           n++;
4466         }
4467       else
4468         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
4469       g_variant_unref (child);
4470     }
4471   signal_id = g_signal_lookup (info->signal_name, TYPE_SENSOR_VALUE);
4472   g_signal_emitv (paramv, signal_id, 0, NULL);
4473   for (n = 0; n < num_params + 1; n++)
4474     g_value_unset (&paramv[n]);
4475   g_free (paramv);
4476 }
4477 
4478 static void
4479 sensor_value_proxy_g_properties_changed (GDBusProxy *_proxy,
4480   GVariant *changed_properties,
4481   const gchar *const *invalidated_properties)
4482 {
4483   SensorValueProxy *proxy = SENSOR_VALUE_PROXY (_proxy);
4484   guint n;
4485   const gchar *key;
4486   GVariantIter *iter;
4487   _ExtendedGDBusPropertyInfo *info;
4488   g_variant_get (changed_properties, "a{sv}", &iter);
4489   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
4490     {
4491       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_value_interface_info.parent_struct, key);
4492       g_datalist_remove_data (&proxy->priv->qdata, key);
4493       if (info != NULL)
4494         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
4495     }
4496   g_variant_iter_free (iter);
4497   for (n = 0; invalidated_properties[n] != NULL; n++)
4498     {
4499       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_value_interface_info.parent_struct, invalidated_properties[n]);
4500       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
4501       if (info != NULL)
4502         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
4503     }
4504 }
4505 
4506 static GVariant *
4507 sensor_value_proxy_get_value (SensorValue *object)
4508 {
4509   SensorValueProxy *proxy = SENSOR_VALUE_PROXY (object);
4510   GVariant *variant;
4511   GVariant *value = NULL;
4512   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "value");
4513   value = variant;
4514   if (variant != NULL)
4515     g_variant_unref (variant);
4516   return value;
4517 }
4518 
4519 static const gchar *
4520 sensor_value_proxy_get_units (SensorValue *object)
4521 {
4522   SensorValueProxy *proxy = SENSOR_VALUE_PROXY (object);
4523   GVariant *variant;
4524   const gchar *value = NULL;
4525   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "units");
4526   if (variant != NULL)
4527     {
4528       value = g_variant_get_string (variant, NULL);
4529       g_variant_unref (variant);
4530     }
4531   return value;
4532 }
4533 
4534 static gint
4535 sensor_value_proxy_get_poll_interval (SensorValue *object)
4536 {
4537   SensorValueProxy *proxy = SENSOR_VALUE_PROXY (object);
4538   GVariant *variant;
4539   gint value = 0;
4540   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "poll_interval");
4541   if (variant != NULL)
4542     {
4543       value = g_variant_get_int32 (variant);
4544       g_variant_unref (variant);
4545     }
4546   return value;
4547 }
4548 
4549 static gint
4550 sensor_value_proxy_get_heatbeat (SensorValue *object)
4551 {
4552   SensorValueProxy *proxy = SENSOR_VALUE_PROXY (object);
4553   GVariant *variant;
4554   gint value = 0;
4555   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "heatbeat");
4556   if (variant != NULL)
4557     {
4558       value = g_variant_get_int32 (variant);
4559       g_variant_unref (variant);
4560     }
4561   return value;
4562 }
4563 
4564 static gboolean
4565 sensor_value_proxy_get_settable (SensorValue *object)
4566 {
4567   SensorValueProxy *proxy = SENSOR_VALUE_PROXY (object);
4568   GVariant *variant;
4569   gboolean value = 0;
4570   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "settable");
4571   if (variant != NULL)
4572     {
4573       value = g_variant_get_boolean (variant);
4574       g_variant_unref (variant);
4575     }
4576   return value;
4577 }
4578 
4579 static void
4580 sensor_value_proxy_init (SensorValueProxy *proxy)
4581 {
4582 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
4583   proxy->priv = sensor_value_proxy_get_instance_private (proxy);
4584 #else
4585   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_SENSOR_VALUE_PROXY, SensorValueProxyPrivate);
4586 #endif
4587 
4588   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), sensor_value_interface_info ());
4589 }
4590 
4591 static void
4592 sensor_value_proxy_class_init (SensorValueProxyClass *klass)
4593 {
4594   GObjectClass *gobject_class;
4595   GDBusProxyClass *proxy_class;
4596 
4597   gobject_class = G_OBJECT_CLASS (klass);
4598   gobject_class->finalize     = sensor_value_proxy_finalize;
4599   gobject_class->get_property = sensor_value_proxy_get_property;
4600   gobject_class->set_property = sensor_value_proxy_set_property;
4601 
4602   proxy_class = G_DBUS_PROXY_CLASS (klass);
4603   proxy_class->g_signal = sensor_value_proxy_g_signal;
4604   proxy_class->g_properties_changed = sensor_value_proxy_g_properties_changed;
4605 
4606   sensor_value_override_properties (gobject_class, 1);
4607 
4608 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
4609   g_type_class_add_private (klass, sizeof (SensorValueProxyPrivate));
4610 #endif
4611 }
4612 
4613 static void
4614 sensor_value_proxy_iface_init (SensorValueIface *iface)
4615 {
4616   iface->get_value = sensor_value_proxy_get_value;
4617   iface->get_units = sensor_value_proxy_get_units;
4618   iface->get_poll_interval = sensor_value_proxy_get_poll_interval;
4619   iface->get_heatbeat = sensor_value_proxy_get_heatbeat;
4620   iface->get_settable = sensor_value_proxy_get_settable;
4621 }
4622 
4623 /**
4624  * sensor_value_proxy_new:
4625  * @connection: A #GDBusConnection.
4626  * @flags: Flags from the #GDBusProxyFlags enumeration.
4627  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
4628  * @object_path: An object path.
4629  * @cancellable: (allow-none): A #GCancellable or %NULL.
4630  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
4631  * @user_data: User data to pass to @callback.
4632  *
4633  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorValue.top_of_page">org.openbmc.SensorValue</link>. See g_dbus_proxy_new() for more details.
4634  *
4635  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
4636  * You can then call sensor_value_proxy_new_finish() to get the result of the operation.
4637  *
4638  * See sensor_value_proxy_new_sync() for the synchronous, blocking version of this constructor.
4639  */
4640 void
4641 sensor_value_proxy_new (
4642     GDBusConnection     *connection,
4643     GDBusProxyFlags      flags,
4644     const gchar         *name,
4645     const gchar         *object_path,
4646     GCancellable        *cancellable,
4647     GAsyncReadyCallback  callback,
4648     gpointer             user_data)
4649 {
4650   g_async_initable_new_async (TYPE_SENSOR_VALUE_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.openbmc.SensorValue", NULL);
4651 }
4652 
4653 /**
4654  * sensor_value_proxy_new_finish:
4655  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_value_proxy_new().
4656  * @error: Return location for error or %NULL
4657  *
4658  * Finishes an operation started with sensor_value_proxy_new().
4659  *
4660  * Returns: (transfer full) (type SensorValueProxy): The constructed proxy object or %NULL if @error is set.
4661  */
4662 SensorValue *
4663 sensor_value_proxy_new_finish (
4664     GAsyncResult        *res,
4665     GError             **error)
4666 {
4667   GObject *ret;
4668   GObject *source_object;
4669   source_object = g_async_result_get_source_object (res);
4670   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
4671   g_object_unref (source_object);
4672   if (ret != NULL)
4673     return SENSOR_VALUE (ret);
4674   else
4675     return NULL;
4676 }
4677 
4678 /**
4679  * sensor_value_proxy_new_sync:
4680  * @connection: A #GDBusConnection.
4681  * @flags: Flags from the #GDBusProxyFlags enumeration.
4682  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
4683  * @object_path: An object path.
4684  * @cancellable: (allow-none): A #GCancellable or %NULL.
4685  * @error: Return location for error or %NULL
4686  *
4687  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorValue.top_of_page">org.openbmc.SensorValue</link>. See g_dbus_proxy_new_sync() for more details.
4688  *
4689  * The calling thread is blocked until a reply is received.
4690  *
4691  * See sensor_value_proxy_new() for the asynchronous version of this constructor.
4692  *
4693  * Returns: (transfer full) (type SensorValueProxy): The constructed proxy object or %NULL if @error is set.
4694  */
4695 SensorValue *
4696 sensor_value_proxy_new_sync (
4697     GDBusConnection     *connection,
4698     GDBusProxyFlags      flags,
4699     const gchar         *name,
4700     const gchar         *object_path,
4701     GCancellable        *cancellable,
4702     GError             **error)
4703 {
4704   GInitable *ret;
4705   ret = g_initable_new (TYPE_SENSOR_VALUE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.SensorValue", NULL);
4706   if (ret != NULL)
4707     return SENSOR_VALUE (ret);
4708   else
4709     return NULL;
4710 }
4711 
4712 
4713 /**
4714  * sensor_value_proxy_new_for_bus:
4715  * @bus_type: A #GBusType.
4716  * @flags: Flags from the #GDBusProxyFlags enumeration.
4717  * @name: A bus name (well-known or unique).
4718  * @object_path: An object path.
4719  * @cancellable: (allow-none): A #GCancellable or %NULL.
4720  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
4721  * @user_data: User data to pass to @callback.
4722  *
4723  * Like sensor_value_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
4724  *
4725  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
4726  * You can then call sensor_value_proxy_new_for_bus_finish() to get the result of the operation.
4727  *
4728  * See sensor_value_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
4729  */
4730 void
4731 sensor_value_proxy_new_for_bus (
4732     GBusType             bus_type,
4733     GDBusProxyFlags      flags,
4734     const gchar         *name,
4735     const gchar         *object_path,
4736     GCancellable        *cancellable,
4737     GAsyncReadyCallback  callback,
4738     gpointer             user_data)
4739 {
4740   g_async_initable_new_async (TYPE_SENSOR_VALUE_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.openbmc.SensorValue", NULL);
4741 }
4742 
4743 /**
4744  * sensor_value_proxy_new_for_bus_finish:
4745  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_value_proxy_new_for_bus().
4746  * @error: Return location for error or %NULL
4747  *
4748  * Finishes an operation started with sensor_value_proxy_new_for_bus().
4749  *
4750  * Returns: (transfer full) (type SensorValueProxy): The constructed proxy object or %NULL if @error is set.
4751  */
4752 SensorValue *
4753 sensor_value_proxy_new_for_bus_finish (
4754     GAsyncResult        *res,
4755     GError             **error)
4756 {
4757   GObject *ret;
4758   GObject *source_object;
4759   source_object = g_async_result_get_source_object (res);
4760   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
4761   g_object_unref (source_object);
4762   if (ret != NULL)
4763     return SENSOR_VALUE (ret);
4764   else
4765     return NULL;
4766 }
4767 
4768 /**
4769  * sensor_value_proxy_new_for_bus_sync:
4770  * @bus_type: A #GBusType.
4771  * @flags: Flags from the #GDBusProxyFlags enumeration.
4772  * @name: A bus name (well-known or unique).
4773  * @object_path: An object path.
4774  * @cancellable: (allow-none): A #GCancellable or %NULL.
4775  * @error: Return location for error or %NULL
4776  *
4777  * Like sensor_value_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
4778  *
4779  * The calling thread is blocked until a reply is received.
4780  *
4781  * See sensor_value_proxy_new_for_bus() for the asynchronous version of this constructor.
4782  *
4783  * Returns: (transfer full) (type SensorValueProxy): The constructed proxy object or %NULL if @error is set.
4784  */
4785 SensorValue *
4786 sensor_value_proxy_new_for_bus_sync (
4787     GBusType             bus_type,
4788     GDBusProxyFlags      flags,
4789     const gchar         *name,
4790     const gchar         *object_path,
4791     GCancellable        *cancellable,
4792     GError             **error)
4793 {
4794   GInitable *ret;
4795   ret = g_initable_new (TYPE_SENSOR_VALUE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.SensorValue", NULL);
4796   if (ret != NULL)
4797     return SENSOR_VALUE (ret);
4798   else
4799     return NULL;
4800 }
4801 
4802 
4803 /* ------------------------------------------------------------------------ */
4804 
4805 /**
4806  * SensorValueSkeleton:
4807  *
4808  * The #SensorValueSkeleton structure contains only private data and should only be accessed using the provided API.
4809  */
4810 
4811 /**
4812  * SensorValueSkeletonClass:
4813  * @parent_class: The parent class.
4814  *
4815  * Class structure for #SensorValueSkeleton.
4816  */
4817 
4818 struct _SensorValueSkeletonPrivate
4819 {
4820   GValue *properties;
4821   GList *changed_properties;
4822   GSource *changed_properties_idle_source;
4823   GMainContext *context;
4824   GMutex lock;
4825 };
4826 
4827 static void
4828 _sensor_value_skeleton_handle_method_call (
4829   GDBusConnection *connection G_GNUC_UNUSED,
4830   const gchar *sender G_GNUC_UNUSED,
4831   const gchar *object_path G_GNUC_UNUSED,
4832   const gchar *interface_name,
4833   const gchar *method_name,
4834   GVariant *parameters,
4835   GDBusMethodInvocation *invocation,
4836   gpointer user_data)
4837 {
4838   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (user_data);
4839   _ExtendedGDBusMethodInfo *info;
4840   GVariantIter iter;
4841   GVariant *child;
4842   GValue *paramv;
4843   guint num_params;
4844   guint num_extra;
4845   guint n;
4846   guint signal_id;
4847   GValue return_value = G_VALUE_INIT;
4848   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
4849   g_assert (info != NULL);
4850   num_params = g_variant_n_children (parameters);
4851   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
4852   n = 0;
4853   g_value_init (&paramv[n], TYPE_SENSOR_VALUE);
4854   g_value_set_object (&paramv[n++], skeleton);
4855   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
4856   g_value_set_object (&paramv[n++], invocation);
4857   if (info->pass_fdlist)
4858     {
4859 #ifdef G_OS_UNIX
4860       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
4861       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
4862 #else
4863       g_assert_not_reached ();
4864 #endif
4865     }
4866   g_variant_iter_init (&iter, parameters);
4867   while ((child = g_variant_iter_next_value (&iter)) != NULL)
4868     {
4869       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
4870       if (arg_info->use_gvariant)
4871         {
4872           g_value_init (&paramv[n], G_TYPE_VARIANT);
4873           g_value_set_variant (&paramv[n], child);
4874           n++;
4875         }
4876       else
4877         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
4878       g_variant_unref (child);
4879     }
4880   signal_id = g_signal_lookup (info->signal_name, TYPE_SENSOR_VALUE);
4881   g_value_init (&return_value, G_TYPE_BOOLEAN);
4882   g_signal_emitv (paramv, signal_id, 0, &return_value);
4883   if (!g_value_get_boolean (&return_value))
4884     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);
4885   g_value_unset (&return_value);
4886   for (n = 0; n < num_params + num_extra; n++)
4887     g_value_unset (&paramv[n]);
4888   g_free (paramv);
4889 }
4890 
4891 static GVariant *
4892 _sensor_value_skeleton_handle_get_property (
4893   GDBusConnection *connection G_GNUC_UNUSED,
4894   const gchar *sender G_GNUC_UNUSED,
4895   const gchar *object_path G_GNUC_UNUSED,
4896   const gchar *interface_name G_GNUC_UNUSED,
4897   const gchar *property_name,
4898   GError **error,
4899   gpointer user_data)
4900 {
4901   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (user_data);
4902   GValue value = G_VALUE_INIT;
4903   GParamSpec *pspec;
4904   _ExtendedGDBusPropertyInfo *info;
4905   GVariant *ret;
4906   ret = NULL;
4907   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_value_interface_info.parent_struct, property_name);
4908   g_assert (info != NULL);
4909   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
4910   if (pspec == NULL)
4911     {
4912       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
4913     }
4914   else
4915     {
4916       g_value_init (&value, pspec->value_type);
4917       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
4918       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
4919       g_value_unset (&value);
4920     }
4921   return ret;
4922 }
4923 
4924 static gboolean
4925 _sensor_value_skeleton_handle_set_property (
4926   GDBusConnection *connection G_GNUC_UNUSED,
4927   const gchar *sender G_GNUC_UNUSED,
4928   const gchar *object_path G_GNUC_UNUSED,
4929   const gchar *interface_name G_GNUC_UNUSED,
4930   const gchar *property_name,
4931   GVariant *variant,
4932   GError **error,
4933   gpointer user_data)
4934 {
4935   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (user_data);
4936   GValue value = G_VALUE_INIT;
4937   GParamSpec *pspec;
4938   _ExtendedGDBusPropertyInfo *info;
4939   gboolean ret;
4940   ret = FALSE;
4941   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_value_interface_info.parent_struct, property_name);
4942   g_assert (info != NULL);
4943   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
4944   if (pspec == NULL)
4945     {
4946       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
4947     }
4948   else
4949     {
4950       if (info->use_gvariant)
4951         g_value_set_variant (&value, variant);
4952       else
4953         g_dbus_gvariant_to_gvalue (variant, &value);
4954       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
4955       g_value_unset (&value);
4956       ret = TRUE;
4957     }
4958   return ret;
4959 }
4960 
4961 static const GDBusInterfaceVTable _sensor_value_skeleton_vtable =
4962 {
4963   _sensor_value_skeleton_handle_method_call,
4964   _sensor_value_skeleton_handle_get_property,
4965   _sensor_value_skeleton_handle_set_property,
4966   {NULL}
4967 };
4968 
4969 static GDBusInterfaceInfo *
4970 sensor_value_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
4971 {
4972   return sensor_value_interface_info ();
4973 }
4974 
4975 static GDBusInterfaceVTable *
4976 sensor_value_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
4977 {
4978   return (GDBusInterfaceVTable *) &_sensor_value_skeleton_vtable;
4979 }
4980 
4981 static GVariant *
4982 sensor_value_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
4983 {
4984   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (_skeleton);
4985 
4986   GVariantBuilder builder;
4987   guint n;
4988   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
4989   if (_sensor_value_interface_info.parent_struct.properties == NULL)
4990     goto out;
4991   for (n = 0; _sensor_value_interface_info.parent_struct.properties[n] != NULL; n++)
4992     {
4993       GDBusPropertyInfo *info = _sensor_value_interface_info.parent_struct.properties[n];
4994       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
4995         {
4996           GVariant *value;
4997           value = _sensor_value_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.openbmc.SensorValue", info->name, NULL, skeleton);
4998           if (value != NULL)
4999             {
5000               g_variant_take_ref (value);
5001               g_variant_builder_add (&builder, "{sv}", info->name, value);
5002               g_variant_unref (value);
5003             }
5004         }
5005     }
5006 out:
5007   return g_variant_builder_end (&builder);
5008 }
5009 
5010 static gboolean _sensor_value_emit_changed (gpointer user_data);
5011 
5012 static void
5013 sensor_value_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
5014 {
5015   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (_skeleton);
5016   gboolean emit_changed = FALSE;
5017 
5018   g_mutex_lock (&skeleton->priv->lock);
5019   if (skeleton->priv->changed_properties_idle_source != NULL)
5020     {
5021       g_source_destroy (skeleton->priv->changed_properties_idle_source);
5022       skeleton->priv->changed_properties_idle_source = NULL;
5023       emit_changed = TRUE;
5024     }
5025   g_mutex_unlock (&skeleton->priv->lock);
5026 
5027   if (emit_changed)
5028     _sensor_value_emit_changed (skeleton);
5029 }
5030 
5031 static void
5032 _sensor_value_on_signal_changed (
5033     SensorValue *object,
5034     GVariant *arg_value,
5035     const gchar *arg_units)
5036 {
5037   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5038 
5039   GList      *connections, *l;
5040   GVariant   *signal_variant;
5041   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
5042 
5043   signal_variant = g_variant_ref_sink (g_variant_new ("(@vs)",
5044                    arg_value,
5045                    arg_units));
5046   for (l = connections; l != NULL; l = l->next)
5047     {
5048       GDBusConnection *connection = l->data;
5049       g_dbus_connection_emit_signal (connection,
5050         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.SensorValue", "Changed",
5051         signal_variant, NULL);
5052     }
5053   g_variant_unref (signal_variant);
5054   g_list_free_full (connections, g_object_unref);
5055 }
5056 
5057 static void
5058 _sensor_value_on_signal_error (
5059     SensorValue *object)
5060 {
5061   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5062 
5063   GList      *connections, *l;
5064   GVariant   *signal_variant;
5065   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
5066 
5067   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
5068   for (l = connections; l != NULL; l = l->next)
5069     {
5070       GDBusConnection *connection = l->data;
5071       g_dbus_connection_emit_signal (connection,
5072         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.SensorValue", "Error",
5073         signal_variant, NULL);
5074     }
5075   g_variant_unref (signal_variant);
5076   g_list_free_full (connections, g_object_unref);
5077 }
5078 
5079 static void
5080 _sensor_value_on_signal_heartbeat (
5081     SensorValue *object,
5082     const gchar *arg_bus_name)
5083 {
5084   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5085 
5086   GList      *connections, *l;
5087   GVariant   *signal_variant;
5088   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
5089 
5090   signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
5091                    arg_bus_name));
5092   for (l = connections; l != NULL; l = l->next)
5093     {
5094       GDBusConnection *connection = l->data;
5095       g_dbus_connection_emit_signal (connection,
5096         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.SensorValue", "Heartbeat",
5097         signal_variant, NULL);
5098     }
5099   g_variant_unref (signal_variant);
5100   g_list_free_full (connections, g_object_unref);
5101 }
5102 
5103 static void sensor_value_skeleton_iface_init (SensorValueIface *iface);
5104 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
5105 G_DEFINE_TYPE_WITH_CODE (SensorValueSkeleton, sensor_value_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
5106                          G_ADD_PRIVATE (SensorValueSkeleton)
5107                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_VALUE, sensor_value_skeleton_iface_init));
5108 
5109 #else
5110 G_DEFINE_TYPE_WITH_CODE (SensorValueSkeleton, sensor_value_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
5111                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_VALUE, sensor_value_skeleton_iface_init));
5112 
5113 #endif
5114 static void
5115 sensor_value_skeleton_finalize (GObject *object)
5116 {
5117   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5118   guint n;
5119   for (n = 0; n < 5; n++)
5120     g_value_unset (&skeleton->priv->properties[n]);
5121   g_free (skeleton->priv->properties);
5122   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
5123   if (skeleton->priv->changed_properties_idle_source != NULL)
5124     g_source_destroy (skeleton->priv->changed_properties_idle_source);
5125   g_main_context_unref (skeleton->priv->context);
5126   g_mutex_clear (&skeleton->priv->lock);
5127   G_OBJECT_CLASS (sensor_value_skeleton_parent_class)->finalize (object);
5128 }
5129 
5130 static void
5131 sensor_value_skeleton_get_property (GObject      *object,
5132   guint         prop_id,
5133   GValue       *value,
5134   GParamSpec   *pspec G_GNUC_UNUSED)
5135 {
5136   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5137   g_assert (prop_id != 0 && prop_id - 1 < 5);
5138   g_mutex_lock (&skeleton->priv->lock);
5139   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
5140   g_mutex_unlock (&skeleton->priv->lock);
5141 }
5142 
5143 static gboolean
5144 _sensor_value_emit_changed (gpointer user_data)
5145 {
5146   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (user_data);
5147   GList *l;
5148   GVariantBuilder builder;
5149   GVariantBuilder invalidated_builder;
5150   guint num_changes;
5151 
5152   g_mutex_lock (&skeleton->priv->lock);
5153   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
5154   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
5155   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
5156     {
5157       ChangedProperty *cp = l->data;
5158       GVariant *variant;
5159       const GValue *cur_value;
5160 
5161       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
5162       if (!_g_value_equal (cur_value, &cp->orig_value))
5163         {
5164           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
5165           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
5166           g_variant_unref (variant);
5167           num_changes++;
5168         }
5169     }
5170   if (num_changes > 0)
5171     {
5172       GList *connections, *ll;
5173       GVariant *signal_variant;
5174       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.SensorValue",
5175                                            &builder, &invalidated_builder));
5176       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
5177       for (ll = connections; ll != NULL; ll = ll->next)
5178         {
5179           GDBusConnection *connection = ll->data;
5180 
5181           g_dbus_connection_emit_signal (connection,
5182                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
5183                                          "org.freedesktop.DBus.Properties",
5184                                          "PropertiesChanged",
5185                                          signal_variant,
5186                                          NULL);
5187         }
5188       g_variant_unref (signal_variant);
5189       g_list_free_full (connections, g_object_unref);
5190     }
5191   else
5192     {
5193       g_variant_builder_clear (&builder);
5194       g_variant_builder_clear (&invalidated_builder);
5195     }
5196   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
5197   skeleton->priv->changed_properties = NULL;
5198   skeleton->priv->changed_properties_idle_source = NULL;
5199   g_mutex_unlock (&skeleton->priv->lock);
5200   return FALSE;
5201 }
5202 
5203 static void
5204 _sensor_value_schedule_emit_changed (SensorValueSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
5205 {
5206   ChangedProperty *cp;
5207   GList *l;
5208   cp = NULL;
5209   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
5210     {
5211       ChangedProperty *i_cp = l->data;
5212       if (i_cp->info == info)
5213         {
5214           cp = i_cp;
5215           break;
5216         }
5217     }
5218   if (cp == NULL)
5219     {
5220       cp = g_new0 (ChangedProperty, 1);
5221       cp->prop_id = prop_id;
5222       cp->info = info;
5223       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
5224       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
5225       g_value_copy (orig_value, &cp->orig_value);
5226     }
5227 }
5228 
5229 static void
5230 sensor_value_skeleton_notify (GObject      *object,
5231   GParamSpec *pspec G_GNUC_UNUSED)
5232 {
5233   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5234   g_mutex_lock (&skeleton->priv->lock);
5235   if (skeleton->priv->changed_properties != NULL &&
5236       skeleton->priv->changed_properties_idle_source == NULL)
5237     {
5238       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
5239       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
5240       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_value_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
5241       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
5242       g_source_unref (skeleton->priv->changed_properties_idle_source);
5243     }
5244   g_mutex_unlock (&skeleton->priv->lock);
5245 }
5246 
5247 static void
5248 sensor_value_skeleton_set_property (GObject      *object,
5249   guint         prop_id,
5250   const GValue *value,
5251   GParamSpec   *pspec)
5252 {
5253   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5254   g_assert (prop_id != 0 && prop_id - 1 < 5);
5255   g_mutex_lock (&skeleton->priv->lock);
5256   g_object_freeze_notify (object);
5257   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
5258     {
5259       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
5260         _sensor_value_schedule_emit_changed (skeleton, _sensor_value_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
5261       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
5262       g_object_notify_by_pspec (object, pspec);
5263     }
5264   g_mutex_unlock (&skeleton->priv->lock);
5265   g_object_thaw_notify (object);
5266 }
5267 
5268 static void
5269 sensor_value_skeleton_init (SensorValueSkeleton *skeleton)
5270 {
5271 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
5272   skeleton->priv = sensor_value_skeleton_get_instance_private (skeleton);
5273 #else
5274   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_SENSOR_VALUE_SKELETON, SensorValueSkeletonPrivate);
5275 #endif
5276 
5277   g_mutex_init (&skeleton->priv->lock);
5278   skeleton->priv->context = g_main_context_ref_thread_default ();
5279   skeleton->priv->properties = g_new0 (GValue, 5);
5280   g_value_init (&skeleton->priv->properties[0], G_TYPE_VARIANT);
5281   g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING);
5282   g_value_init (&skeleton->priv->properties[2], G_TYPE_INT);
5283   g_value_init (&skeleton->priv->properties[3], G_TYPE_INT);
5284   g_value_init (&skeleton->priv->properties[4], G_TYPE_BOOLEAN);
5285 }
5286 
5287 static GVariant *
5288 sensor_value_skeleton_get_value (SensorValue *object)
5289 {
5290   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5291   GVariant *value;
5292   g_mutex_lock (&skeleton->priv->lock);
5293   value = g_value_get_variant (&(skeleton->priv->properties[0]));
5294   g_mutex_unlock (&skeleton->priv->lock);
5295   return value;
5296 }
5297 
5298 static const gchar *
5299 sensor_value_skeleton_get_units (SensorValue *object)
5300 {
5301   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5302   const gchar *value;
5303   g_mutex_lock (&skeleton->priv->lock);
5304   value = g_value_get_string (&(skeleton->priv->properties[1]));
5305   g_mutex_unlock (&skeleton->priv->lock);
5306   return value;
5307 }
5308 
5309 static gint
5310 sensor_value_skeleton_get_poll_interval (SensorValue *object)
5311 {
5312   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5313   gint value;
5314   g_mutex_lock (&skeleton->priv->lock);
5315   value = g_value_get_int (&(skeleton->priv->properties[2]));
5316   g_mutex_unlock (&skeleton->priv->lock);
5317   return value;
5318 }
5319 
5320 static gint
5321 sensor_value_skeleton_get_heatbeat (SensorValue *object)
5322 {
5323   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5324   gint value;
5325   g_mutex_lock (&skeleton->priv->lock);
5326   value = g_value_get_int (&(skeleton->priv->properties[3]));
5327   g_mutex_unlock (&skeleton->priv->lock);
5328   return value;
5329 }
5330 
5331 static gboolean
5332 sensor_value_skeleton_get_settable (SensorValue *object)
5333 {
5334   SensorValueSkeleton *skeleton = SENSOR_VALUE_SKELETON (object);
5335   gboolean value;
5336   g_mutex_lock (&skeleton->priv->lock);
5337   value = g_value_get_boolean (&(skeleton->priv->properties[4]));
5338   g_mutex_unlock (&skeleton->priv->lock);
5339   return value;
5340 }
5341 
5342 static void
5343 sensor_value_skeleton_class_init (SensorValueSkeletonClass *klass)
5344 {
5345   GObjectClass *gobject_class;
5346   GDBusInterfaceSkeletonClass *skeleton_class;
5347 
5348   gobject_class = G_OBJECT_CLASS (klass);
5349   gobject_class->finalize = sensor_value_skeleton_finalize;
5350   gobject_class->get_property = sensor_value_skeleton_get_property;
5351   gobject_class->set_property = sensor_value_skeleton_set_property;
5352   gobject_class->notify       = sensor_value_skeleton_notify;
5353 
5354 
5355   sensor_value_override_properties (gobject_class, 1);
5356 
5357   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
5358   skeleton_class->get_info = sensor_value_skeleton_dbus_interface_get_info;
5359   skeleton_class->get_properties = sensor_value_skeleton_dbus_interface_get_properties;
5360   skeleton_class->flush = sensor_value_skeleton_dbus_interface_flush;
5361   skeleton_class->get_vtable = sensor_value_skeleton_dbus_interface_get_vtable;
5362 
5363 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
5364   g_type_class_add_private (klass, sizeof (SensorValueSkeletonPrivate));
5365 #endif
5366 }
5367 
5368 static void
5369 sensor_value_skeleton_iface_init (SensorValueIface *iface)
5370 {
5371   iface->changed = _sensor_value_on_signal_changed;
5372   iface->error = _sensor_value_on_signal_error;
5373   iface->heartbeat = _sensor_value_on_signal_heartbeat;
5374   iface->get_value = sensor_value_skeleton_get_value;
5375   iface->get_units = sensor_value_skeleton_get_units;
5376   iface->get_poll_interval = sensor_value_skeleton_get_poll_interval;
5377   iface->get_heatbeat = sensor_value_skeleton_get_heatbeat;
5378   iface->get_settable = sensor_value_skeleton_get_settable;
5379 }
5380 
5381 /**
5382  * sensor_value_skeleton_new:
5383  *
5384  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorValue.top_of_page">org.openbmc.SensorValue</link>.
5385  *
5386  * Returns: (transfer full) (type SensorValueSkeleton): The skeleton object.
5387  */
5388 SensorValue *
5389 sensor_value_skeleton_new (void)
5390 {
5391   return SENSOR_VALUE (g_object_new (TYPE_SENSOR_VALUE_SKELETON, NULL));
5392 }
5393 
5394 /* ------------------------------------------------------------------------
5395  * Code for interface org.openbmc.SensorThreshold
5396  * ------------------------------------------------------------------------
5397  */
5398 
5399 /**
5400  * SECTION:SensorThreshold
5401  * @title: SensorThreshold
5402  * @short_description: Generated C code for the org.openbmc.SensorThreshold D-Bus interface
5403  *
5404  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-SensorThreshold.top_of_page">org.openbmc.SensorThreshold</link> D-Bus interface in C.
5405  */
5406 
5407 /* ---- Introspection data for org.openbmc.SensorThreshold ---- */
5408 
5409 static const _ExtendedGDBusArgInfo _sensor_threshold_method_info_get_state_OUT_ARG_state =
5410 {
5411   {
5412     -1,
5413     (gchar *) "state",
5414     (gchar *) "y",
5415     NULL
5416   },
5417   FALSE
5418 };
5419 
5420 static const _ExtendedGDBusArgInfo * const _sensor_threshold_method_info_get_state_OUT_ARG_pointers[] =
5421 {
5422   &_sensor_threshold_method_info_get_state_OUT_ARG_state,
5423   NULL
5424 };
5425 
5426 static const _ExtendedGDBusMethodInfo _sensor_threshold_method_info_get_state =
5427 {
5428   {
5429     -1,
5430     (gchar *) "getState",
5431     NULL,
5432     (GDBusArgInfo **) &_sensor_threshold_method_info_get_state_OUT_ARG_pointers,
5433     NULL
5434   },
5435   "handle-get-state",
5436   FALSE
5437 };
5438 
5439 static const _ExtendedGDBusMethodInfo * const _sensor_threshold_method_info_pointers[] =
5440 {
5441   &_sensor_threshold_method_info_get_state,
5442   NULL
5443 };
5444 
5445 static const _ExtendedGDBusSignalInfo _sensor_threshold_signal_info_warning =
5446 {
5447   {
5448     -1,
5449     (gchar *) "Warning",
5450     NULL,
5451     NULL
5452   },
5453   "warning"
5454 };
5455 
5456 static const _ExtendedGDBusSignalInfo _sensor_threshold_signal_info_critical =
5457 {
5458   {
5459     -1,
5460     (gchar *) "Critical",
5461     NULL,
5462     NULL
5463   },
5464   "critical"
5465 };
5466 
5467 static const _ExtendedGDBusSignalInfo _sensor_threshold_signal_info_normal =
5468 {
5469   {
5470     -1,
5471     (gchar *) "Normal",
5472     NULL,
5473     NULL
5474   },
5475   "normal"
5476 };
5477 
5478 static const _ExtendedGDBusSignalInfo * const _sensor_threshold_signal_info_pointers[] =
5479 {
5480   &_sensor_threshold_signal_info_warning,
5481   &_sensor_threshold_signal_info_critical,
5482   &_sensor_threshold_signal_info_normal,
5483   NULL
5484 };
5485 
5486 static const _ExtendedGDBusPropertyInfo _sensor_threshold_property_info_lower_critical =
5487 {
5488   {
5489     -1,
5490     (gchar *) "lower_critical",
5491     (gchar *) "v",
5492     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
5493     NULL
5494   },
5495   "lower-critical",
5496   FALSE
5497 };
5498 
5499 static const _ExtendedGDBusPropertyInfo _sensor_threshold_property_info_lower_warning =
5500 {
5501   {
5502     -1,
5503     (gchar *) "lower_warning",
5504     (gchar *) "v",
5505     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
5506     NULL
5507   },
5508   "lower-warning",
5509   FALSE
5510 };
5511 
5512 static const _ExtendedGDBusPropertyInfo _sensor_threshold_property_info_upper_warning =
5513 {
5514   {
5515     -1,
5516     (gchar *) "upper_warning",
5517     (gchar *) "v",
5518     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
5519     NULL
5520   },
5521   "upper-warning",
5522   FALSE
5523 };
5524 
5525 static const _ExtendedGDBusPropertyInfo _sensor_threshold_property_info_upper_critical =
5526 {
5527   {
5528     -1,
5529     (gchar *) "upper_critical",
5530     (gchar *) "v",
5531     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
5532     NULL
5533   },
5534   "upper-critical",
5535   FALSE
5536 };
5537 
5538 static const _ExtendedGDBusPropertyInfo _sensor_threshold_property_info_state =
5539 {
5540   {
5541     -1,
5542     (gchar *) "state",
5543     (gchar *) "y",
5544     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
5545     NULL
5546   },
5547   "state",
5548   FALSE
5549 };
5550 
5551 static const _ExtendedGDBusPropertyInfo * const _sensor_threshold_property_info_pointers[] =
5552 {
5553   &_sensor_threshold_property_info_lower_critical,
5554   &_sensor_threshold_property_info_lower_warning,
5555   &_sensor_threshold_property_info_upper_warning,
5556   &_sensor_threshold_property_info_upper_critical,
5557   &_sensor_threshold_property_info_state,
5558   NULL
5559 };
5560 
5561 static const _ExtendedGDBusInterfaceInfo _sensor_threshold_interface_info =
5562 {
5563   {
5564     -1,
5565     (gchar *) "org.openbmc.SensorThreshold",
5566     (GDBusMethodInfo **) &_sensor_threshold_method_info_pointers,
5567     (GDBusSignalInfo **) &_sensor_threshold_signal_info_pointers,
5568     (GDBusPropertyInfo **) &_sensor_threshold_property_info_pointers,
5569     NULL
5570   },
5571   "sensor-threshold",
5572 };
5573 
5574 
5575 /**
5576  * sensor_threshold_interface_info:
5577  *
5578  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-SensorThreshold.top_of_page">org.openbmc.SensorThreshold</link> D-Bus interface.
5579  *
5580  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
5581  */
5582 GDBusInterfaceInfo *
5583 sensor_threshold_interface_info (void)
5584 {
5585   return (GDBusInterfaceInfo *) &_sensor_threshold_interface_info.parent_struct;
5586 }
5587 
5588 /**
5589  * sensor_threshold_override_properties:
5590  * @klass: The class structure for a #GObject<!-- -->-derived class.
5591  * @property_id_begin: The property id to assign to the first overridden property.
5592  *
5593  * Overrides all #GObject properties in the #SensorThreshold interface for a concrete class.
5594  * The properties are overridden in the order they are defined.
5595  *
5596  * Returns: The last property id.
5597  */
5598 guint
5599 sensor_threshold_override_properties (GObjectClass *klass, guint property_id_begin)
5600 {
5601   g_object_class_override_property (klass, property_id_begin++, "lower-critical");
5602   g_object_class_override_property (klass, property_id_begin++, "lower-warning");
5603   g_object_class_override_property (klass, property_id_begin++, "upper-warning");
5604   g_object_class_override_property (klass, property_id_begin++, "upper-critical");
5605   g_object_class_override_property (klass, property_id_begin++, "state");
5606   return property_id_begin - 1;
5607 }
5608 
5609 
5610 
5611 /**
5612  * SensorThreshold:
5613  *
5614  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorThreshold.top_of_page">org.openbmc.SensorThreshold</link>.
5615  */
5616 
5617 /**
5618  * SensorThresholdIface:
5619  * @parent_iface: The parent interface.
5620  * @handle_get_state: Handler for the #SensorThreshold::handle-get-state signal.
5621  * @get_lower_critical: Getter for the #SensorThreshold:lower-critical property.
5622  * @get_lower_warning: Getter for the #SensorThreshold:lower-warning property.
5623  * @get_state: Getter for the #SensorThreshold:state property.
5624  * @get_upper_critical: Getter for the #SensorThreshold:upper-critical property.
5625  * @get_upper_warning: Getter for the #SensorThreshold:upper-warning property.
5626  * @critical: Handler for the #SensorThreshold::critical signal.
5627  * @normal: Handler for the #SensorThreshold::normal signal.
5628  * @warning: Handler for the #SensorThreshold::warning signal.
5629  *
5630  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorThreshold.top_of_page">org.openbmc.SensorThreshold</link>.
5631  */
5632 
5633 typedef SensorThresholdIface SensorThresholdInterface;
5634 G_DEFINE_INTERFACE (SensorThreshold, sensor_threshold, G_TYPE_OBJECT);
5635 
5636 static void
5637 sensor_threshold_default_init (SensorThresholdIface *iface)
5638 {
5639   /* GObject signals for incoming D-Bus method calls: */
5640   /**
5641    * SensorThreshold::handle-get-state:
5642    * @object: A #SensorThreshold.
5643    * @invocation: A #GDBusMethodInvocation.
5644    *
5645    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-SensorThreshold.getState">getState()</link> D-Bus method.
5646    *
5647    * 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 sensor_threshold_complete_get_state() 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.
5648    *
5649    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
5650    */
5651   g_signal_new ("handle-get-state",
5652     G_TYPE_FROM_INTERFACE (iface),
5653     G_SIGNAL_RUN_LAST,
5654     G_STRUCT_OFFSET (SensorThresholdIface, handle_get_state),
5655     g_signal_accumulator_true_handled,
5656     NULL,
5657     g_cclosure_marshal_generic,
5658     G_TYPE_BOOLEAN,
5659     1,
5660     G_TYPE_DBUS_METHOD_INVOCATION);
5661 
5662   /* GObject signals for received D-Bus signals: */
5663   /**
5664    * SensorThreshold::warning:
5665    * @object: A #SensorThreshold.
5666    *
5667    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-SensorThreshold.Warning">"Warning"</link> is received.
5668    *
5669    * 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.
5670    */
5671   g_signal_new ("warning",
5672     G_TYPE_FROM_INTERFACE (iface),
5673     G_SIGNAL_RUN_LAST,
5674     G_STRUCT_OFFSET (SensorThresholdIface, warning),
5675     NULL,
5676     NULL,
5677     g_cclosure_marshal_generic,
5678     G_TYPE_NONE,
5679     0);
5680 
5681   /**
5682    * SensorThreshold::critical:
5683    * @object: A #SensorThreshold.
5684    *
5685    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-SensorThreshold.Critical">"Critical"</link> is received.
5686    *
5687    * 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.
5688    */
5689   g_signal_new ("critical",
5690     G_TYPE_FROM_INTERFACE (iface),
5691     G_SIGNAL_RUN_LAST,
5692     G_STRUCT_OFFSET (SensorThresholdIface, critical),
5693     NULL,
5694     NULL,
5695     g_cclosure_marshal_generic,
5696     G_TYPE_NONE,
5697     0);
5698 
5699   /**
5700    * SensorThreshold::normal:
5701    * @object: A #SensorThreshold.
5702    *
5703    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-SensorThreshold.Normal">"Normal"</link> is received.
5704    *
5705    * 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.
5706    */
5707   g_signal_new ("normal",
5708     G_TYPE_FROM_INTERFACE (iface),
5709     G_SIGNAL_RUN_LAST,
5710     G_STRUCT_OFFSET (SensorThresholdIface, normal),
5711     NULL,
5712     NULL,
5713     g_cclosure_marshal_generic,
5714     G_TYPE_NONE,
5715     0);
5716 
5717   /* GObject properties for D-Bus properties: */
5718   /**
5719    * SensorThreshold:lower-critical:
5720    *
5721    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorThreshold.lower_critical">"lower_critical"</link>.
5722    *
5723    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
5724    */
5725   g_object_interface_install_property (iface,
5726     g_param_spec_variant ("lower-critical", "lower_critical", "lower_critical", G_VARIANT_TYPE ("v"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
5727   /**
5728    * SensorThreshold:lower-warning:
5729    *
5730    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorThreshold.lower_warning">"lower_warning"</link>.
5731    *
5732    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
5733    */
5734   g_object_interface_install_property (iface,
5735     g_param_spec_variant ("lower-warning", "lower_warning", "lower_warning", G_VARIANT_TYPE ("v"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
5736   /**
5737    * SensorThreshold:upper-warning:
5738    *
5739    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorThreshold.upper_warning">"upper_warning"</link>.
5740    *
5741    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
5742    */
5743   g_object_interface_install_property (iface,
5744     g_param_spec_variant ("upper-warning", "upper_warning", "upper_warning", G_VARIANT_TYPE ("v"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
5745   /**
5746    * SensorThreshold:upper-critical:
5747    *
5748    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorThreshold.upper_critical">"upper_critical"</link>.
5749    *
5750    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
5751    */
5752   g_object_interface_install_property (iface,
5753     g_param_spec_variant ("upper-critical", "upper_critical", "upper_critical", G_VARIANT_TYPE ("v"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
5754   /**
5755    * SensorThreshold:state:
5756    *
5757    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorThreshold.state">"state"</link>.
5758    *
5759    * 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.
5760    */
5761   g_object_interface_install_property (iface,
5762     g_param_spec_uchar ("state", "state", "state", 0, 255, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
5763 }
5764 
5765 /**
5766  * sensor_threshold_get_lower_critical: (skip)
5767  * @object: A #SensorThreshold.
5768  *
5769  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorThreshold.lower_critical">"lower_critical"</link> D-Bus property.
5770  *
5771  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5772  *
5773  * <warning>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 sensor_threshold_dup_lower_critical() if on another thread.</warning>
5774  *
5775  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
5776  */
5777 GVariant *
5778 sensor_threshold_get_lower_critical (SensorThreshold *object)
5779 {
5780   return SENSOR_THRESHOLD_GET_IFACE (object)->get_lower_critical (object);
5781 }
5782 
5783 /**
5784  * sensor_threshold_dup_lower_critical: (skip)
5785  * @object: A #SensorThreshold.
5786  *
5787  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-SensorThreshold.lower_critical">"lower_critical"</link> D-Bus property.
5788  *
5789  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5790  *
5791  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref().
5792  */
5793 GVariant *
5794 sensor_threshold_dup_lower_critical (SensorThreshold *object)
5795 {
5796   GVariant *value;
5797   g_object_get (G_OBJECT (object), "lower-critical", &value, NULL);
5798   return value;
5799 }
5800 
5801 /**
5802  * sensor_threshold_set_lower_critical: (skip)
5803  * @object: A #SensorThreshold.
5804  * @value: The value to set.
5805  *
5806  * Sets the <link linkend="gdbus-property-org-openbmc-SensorThreshold.lower_critical">"lower_critical"</link> D-Bus property to @value.
5807  *
5808  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5809  */
5810 void
5811 sensor_threshold_set_lower_critical (SensorThreshold *object, GVariant *value)
5812 {
5813   g_object_set (G_OBJECT (object), "lower-critical", value, NULL);
5814 }
5815 
5816 /**
5817  * sensor_threshold_get_lower_warning: (skip)
5818  * @object: A #SensorThreshold.
5819  *
5820  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorThreshold.lower_warning">"lower_warning"</link> D-Bus property.
5821  *
5822  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5823  *
5824  * <warning>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 sensor_threshold_dup_lower_warning() if on another thread.</warning>
5825  *
5826  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
5827  */
5828 GVariant *
5829 sensor_threshold_get_lower_warning (SensorThreshold *object)
5830 {
5831   return SENSOR_THRESHOLD_GET_IFACE (object)->get_lower_warning (object);
5832 }
5833 
5834 /**
5835  * sensor_threshold_dup_lower_warning: (skip)
5836  * @object: A #SensorThreshold.
5837  *
5838  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-SensorThreshold.lower_warning">"lower_warning"</link> D-Bus property.
5839  *
5840  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5841  *
5842  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref().
5843  */
5844 GVariant *
5845 sensor_threshold_dup_lower_warning (SensorThreshold *object)
5846 {
5847   GVariant *value;
5848   g_object_get (G_OBJECT (object), "lower-warning", &value, NULL);
5849   return value;
5850 }
5851 
5852 /**
5853  * sensor_threshold_set_lower_warning: (skip)
5854  * @object: A #SensorThreshold.
5855  * @value: The value to set.
5856  *
5857  * Sets the <link linkend="gdbus-property-org-openbmc-SensorThreshold.lower_warning">"lower_warning"</link> D-Bus property to @value.
5858  *
5859  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5860  */
5861 void
5862 sensor_threshold_set_lower_warning (SensorThreshold *object, GVariant *value)
5863 {
5864   g_object_set (G_OBJECT (object), "lower-warning", value, NULL);
5865 }
5866 
5867 /**
5868  * sensor_threshold_get_upper_warning: (skip)
5869  * @object: A #SensorThreshold.
5870  *
5871  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorThreshold.upper_warning">"upper_warning"</link> D-Bus property.
5872  *
5873  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5874  *
5875  * <warning>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 sensor_threshold_dup_upper_warning() if on another thread.</warning>
5876  *
5877  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
5878  */
5879 GVariant *
5880 sensor_threshold_get_upper_warning (SensorThreshold *object)
5881 {
5882   return SENSOR_THRESHOLD_GET_IFACE (object)->get_upper_warning (object);
5883 }
5884 
5885 /**
5886  * sensor_threshold_dup_upper_warning: (skip)
5887  * @object: A #SensorThreshold.
5888  *
5889  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-SensorThreshold.upper_warning">"upper_warning"</link> D-Bus property.
5890  *
5891  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5892  *
5893  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref().
5894  */
5895 GVariant *
5896 sensor_threshold_dup_upper_warning (SensorThreshold *object)
5897 {
5898   GVariant *value;
5899   g_object_get (G_OBJECT (object), "upper-warning", &value, NULL);
5900   return value;
5901 }
5902 
5903 /**
5904  * sensor_threshold_set_upper_warning: (skip)
5905  * @object: A #SensorThreshold.
5906  * @value: The value to set.
5907  *
5908  * Sets the <link linkend="gdbus-property-org-openbmc-SensorThreshold.upper_warning">"upper_warning"</link> D-Bus property to @value.
5909  *
5910  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5911  */
5912 void
5913 sensor_threshold_set_upper_warning (SensorThreshold *object, GVariant *value)
5914 {
5915   g_object_set (G_OBJECT (object), "upper-warning", value, NULL);
5916 }
5917 
5918 /**
5919  * sensor_threshold_get_upper_critical: (skip)
5920  * @object: A #SensorThreshold.
5921  *
5922  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorThreshold.upper_critical">"upper_critical"</link> D-Bus property.
5923  *
5924  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5925  *
5926  * <warning>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 sensor_threshold_dup_upper_critical() if on another thread.</warning>
5927  *
5928  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
5929  */
5930 GVariant *
5931 sensor_threshold_get_upper_critical (SensorThreshold *object)
5932 {
5933   return SENSOR_THRESHOLD_GET_IFACE (object)->get_upper_critical (object);
5934 }
5935 
5936 /**
5937  * sensor_threshold_dup_upper_critical: (skip)
5938  * @object: A #SensorThreshold.
5939  *
5940  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-SensorThreshold.upper_critical">"upper_critical"</link> D-Bus property.
5941  *
5942  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5943  *
5944  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref().
5945  */
5946 GVariant *
5947 sensor_threshold_dup_upper_critical (SensorThreshold *object)
5948 {
5949   GVariant *value;
5950   g_object_get (G_OBJECT (object), "upper-critical", &value, NULL);
5951   return value;
5952 }
5953 
5954 /**
5955  * sensor_threshold_set_upper_critical: (skip)
5956  * @object: A #SensorThreshold.
5957  * @value: The value to set.
5958  *
5959  * Sets the <link linkend="gdbus-property-org-openbmc-SensorThreshold.upper_critical">"upper_critical"</link> D-Bus property to @value.
5960  *
5961  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
5962  */
5963 void
5964 sensor_threshold_set_upper_critical (SensorThreshold *object, GVariant *value)
5965 {
5966   g_object_set (G_OBJECT (object), "upper-critical", value, NULL);
5967 }
5968 
5969 /**
5970  * sensor_threshold_get_state: (skip)
5971  * @object: A #SensorThreshold.
5972  *
5973  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorThreshold.state">"state"</link> D-Bus property.
5974  *
5975  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
5976  *
5977  * Returns: The property value.
5978  */
5979 guchar
5980 sensor_threshold_get_state (SensorThreshold *object)
5981 {
5982   return SENSOR_THRESHOLD_GET_IFACE (object)->get_state (object);
5983 }
5984 
5985 /**
5986  * sensor_threshold_set_state: (skip)
5987  * @object: A #SensorThreshold.
5988  * @value: The value to set.
5989  *
5990  * Sets the <link linkend="gdbus-property-org-openbmc-SensorThreshold.state">"state"</link> D-Bus property to @value.
5991  *
5992  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
5993  */
5994 void
5995 sensor_threshold_set_state (SensorThreshold *object, guchar value)
5996 {
5997   g_object_set (G_OBJECT (object), "state", value, NULL);
5998 }
5999 
6000 /**
6001  * sensor_threshold_emit_warning:
6002  * @object: A #SensorThreshold.
6003  *
6004  * Emits the <link linkend="gdbus-signal-org-openbmc-SensorThreshold.Warning">"Warning"</link> D-Bus signal.
6005  */
6006 void
6007 sensor_threshold_emit_warning (
6008     SensorThreshold *object)
6009 {
6010   g_signal_emit_by_name (object, "warning");
6011 }
6012 
6013 /**
6014  * sensor_threshold_emit_critical:
6015  * @object: A #SensorThreshold.
6016  *
6017  * Emits the <link linkend="gdbus-signal-org-openbmc-SensorThreshold.Critical">"Critical"</link> D-Bus signal.
6018  */
6019 void
6020 sensor_threshold_emit_critical (
6021     SensorThreshold *object)
6022 {
6023   g_signal_emit_by_name (object, "critical");
6024 }
6025 
6026 /**
6027  * sensor_threshold_emit_normal:
6028  * @object: A #SensorThreshold.
6029  *
6030  * Emits the <link linkend="gdbus-signal-org-openbmc-SensorThreshold.Normal">"Normal"</link> D-Bus signal.
6031  */
6032 void
6033 sensor_threshold_emit_normal (
6034     SensorThreshold *object)
6035 {
6036   g_signal_emit_by_name (object, "normal");
6037 }
6038 
6039 /**
6040  * sensor_threshold_call_get_state:
6041  * @proxy: A #SensorThresholdProxy.
6042  * @cancellable: (allow-none): A #GCancellable or %NULL.
6043  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
6044  * @user_data: User data to pass to @callback.
6045  *
6046  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-SensorThreshold.getState">getState()</link> D-Bus method on @proxy.
6047  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
6048  * You can then call sensor_threshold_call_get_state_finish() to get the result of the operation.
6049  *
6050  * See sensor_threshold_call_get_state_sync() for the synchronous, blocking version of this method.
6051  */
6052 void
6053 sensor_threshold_call_get_state (
6054     SensorThreshold *proxy,
6055     GCancellable *cancellable,
6056     GAsyncReadyCallback callback,
6057     gpointer user_data)
6058 {
6059   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
6060     "getState",
6061     g_variant_new ("()"),
6062     G_DBUS_CALL_FLAGS_NONE,
6063     -1,
6064     cancellable,
6065     callback,
6066     user_data);
6067 }
6068 
6069 /**
6070  * sensor_threshold_call_get_state_finish:
6071  * @proxy: A #SensorThresholdProxy.
6072  * @out_state: (out): Return location for return parameter or %NULL to ignore.
6073  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_threshold_call_get_state().
6074  * @error: Return location for error or %NULL.
6075  *
6076  * Finishes an operation started with sensor_threshold_call_get_state().
6077  *
6078  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
6079  */
6080 gboolean
6081 sensor_threshold_call_get_state_finish (
6082     SensorThreshold *proxy,
6083     guchar *out_state,
6084     GAsyncResult *res,
6085     GError **error)
6086 {
6087   GVariant *_ret;
6088   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
6089   if (_ret == NULL)
6090     goto _out;
6091   g_variant_get (_ret,
6092                  "(y)",
6093                  out_state);
6094   g_variant_unref (_ret);
6095 _out:
6096   return _ret != NULL;
6097 }
6098 
6099 /**
6100  * sensor_threshold_call_get_state_sync:
6101  * @proxy: A #SensorThresholdProxy.
6102  * @out_state: (out): Return location for return parameter or %NULL to ignore.
6103  * @cancellable: (allow-none): A #GCancellable or %NULL.
6104  * @error: Return location for error or %NULL.
6105  *
6106  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-SensorThreshold.getState">getState()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
6107  *
6108  * See sensor_threshold_call_get_state() for the asynchronous version of this method.
6109  *
6110  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
6111  */
6112 gboolean
6113 sensor_threshold_call_get_state_sync (
6114     SensorThreshold *proxy,
6115     guchar *out_state,
6116     GCancellable *cancellable,
6117     GError **error)
6118 {
6119   GVariant *_ret;
6120   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
6121     "getState",
6122     g_variant_new ("()"),
6123     G_DBUS_CALL_FLAGS_NONE,
6124     -1,
6125     cancellable,
6126     error);
6127   if (_ret == NULL)
6128     goto _out;
6129   g_variant_get (_ret,
6130                  "(y)",
6131                  out_state);
6132   g_variant_unref (_ret);
6133 _out:
6134   return _ret != NULL;
6135 }
6136 
6137 /**
6138  * sensor_threshold_complete_get_state:
6139  * @object: A #SensorThreshold.
6140  * @invocation: (transfer full): A #GDBusMethodInvocation.
6141  * @state: Parameter to return.
6142  *
6143  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-SensorThreshold.getState">getState()</link> 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.
6144  *
6145  * This method will free @invocation, you cannot use it afterwards.
6146  */
6147 void
6148 sensor_threshold_complete_get_state (
6149     SensorThreshold *object,
6150     GDBusMethodInvocation *invocation,
6151     guchar state)
6152 {
6153   g_dbus_method_invocation_return_value (invocation,
6154     g_variant_new ("(y)",
6155                    state));
6156 }
6157 
6158 /* ------------------------------------------------------------------------ */
6159 
6160 /**
6161  * SensorThresholdProxy:
6162  *
6163  * The #SensorThresholdProxy structure contains only private data and should only be accessed using the provided API.
6164  */
6165 
6166 /**
6167  * SensorThresholdProxyClass:
6168  * @parent_class: The parent class.
6169  *
6170  * Class structure for #SensorThresholdProxy.
6171  */
6172 
6173 struct _SensorThresholdProxyPrivate
6174 {
6175   GData *qdata;
6176 };
6177 
6178 static void sensor_threshold_proxy_iface_init (SensorThresholdIface *iface);
6179 
6180 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
6181 G_DEFINE_TYPE_WITH_CODE (SensorThresholdProxy, sensor_threshold_proxy, G_TYPE_DBUS_PROXY,
6182                          G_ADD_PRIVATE (SensorThresholdProxy)
6183                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_THRESHOLD, sensor_threshold_proxy_iface_init));
6184 
6185 #else
6186 G_DEFINE_TYPE_WITH_CODE (SensorThresholdProxy, sensor_threshold_proxy, G_TYPE_DBUS_PROXY,
6187                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_THRESHOLD, sensor_threshold_proxy_iface_init));
6188 
6189 #endif
6190 static void
6191 sensor_threshold_proxy_finalize (GObject *object)
6192 {
6193   SensorThresholdProxy *proxy = SENSOR_THRESHOLD_PROXY (object);
6194   g_datalist_clear (&proxy->priv->qdata);
6195   G_OBJECT_CLASS (sensor_threshold_proxy_parent_class)->finalize (object);
6196 }
6197 
6198 static void
6199 sensor_threshold_proxy_get_property (GObject      *object,
6200   guint         prop_id,
6201   GValue       *value,
6202   GParamSpec   *pspec G_GNUC_UNUSED)
6203 {
6204   const _ExtendedGDBusPropertyInfo *info;
6205   GVariant *variant;
6206   g_assert (prop_id != 0 && prop_id - 1 < 5);
6207   info = _sensor_threshold_property_info_pointers[prop_id - 1];
6208   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
6209   if (info->use_gvariant)
6210     {
6211       g_value_set_variant (value, variant);
6212     }
6213   else
6214     {
6215       if (variant != NULL)
6216         g_dbus_gvariant_to_gvalue (variant, value);
6217     }
6218   if (variant != NULL)
6219     g_variant_unref (variant);
6220 }
6221 
6222 static void
6223 sensor_threshold_proxy_set_property_cb (GDBusProxy *proxy,
6224   GAsyncResult *res,
6225   gpointer      user_data)
6226 {
6227   const _ExtendedGDBusPropertyInfo *info = user_data;
6228   GError *error;
6229   GVariant *_ret;
6230   error = NULL;
6231   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
6232   if (!_ret)
6233     {
6234       g_warning ("Error setting property '%s' on interface org.openbmc.SensorThreshold: %s (%s, %d)",
6235                  info->parent_struct.name,
6236                  error->message, g_quark_to_string (error->domain), error->code);
6237       g_error_free (error);
6238     }
6239   else
6240     {
6241       g_variant_unref (_ret);
6242     }
6243 }
6244 
6245 static void
6246 sensor_threshold_proxy_set_property (GObject      *object,
6247   guint         prop_id,
6248   const GValue *value,
6249   GParamSpec   *pspec G_GNUC_UNUSED)
6250 {
6251   const _ExtendedGDBusPropertyInfo *info;
6252   GVariant *variant;
6253   g_assert (prop_id != 0 && prop_id - 1 < 5);
6254   info = _sensor_threshold_property_info_pointers[prop_id - 1];
6255   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
6256   g_dbus_proxy_call (G_DBUS_PROXY (object),
6257     "org.freedesktop.DBus.Properties.Set",
6258     g_variant_new ("(ssv)", "org.openbmc.SensorThreshold", info->parent_struct.name, variant),
6259     G_DBUS_CALL_FLAGS_NONE,
6260     -1,
6261     NULL, (GAsyncReadyCallback) sensor_threshold_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
6262   g_variant_unref (variant);
6263 }
6264 
6265 static void
6266 sensor_threshold_proxy_g_signal (GDBusProxy *proxy,
6267   const gchar *sender_name G_GNUC_UNUSED,
6268   const gchar *signal_name,
6269   GVariant *parameters)
6270 {
6271   _ExtendedGDBusSignalInfo *info;
6272   GVariantIter iter;
6273   GVariant *child;
6274   GValue *paramv;
6275   guint num_params;
6276   guint n;
6277   guint signal_id;
6278   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_sensor_threshold_interface_info.parent_struct, signal_name);
6279   if (info == NULL)
6280     return;
6281   num_params = g_variant_n_children (parameters);
6282   paramv = g_new0 (GValue, num_params + 1);
6283   g_value_init (&paramv[0], TYPE_SENSOR_THRESHOLD);
6284   g_value_set_object (&paramv[0], proxy);
6285   g_variant_iter_init (&iter, parameters);
6286   n = 1;
6287   while ((child = g_variant_iter_next_value (&iter)) != NULL)
6288     {
6289       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
6290       if (arg_info->use_gvariant)
6291         {
6292           g_value_init (&paramv[n], G_TYPE_VARIANT);
6293           g_value_set_variant (&paramv[n], child);
6294           n++;
6295         }
6296       else
6297         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
6298       g_variant_unref (child);
6299     }
6300   signal_id = g_signal_lookup (info->signal_name, TYPE_SENSOR_THRESHOLD);
6301   g_signal_emitv (paramv, signal_id, 0, NULL);
6302   for (n = 0; n < num_params + 1; n++)
6303     g_value_unset (&paramv[n]);
6304   g_free (paramv);
6305 }
6306 
6307 static void
6308 sensor_threshold_proxy_g_properties_changed (GDBusProxy *_proxy,
6309   GVariant *changed_properties,
6310   const gchar *const *invalidated_properties)
6311 {
6312   SensorThresholdProxy *proxy = SENSOR_THRESHOLD_PROXY (_proxy);
6313   guint n;
6314   const gchar *key;
6315   GVariantIter *iter;
6316   _ExtendedGDBusPropertyInfo *info;
6317   g_variant_get (changed_properties, "a{sv}", &iter);
6318   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
6319     {
6320       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_threshold_interface_info.parent_struct, key);
6321       g_datalist_remove_data (&proxy->priv->qdata, key);
6322       if (info != NULL)
6323         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
6324     }
6325   g_variant_iter_free (iter);
6326   for (n = 0; invalidated_properties[n] != NULL; n++)
6327     {
6328       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_threshold_interface_info.parent_struct, invalidated_properties[n]);
6329       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
6330       if (info != NULL)
6331         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
6332     }
6333 }
6334 
6335 static GVariant *
6336 sensor_threshold_proxy_get_lower_critical (SensorThreshold *object)
6337 {
6338   SensorThresholdProxy *proxy = SENSOR_THRESHOLD_PROXY (object);
6339   GVariant *variant;
6340   GVariant *value = NULL;
6341   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "lower_critical");
6342   value = variant;
6343   if (variant != NULL)
6344     g_variant_unref (variant);
6345   return value;
6346 }
6347 
6348 static GVariant *
6349 sensor_threshold_proxy_get_lower_warning (SensorThreshold *object)
6350 {
6351   SensorThresholdProxy *proxy = SENSOR_THRESHOLD_PROXY (object);
6352   GVariant *variant;
6353   GVariant *value = NULL;
6354   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "lower_warning");
6355   value = variant;
6356   if (variant != NULL)
6357     g_variant_unref (variant);
6358   return value;
6359 }
6360 
6361 static GVariant *
6362 sensor_threshold_proxy_get_upper_warning (SensorThreshold *object)
6363 {
6364   SensorThresholdProxy *proxy = SENSOR_THRESHOLD_PROXY (object);
6365   GVariant *variant;
6366   GVariant *value = NULL;
6367   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "upper_warning");
6368   value = variant;
6369   if (variant != NULL)
6370     g_variant_unref (variant);
6371   return value;
6372 }
6373 
6374 static GVariant *
6375 sensor_threshold_proxy_get_upper_critical (SensorThreshold *object)
6376 {
6377   SensorThresholdProxy *proxy = SENSOR_THRESHOLD_PROXY (object);
6378   GVariant *variant;
6379   GVariant *value = NULL;
6380   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "upper_critical");
6381   value = variant;
6382   if (variant != NULL)
6383     g_variant_unref (variant);
6384   return value;
6385 }
6386 
6387 static guchar
6388 sensor_threshold_proxy_get_state (SensorThreshold *object)
6389 {
6390   SensorThresholdProxy *proxy = SENSOR_THRESHOLD_PROXY (object);
6391   GVariant *variant;
6392   guchar value = 0;
6393   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "state");
6394   if (variant != NULL)
6395     {
6396       value = g_variant_get_byte (variant);
6397       g_variant_unref (variant);
6398     }
6399   return value;
6400 }
6401 
6402 static void
6403 sensor_threshold_proxy_init (SensorThresholdProxy *proxy)
6404 {
6405 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
6406   proxy->priv = sensor_threshold_proxy_get_instance_private (proxy);
6407 #else
6408   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_SENSOR_THRESHOLD_PROXY, SensorThresholdProxyPrivate);
6409 #endif
6410 
6411   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), sensor_threshold_interface_info ());
6412 }
6413 
6414 static void
6415 sensor_threshold_proxy_class_init (SensorThresholdProxyClass *klass)
6416 {
6417   GObjectClass *gobject_class;
6418   GDBusProxyClass *proxy_class;
6419 
6420   gobject_class = G_OBJECT_CLASS (klass);
6421   gobject_class->finalize     = sensor_threshold_proxy_finalize;
6422   gobject_class->get_property = sensor_threshold_proxy_get_property;
6423   gobject_class->set_property = sensor_threshold_proxy_set_property;
6424 
6425   proxy_class = G_DBUS_PROXY_CLASS (klass);
6426   proxy_class->g_signal = sensor_threshold_proxy_g_signal;
6427   proxy_class->g_properties_changed = sensor_threshold_proxy_g_properties_changed;
6428 
6429   sensor_threshold_override_properties (gobject_class, 1);
6430 
6431 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
6432   g_type_class_add_private (klass, sizeof (SensorThresholdProxyPrivate));
6433 #endif
6434 }
6435 
6436 static void
6437 sensor_threshold_proxy_iface_init (SensorThresholdIface *iface)
6438 {
6439   iface->get_lower_critical = sensor_threshold_proxy_get_lower_critical;
6440   iface->get_lower_warning = sensor_threshold_proxy_get_lower_warning;
6441   iface->get_upper_warning = sensor_threshold_proxy_get_upper_warning;
6442   iface->get_upper_critical = sensor_threshold_proxy_get_upper_critical;
6443   iface->get_state = sensor_threshold_proxy_get_state;
6444 }
6445 
6446 /**
6447  * sensor_threshold_proxy_new:
6448  * @connection: A #GDBusConnection.
6449  * @flags: Flags from the #GDBusProxyFlags enumeration.
6450  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
6451  * @object_path: An object path.
6452  * @cancellable: (allow-none): A #GCancellable or %NULL.
6453  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
6454  * @user_data: User data to pass to @callback.
6455  *
6456  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorThreshold.top_of_page">org.openbmc.SensorThreshold</link>. See g_dbus_proxy_new() for more details.
6457  *
6458  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
6459  * You can then call sensor_threshold_proxy_new_finish() to get the result of the operation.
6460  *
6461  * See sensor_threshold_proxy_new_sync() for the synchronous, blocking version of this constructor.
6462  */
6463 void
6464 sensor_threshold_proxy_new (
6465     GDBusConnection     *connection,
6466     GDBusProxyFlags      flags,
6467     const gchar         *name,
6468     const gchar         *object_path,
6469     GCancellable        *cancellable,
6470     GAsyncReadyCallback  callback,
6471     gpointer             user_data)
6472 {
6473   g_async_initable_new_async (TYPE_SENSOR_THRESHOLD_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.openbmc.SensorThreshold", NULL);
6474 }
6475 
6476 /**
6477  * sensor_threshold_proxy_new_finish:
6478  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_threshold_proxy_new().
6479  * @error: Return location for error or %NULL
6480  *
6481  * Finishes an operation started with sensor_threshold_proxy_new().
6482  *
6483  * Returns: (transfer full) (type SensorThresholdProxy): The constructed proxy object or %NULL if @error is set.
6484  */
6485 SensorThreshold *
6486 sensor_threshold_proxy_new_finish (
6487     GAsyncResult        *res,
6488     GError             **error)
6489 {
6490   GObject *ret;
6491   GObject *source_object;
6492   source_object = g_async_result_get_source_object (res);
6493   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
6494   g_object_unref (source_object);
6495   if (ret != NULL)
6496     return SENSOR_THRESHOLD (ret);
6497   else
6498     return NULL;
6499 }
6500 
6501 /**
6502  * sensor_threshold_proxy_new_sync:
6503  * @connection: A #GDBusConnection.
6504  * @flags: Flags from the #GDBusProxyFlags enumeration.
6505  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
6506  * @object_path: An object path.
6507  * @cancellable: (allow-none): A #GCancellable or %NULL.
6508  * @error: Return location for error or %NULL
6509  *
6510  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorThreshold.top_of_page">org.openbmc.SensorThreshold</link>. See g_dbus_proxy_new_sync() for more details.
6511  *
6512  * The calling thread is blocked until a reply is received.
6513  *
6514  * See sensor_threshold_proxy_new() for the asynchronous version of this constructor.
6515  *
6516  * Returns: (transfer full) (type SensorThresholdProxy): The constructed proxy object or %NULL if @error is set.
6517  */
6518 SensorThreshold *
6519 sensor_threshold_proxy_new_sync (
6520     GDBusConnection     *connection,
6521     GDBusProxyFlags      flags,
6522     const gchar         *name,
6523     const gchar         *object_path,
6524     GCancellable        *cancellable,
6525     GError             **error)
6526 {
6527   GInitable *ret;
6528   ret = g_initable_new (TYPE_SENSOR_THRESHOLD_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.SensorThreshold", NULL);
6529   if (ret != NULL)
6530     return SENSOR_THRESHOLD (ret);
6531   else
6532     return NULL;
6533 }
6534 
6535 
6536 /**
6537  * sensor_threshold_proxy_new_for_bus:
6538  * @bus_type: A #GBusType.
6539  * @flags: Flags from the #GDBusProxyFlags enumeration.
6540  * @name: A bus name (well-known or unique).
6541  * @object_path: An object path.
6542  * @cancellable: (allow-none): A #GCancellable or %NULL.
6543  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
6544  * @user_data: User data to pass to @callback.
6545  *
6546  * Like sensor_threshold_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
6547  *
6548  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
6549  * You can then call sensor_threshold_proxy_new_for_bus_finish() to get the result of the operation.
6550  *
6551  * See sensor_threshold_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
6552  */
6553 void
6554 sensor_threshold_proxy_new_for_bus (
6555     GBusType             bus_type,
6556     GDBusProxyFlags      flags,
6557     const gchar         *name,
6558     const gchar         *object_path,
6559     GCancellable        *cancellable,
6560     GAsyncReadyCallback  callback,
6561     gpointer             user_data)
6562 {
6563   g_async_initable_new_async (TYPE_SENSOR_THRESHOLD_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.openbmc.SensorThreshold", NULL);
6564 }
6565 
6566 /**
6567  * sensor_threshold_proxy_new_for_bus_finish:
6568  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_threshold_proxy_new_for_bus().
6569  * @error: Return location for error or %NULL
6570  *
6571  * Finishes an operation started with sensor_threshold_proxy_new_for_bus().
6572  *
6573  * Returns: (transfer full) (type SensorThresholdProxy): The constructed proxy object or %NULL if @error is set.
6574  */
6575 SensorThreshold *
6576 sensor_threshold_proxy_new_for_bus_finish (
6577     GAsyncResult        *res,
6578     GError             **error)
6579 {
6580   GObject *ret;
6581   GObject *source_object;
6582   source_object = g_async_result_get_source_object (res);
6583   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
6584   g_object_unref (source_object);
6585   if (ret != NULL)
6586     return SENSOR_THRESHOLD (ret);
6587   else
6588     return NULL;
6589 }
6590 
6591 /**
6592  * sensor_threshold_proxy_new_for_bus_sync:
6593  * @bus_type: A #GBusType.
6594  * @flags: Flags from the #GDBusProxyFlags enumeration.
6595  * @name: A bus name (well-known or unique).
6596  * @object_path: An object path.
6597  * @cancellable: (allow-none): A #GCancellable or %NULL.
6598  * @error: Return location for error or %NULL
6599  *
6600  * Like sensor_threshold_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
6601  *
6602  * The calling thread is blocked until a reply is received.
6603  *
6604  * See sensor_threshold_proxy_new_for_bus() for the asynchronous version of this constructor.
6605  *
6606  * Returns: (transfer full) (type SensorThresholdProxy): The constructed proxy object or %NULL if @error is set.
6607  */
6608 SensorThreshold *
6609 sensor_threshold_proxy_new_for_bus_sync (
6610     GBusType             bus_type,
6611     GDBusProxyFlags      flags,
6612     const gchar         *name,
6613     const gchar         *object_path,
6614     GCancellable        *cancellable,
6615     GError             **error)
6616 {
6617   GInitable *ret;
6618   ret = g_initable_new (TYPE_SENSOR_THRESHOLD_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.SensorThreshold", NULL);
6619   if (ret != NULL)
6620     return SENSOR_THRESHOLD (ret);
6621   else
6622     return NULL;
6623 }
6624 
6625 
6626 /* ------------------------------------------------------------------------ */
6627 
6628 /**
6629  * SensorThresholdSkeleton:
6630  *
6631  * The #SensorThresholdSkeleton structure contains only private data and should only be accessed using the provided API.
6632  */
6633 
6634 /**
6635  * SensorThresholdSkeletonClass:
6636  * @parent_class: The parent class.
6637  *
6638  * Class structure for #SensorThresholdSkeleton.
6639  */
6640 
6641 struct _SensorThresholdSkeletonPrivate
6642 {
6643   GValue *properties;
6644   GList *changed_properties;
6645   GSource *changed_properties_idle_source;
6646   GMainContext *context;
6647   GMutex lock;
6648 };
6649 
6650 static void
6651 _sensor_threshold_skeleton_handle_method_call (
6652   GDBusConnection *connection G_GNUC_UNUSED,
6653   const gchar *sender G_GNUC_UNUSED,
6654   const gchar *object_path G_GNUC_UNUSED,
6655   const gchar *interface_name,
6656   const gchar *method_name,
6657   GVariant *parameters,
6658   GDBusMethodInvocation *invocation,
6659   gpointer user_data)
6660 {
6661   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (user_data);
6662   _ExtendedGDBusMethodInfo *info;
6663   GVariantIter iter;
6664   GVariant *child;
6665   GValue *paramv;
6666   guint num_params;
6667   guint num_extra;
6668   guint n;
6669   guint signal_id;
6670   GValue return_value = G_VALUE_INIT;
6671   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
6672   g_assert (info != NULL);
6673   num_params = g_variant_n_children (parameters);
6674   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
6675   n = 0;
6676   g_value_init (&paramv[n], TYPE_SENSOR_THRESHOLD);
6677   g_value_set_object (&paramv[n++], skeleton);
6678   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
6679   g_value_set_object (&paramv[n++], invocation);
6680   if (info->pass_fdlist)
6681     {
6682 #ifdef G_OS_UNIX
6683       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
6684       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
6685 #else
6686       g_assert_not_reached ();
6687 #endif
6688     }
6689   g_variant_iter_init (&iter, parameters);
6690   while ((child = g_variant_iter_next_value (&iter)) != NULL)
6691     {
6692       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
6693       if (arg_info->use_gvariant)
6694         {
6695           g_value_init (&paramv[n], G_TYPE_VARIANT);
6696           g_value_set_variant (&paramv[n], child);
6697           n++;
6698         }
6699       else
6700         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
6701       g_variant_unref (child);
6702     }
6703   signal_id = g_signal_lookup (info->signal_name, TYPE_SENSOR_THRESHOLD);
6704   g_value_init (&return_value, G_TYPE_BOOLEAN);
6705   g_signal_emitv (paramv, signal_id, 0, &return_value);
6706   if (!g_value_get_boolean (&return_value))
6707     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);
6708   g_value_unset (&return_value);
6709   for (n = 0; n < num_params + num_extra; n++)
6710     g_value_unset (&paramv[n]);
6711   g_free (paramv);
6712 }
6713 
6714 static GVariant *
6715 _sensor_threshold_skeleton_handle_get_property (
6716   GDBusConnection *connection G_GNUC_UNUSED,
6717   const gchar *sender G_GNUC_UNUSED,
6718   const gchar *object_path G_GNUC_UNUSED,
6719   const gchar *interface_name G_GNUC_UNUSED,
6720   const gchar *property_name,
6721   GError **error,
6722   gpointer user_data)
6723 {
6724   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (user_data);
6725   GValue value = G_VALUE_INIT;
6726   GParamSpec *pspec;
6727   _ExtendedGDBusPropertyInfo *info;
6728   GVariant *ret;
6729   ret = NULL;
6730   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_threshold_interface_info.parent_struct, property_name);
6731   g_assert (info != NULL);
6732   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
6733   if (pspec == NULL)
6734     {
6735       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
6736     }
6737   else
6738     {
6739       g_value_init (&value, pspec->value_type);
6740       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
6741       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
6742       g_value_unset (&value);
6743     }
6744   return ret;
6745 }
6746 
6747 static gboolean
6748 _sensor_threshold_skeleton_handle_set_property (
6749   GDBusConnection *connection G_GNUC_UNUSED,
6750   const gchar *sender G_GNUC_UNUSED,
6751   const gchar *object_path G_GNUC_UNUSED,
6752   const gchar *interface_name G_GNUC_UNUSED,
6753   const gchar *property_name,
6754   GVariant *variant,
6755   GError **error,
6756   gpointer user_data)
6757 {
6758   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (user_data);
6759   GValue value = G_VALUE_INIT;
6760   GParamSpec *pspec;
6761   _ExtendedGDBusPropertyInfo *info;
6762   gboolean ret;
6763   ret = FALSE;
6764   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_threshold_interface_info.parent_struct, property_name);
6765   g_assert (info != NULL);
6766   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
6767   if (pspec == NULL)
6768     {
6769       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
6770     }
6771   else
6772     {
6773       if (info->use_gvariant)
6774         g_value_set_variant (&value, variant);
6775       else
6776         g_dbus_gvariant_to_gvalue (variant, &value);
6777       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
6778       g_value_unset (&value);
6779       ret = TRUE;
6780     }
6781   return ret;
6782 }
6783 
6784 static const GDBusInterfaceVTable _sensor_threshold_skeleton_vtable =
6785 {
6786   _sensor_threshold_skeleton_handle_method_call,
6787   _sensor_threshold_skeleton_handle_get_property,
6788   _sensor_threshold_skeleton_handle_set_property,
6789   {NULL}
6790 };
6791 
6792 static GDBusInterfaceInfo *
6793 sensor_threshold_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
6794 {
6795   return sensor_threshold_interface_info ();
6796 }
6797 
6798 static GDBusInterfaceVTable *
6799 sensor_threshold_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
6800 {
6801   return (GDBusInterfaceVTable *) &_sensor_threshold_skeleton_vtable;
6802 }
6803 
6804 static GVariant *
6805 sensor_threshold_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
6806 {
6807   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (_skeleton);
6808 
6809   GVariantBuilder builder;
6810   guint n;
6811   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
6812   if (_sensor_threshold_interface_info.parent_struct.properties == NULL)
6813     goto out;
6814   for (n = 0; _sensor_threshold_interface_info.parent_struct.properties[n] != NULL; n++)
6815     {
6816       GDBusPropertyInfo *info = _sensor_threshold_interface_info.parent_struct.properties[n];
6817       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
6818         {
6819           GVariant *value;
6820           value = _sensor_threshold_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.openbmc.SensorThreshold", info->name, NULL, skeleton);
6821           if (value != NULL)
6822             {
6823               g_variant_take_ref (value);
6824               g_variant_builder_add (&builder, "{sv}", info->name, value);
6825               g_variant_unref (value);
6826             }
6827         }
6828     }
6829 out:
6830   return g_variant_builder_end (&builder);
6831 }
6832 
6833 static gboolean _sensor_threshold_emit_changed (gpointer user_data);
6834 
6835 static void
6836 sensor_threshold_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
6837 {
6838   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (_skeleton);
6839   gboolean emit_changed = FALSE;
6840 
6841   g_mutex_lock (&skeleton->priv->lock);
6842   if (skeleton->priv->changed_properties_idle_source != NULL)
6843     {
6844       g_source_destroy (skeleton->priv->changed_properties_idle_source);
6845       skeleton->priv->changed_properties_idle_source = NULL;
6846       emit_changed = TRUE;
6847     }
6848   g_mutex_unlock (&skeleton->priv->lock);
6849 
6850   if (emit_changed)
6851     _sensor_threshold_emit_changed (skeleton);
6852 }
6853 
6854 static void
6855 _sensor_threshold_on_signal_warning (
6856     SensorThreshold *object)
6857 {
6858   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
6859 
6860   GList      *connections, *l;
6861   GVariant   *signal_variant;
6862   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
6863 
6864   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
6865   for (l = connections; l != NULL; l = l->next)
6866     {
6867       GDBusConnection *connection = l->data;
6868       g_dbus_connection_emit_signal (connection,
6869         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.SensorThreshold", "Warning",
6870         signal_variant, NULL);
6871     }
6872   g_variant_unref (signal_variant);
6873   g_list_free_full (connections, g_object_unref);
6874 }
6875 
6876 static void
6877 _sensor_threshold_on_signal_critical (
6878     SensorThreshold *object)
6879 {
6880   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
6881 
6882   GList      *connections, *l;
6883   GVariant   *signal_variant;
6884   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
6885 
6886   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
6887   for (l = connections; l != NULL; l = l->next)
6888     {
6889       GDBusConnection *connection = l->data;
6890       g_dbus_connection_emit_signal (connection,
6891         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.SensorThreshold", "Critical",
6892         signal_variant, NULL);
6893     }
6894   g_variant_unref (signal_variant);
6895   g_list_free_full (connections, g_object_unref);
6896 }
6897 
6898 static void
6899 _sensor_threshold_on_signal_normal (
6900     SensorThreshold *object)
6901 {
6902   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
6903 
6904   GList      *connections, *l;
6905   GVariant   *signal_variant;
6906   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
6907 
6908   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
6909   for (l = connections; l != NULL; l = l->next)
6910     {
6911       GDBusConnection *connection = l->data;
6912       g_dbus_connection_emit_signal (connection,
6913         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.SensorThreshold", "Normal",
6914         signal_variant, NULL);
6915     }
6916   g_variant_unref (signal_variant);
6917   g_list_free_full (connections, g_object_unref);
6918 }
6919 
6920 static void sensor_threshold_skeleton_iface_init (SensorThresholdIface *iface);
6921 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
6922 G_DEFINE_TYPE_WITH_CODE (SensorThresholdSkeleton, sensor_threshold_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
6923                          G_ADD_PRIVATE (SensorThresholdSkeleton)
6924                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_THRESHOLD, sensor_threshold_skeleton_iface_init));
6925 
6926 #else
6927 G_DEFINE_TYPE_WITH_CODE (SensorThresholdSkeleton, sensor_threshold_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
6928                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_THRESHOLD, sensor_threshold_skeleton_iface_init));
6929 
6930 #endif
6931 static void
6932 sensor_threshold_skeleton_finalize (GObject *object)
6933 {
6934   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
6935   guint n;
6936   for (n = 0; n < 5; n++)
6937     g_value_unset (&skeleton->priv->properties[n]);
6938   g_free (skeleton->priv->properties);
6939   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
6940   if (skeleton->priv->changed_properties_idle_source != NULL)
6941     g_source_destroy (skeleton->priv->changed_properties_idle_source);
6942   g_main_context_unref (skeleton->priv->context);
6943   g_mutex_clear (&skeleton->priv->lock);
6944   G_OBJECT_CLASS (sensor_threshold_skeleton_parent_class)->finalize (object);
6945 }
6946 
6947 static void
6948 sensor_threshold_skeleton_get_property (GObject      *object,
6949   guint         prop_id,
6950   GValue       *value,
6951   GParamSpec   *pspec G_GNUC_UNUSED)
6952 {
6953   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
6954   g_assert (prop_id != 0 && prop_id - 1 < 5);
6955   g_mutex_lock (&skeleton->priv->lock);
6956   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
6957   g_mutex_unlock (&skeleton->priv->lock);
6958 }
6959 
6960 static gboolean
6961 _sensor_threshold_emit_changed (gpointer user_data)
6962 {
6963   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (user_data);
6964   GList *l;
6965   GVariantBuilder builder;
6966   GVariantBuilder invalidated_builder;
6967   guint num_changes;
6968 
6969   g_mutex_lock (&skeleton->priv->lock);
6970   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
6971   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
6972   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
6973     {
6974       ChangedProperty *cp = l->data;
6975       GVariant *variant;
6976       const GValue *cur_value;
6977 
6978       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
6979       if (!_g_value_equal (cur_value, &cp->orig_value))
6980         {
6981           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
6982           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
6983           g_variant_unref (variant);
6984           num_changes++;
6985         }
6986     }
6987   if (num_changes > 0)
6988     {
6989       GList *connections, *ll;
6990       GVariant *signal_variant;
6991       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.SensorThreshold",
6992                                            &builder, &invalidated_builder));
6993       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
6994       for (ll = connections; ll != NULL; ll = ll->next)
6995         {
6996           GDBusConnection *connection = ll->data;
6997 
6998           g_dbus_connection_emit_signal (connection,
6999                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
7000                                          "org.freedesktop.DBus.Properties",
7001                                          "PropertiesChanged",
7002                                          signal_variant,
7003                                          NULL);
7004         }
7005       g_variant_unref (signal_variant);
7006       g_list_free_full (connections, g_object_unref);
7007     }
7008   else
7009     {
7010       g_variant_builder_clear (&builder);
7011       g_variant_builder_clear (&invalidated_builder);
7012     }
7013   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
7014   skeleton->priv->changed_properties = NULL;
7015   skeleton->priv->changed_properties_idle_source = NULL;
7016   g_mutex_unlock (&skeleton->priv->lock);
7017   return FALSE;
7018 }
7019 
7020 static void
7021 _sensor_threshold_schedule_emit_changed (SensorThresholdSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
7022 {
7023   ChangedProperty *cp;
7024   GList *l;
7025   cp = NULL;
7026   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
7027     {
7028       ChangedProperty *i_cp = l->data;
7029       if (i_cp->info == info)
7030         {
7031           cp = i_cp;
7032           break;
7033         }
7034     }
7035   if (cp == NULL)
7036     {
7037       cp = g_new0 (ChangedProperty, 1);
7038       cp->prop_id = prop_id;
7039       cp->info = info;
7040       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
7041       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
7042       g_value_copy (orig_value, &cp->orig_value);
7043     }
7044 }
7045 
7046 static void
7047 sensor_threshold_skeleton_notify (GObject      *object,
7048   GParamSpec *pspec G_GNUC_UNUSED)
7049 {
7050   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
7051   g_mutex_lock (&skeleton->priv->lock);
7052   if (skeleton->priv->changed_properties != NULL &&
7053       skeleton->priv->changed_properties_idle_source == NULL)
7054     {
7055       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
7056       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
7057       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_threshold_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
7058       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
7059       g_source_unref (skeleton->priv->changed_properties_idle_source);
7060     }
7061   g_mutex_unlock (&skeleton->priv->lock);
7062 }
7063 
7064 static void
7065 sensor_threshold_skeleton_set_property (GObject      *object,
7066   guint         prop_id,
7067   const GValue *value,
7068   GParamSpec   *pspec)
7069 {
7070   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
7071   g_assert (prop_id != 0 && prop_id - 1 < 5);
7072   g_mutex_lock (&skeleton->priv->lock);
7073   g_object_freeze_notify (object);
7074   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
7075     {
7076       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
7077         _sensor_threshold_schedule_emit_changed (skeleton, _sensor_threshold_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
7078       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
7079       g_object_notify_by_pspec (object, pspec);
7080     }
7081   g_mutex_unlock (&skeleton->priv->lock);
7082   g_object_thaw_notify (object);
7083 }
7084 
7085 static void
7086 sensor_threshold_skeleton_init (SensorThresholdSkeleton *skeleton)
7087 {
7088 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
7089   skeleton->priv = sensor_threshold_skeleton_get_instance_private (skeleton);
7090 #else
7091   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_SENSOR_THRESHOLD_SKELETON, SensorThresholdSkeletonPrivate);
7092 #endif
7093 
7094   g_mutex_init (&skeleton->priv->lock);
7095   skeleton->priv->context = g_main_context_ref_thread_default ();
7096   skeleton->priv->properties = g_new0 (GValue, 5);
7097   g_value_init (&skeleton->priv->properties[0], G_TYPE_VARIANT);
7098   g_value_init (&skeleton->priv->properties[1], G_TYPE_VARIANT);
7099   g_value_init (&skeleton->priv->properties[2], G_TYPE_VARIANT);
7100   g_value_init (&skeleton->priv->properties[3], G_TYPE_VARIANT);
7101   g_value_init (&skeleton->priv->properties[4], G_TYPE_UCHAR);
7102 }
7103 
7104 static GVariant *
7105 sensor_threshold_skeleton_get_lower_critical (SensorThreshold *object)
7106 {
7107   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
7108   GVariant *value;
7109   g_mutex_lock (&skeleton->priv->lock);
7110   value = g_value_get_variant (&(skeleton->priv->properties[0]));
7111   g_mutex_unlock (&skeleton->priv->lock);
7112   return value;
7113 }
7114 
7115 static GVariant *
7116 sensor_threshold_skeleton_get_lower_warning (SensorThreshold *object)
7117 {
7118   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
7119   GVariant *value;
7120   g_mutex_lock (&skeleton->priv->lock);
7121   value = g_value_get_variant (&(skeleton->priv->properties[1]));
7122   g_mutex_unlock (&skeleton->priv->lock);
7123   return value;
7124 }
7125 
7126 static GVariant *
7127 sensor_threshold_skeleton_get_upper_warning (SensorThreshold *object)
7128 {
7129   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
7130   GVariant *value;
7131   g_mutex_lock (&skeleton->priv->lock);
7132   value = g_value_get_variant (&(skeleton->priv->properties[2]));
7133   g_mutex_unlock (&skeleton->priv->lock);
7134   return value;
7135 }
7136 
7137 static GVariant *
7138 sensor_threshold_skeleton_get_upper_critical (SensorThreshold *object)
7139 {
7140   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
7141   GVariant *value;
7142   g_mutex_lock (&skeleton->priv->lock);
7143   value = g_value_get_variant (&(skeleton->priv->properties[3]));
7144   g_mutex_unlock (&skeleton->priv->lock);
7145   return value;
7146 }
7147 
7148 static guchar
7149 sensor_threshold_skeleton_get_state (SensorThreshold *object)
7150 {
7151   SensorThresholdSkeleton *skeleton = SENSOR_THRESHOLD_SKELETON (object);
7152   guchar value;
7153   g_mutex_lock (&skeleton->priv->lock);
7154   value = g_value_get_uchar (&(skeleton->priv->properties[4]));
7155   g_mutex_unlock (&skeleton->priv->lock);
7156   return value;
7157 }
7158 
7159 static void
7160 sensor_threshold_skeleton_class_init (SensorThresholdSkeletonClass *klass)
7161 {
7162   GObjectClass *gobject_class;
7163   GDBusInterfaceSkeletonClass *skeleton_class;
7164 
7165   gobject_class = G_OBJECT_CLASS (klass);
7166   gobject_class->finalize = sensor_threshold_skeleton_finalize;
7167   gobject_class->get_property = sensor_threshold_skeleton_get_property;
7168   gobject_class->set_property = sensor_threshold_skeleton_set_property;
7169   gobject_class->notify       = sensor_threshold_skeleton_notify;
7170 
7171 
7172   sensor_threshold_override_properties (gobject_class, 1);
7173 
7174   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
7175   skeleton_class->get_info = sensor_threshold_skeleton_dbus_interface_get_info;
7176   skeleton_class->get_properties = sensor_threshold_skeleton_dbus_interface_get_properties;
7177   skeleton_class->flush = sensor_threshold_skeleton_dbus_interface_flush;
7178   skeleton_class->get_vtable = sensor_threshold_skeleton_dbus_interface_get_vtable;
7179 
7180 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
7181   g_type_class_add_private (klass, sizeof (SensorThresholdSkeletonPrivate));
7182 #endif
7183 }
7184 
7185 static void
7186 sensor_threshold_skeleton_iface_init (SensorThresholdIface *iface)
7187 {
7188   iface->warning = _sensor_threshold_on_signal_warning;
7189   iface->critical = _sensor_threshold_on_signal_critical;
7190   iface->normal = _sensor_threshold_on_signal_normal;
7191   iface->get_lower_critical = sensor_threshold_skeleton_get_lower_critical;
7192   iface->get_lower_warning = sensor_threshold_skeleton_get_lower_warning;
7193   iface->get_upper_warning = sensor_threshold_skeleton_get_upper_warning;
7194   iface->get_upper_critical = sensor_threshold_skeleton_get_upper_critical;
7195   iface->get_state = sensor_threshold_skeleton_get_state;
7196 }
7197 
7198 /**
7199  * sensor_threshold_skeleton_new:
7200  *
7201  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorThreshold.top_of_page">org.openbmc.SensorThreshold</link>.
7202  *
7203  * Returns: (transfer full) (type SensorThresholdSkeleton): The skeleton object.
7204  */
7205 SensorThreshold *
7206 sensor_threshold_skeleton_new (void)
7207 {
7208   return SENSOR_THRESHOLD (g_object_new (TYPE_SENSOR_THRESHOLD_SKELETON, NULL));
7209 }
7210 
7211 /* ------------------------------------------------------------------------
7212  * Code for interface org.openbmc.SensorI2c
7213  * ------------------------------------------------------------------------
7214  */
7215 
7216 /**
7217  * SECTION:SensorI2c
7218  * @title: SensorI2c
7219  * @short_description: Generated C code for the org.openbmc.SensorI2c D-Bus interface
7220  *
7221  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-SensorI2c.top_of_page">org.openbmc.SensorI2c</link> D-Bus interface in C.
7222  */
7223 
7224 /* ---- Introspection data for org.openbmc.SensorI2c ---- */
7225 
7226 static const _ExtendedGDBusPropertyInfo _sensor_i2c_property_info_dev_path =
7227 {
7228   {
7229     -1,
7230     (gchar *) "dev_path",
7231     (gchar *) "s",
7232     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
7233     NULL
7234   },
7235   "dev-path",
7236   FALSE
7237 };
7238 
7239 static const _ExtendedGDBusPropertyInfo _sensor_i2c_property_info_address =
7240 {
7241   {
7242     -1,
7243     (gchar *) "address",
7244     (gchar *) "s",
7245     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
7246     NULL
7247   },
7248   "address",
7249   FALSE
7250 };
7251 
7252 static const _ExtendedGDBusPropertyInfo * const _sensor_i2c_property_info_pointers[] =
7253 {
7254   &_sensor_i2c_property_info_dev_path,
7255   &_sensor_i2c_property_info_address,
7256   NULL
7257 };
7258 
7259 static const _ExtendedGDBusInterfaceInfo _sensor_i2c_interface_info =
7260 {
7261   {
7262     -1,
7263     (gchar *) "org.openbmc.SensorI2c",
7264     NULL,
7265     NULL,
7266     (GDBusPropertyInfo **) &_sensor_i2c_property_info_pointers,
7267     NULL
7268   },
7269   "sensor-i2c",
7270 };
7271 
7272 
7273 /**
7274  * sensor_i2c_interface_info:
7275  *
7276  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-SensorI2c.top_of_page">org.openbmc.SensorI2c</link> D-Bus interface.
7277  *
7278  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
7279  */
7280 GDBusInterfaceInfo *
7281 sensor_i2c_interface_info (void)
7282 {
7283   return (GDBusInterfaceInfo *) &_sensor_i2c_interface_info.parent_struct;
7284 }
7285 
7286 /**
7287  * sensor_i2c_override_properties:
7288  * @klass: The class structure for a #GObject<!-- -->-derived class.
7289  * @property_id_begin: The property id to assign to the first overridden property.
7290  *
7291  * Overrides all #GObject properties in the #SensorI2c interface for a concrete class.
7292  * The properties are overridden in the order they are defined.
7293  *
7294  * Returns: The last property id.
7295  */
7296 guint
7297 sensor_i2c_override_properties (GObjectClass *klass, guint property_id_begin)
7298 {
7299   g_object_class_override_property (klass, property_id_begin++, "dev-path");
7300   g_object_class_override_property (klass, property_id_begin++, "address");
7301   return property_id_begin - 1;
7302 }
7303 
7304 
7305 
7306 /**
7307  * SensorI2c:
7308  *
7309  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorI2c.top_of_page">org.openbmc.SensorI2c</link>.
7310  */
7311 
7312 /**
7313  * SensorI2cIface:
7314  * @parent_iface: The parent interface.
7315  * @get_address: Getter for the #SensorI2c:address property.
7316  * @get_dev_path: Getter for the #SensorI2c:dev-path property.
7317  *
7318  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorI2c.top_of_page">org.openbmc.SensorI2c</link>.
7319  */
7320 
7321 typedef SensorI2cIface SensorI2cInterface;
7322 G_DEFINE_INTERFACE (SensorI2c, sensor_i2c, G_TYPE_OBJECT);
7323 
7324 static void
7325 sensor_i2c_default_init (SensorI2cIface *iface)
7326 {
7327   /* GObject properties for D-Bus properties: */
7328   /**
7329    * SensorI2c:dev-path:
7330    *
7331    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorI2c.dev_path">"dev_path"</link>.
7332    *
7333    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
7334    */
7335   g_object_interface_install_property (iface,
7336     g_param_spec_string ("dev-path", "dev_path", "dev_path", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
7337   /**
7338    * SensorI2c:address:
7339    *
7340    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorI2c.address">"address"</link>.
7341    *
7342    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
7343    */
7344   g_object_interface_install_property (iface,
7345     g_param_spec_string ("address", "address", "address", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
7346 }
7347 
7348 /**
7349  * sensor_i2c_get_dev_path: (skip)
7350  * @object: A #SensorI2c.
7351  *
7352  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorI2c.dev_path">"dev_path"</link> D-Bus property.
7353  *
7354  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
7355  *
7356  * <warning>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 sensor_i2c_dup_dev_path() if on another thread.</warning>
7357  *
7358  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
7359  */
7360 const gchar *
7361 sensor_i2c_get_dev_path (SensorI2c *object)
7362 {
7363   return SENSOR_I2C_GET_IFACE (object)->get_dev_path (object);
7364 }
7365 
7366 /**
7367  * sensor_i2c_dup_dev_path: (skip)
7368  * @object: A #SensorI2c.
7369  *
7370  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-SensorI2c.dev_path">"dev_path"</link> D-Bus property.
7371  *
7372  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
7373  *
7374  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
7375  */
7376 gchar *
7377 sensor_i2c_dup_dev_path (SensorI2c *object)
7378 {
7379   gchar *value;
7380   g_object_get (G_OBJECT (object), "dev-path", &value, NULL);
7381   return value;
7382 }
7383 
7384 /**
7385  * sensor_i2c_set_dev_path: (skip)
7386  * @object: A #SensorI2c.
7387  * @value: The value to set.
7388  *
7389  * Sets the <link linkend="gdbus-property-org-openbmc-SensorI2c.dev_path">"dev_path"</link> D-Bus property to @value.
7390  *
7391  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
7392  */
7393 void
7394 sensor_i2c_set_dev_path (SensorI2c *object, const gchar *value)
7395 {
7396   g_object_set (G_OBJECT (object), "dev-path", value, NULL);
7397 }
7398 
7399 /**
7400  * sensor_i2c_get_address: (skip)
7401  * @object: A #SensorI2c.
7402  *
7403  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorI2c.address">"address"</link> D-Bus property.
7404  *
7405  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
7406  *
7407  * <warning>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 sensor_i2c_dup_address() if on another thread.</warning>
7408  *
7409  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
7410  */
7411 const gchar *
7412 sensor_i2c_get_address (SensorI2c *object)
7413 {
7414   return SENSOR_I2C_GET_IFACE (object)->get_address (object);
7415 }
7416 
7417 /**
7418  * sensor_i2c_dup_address: (skip)
7419  * @object: A #SensorI2c.
7420  *
7421  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-SensorI2c.address">"address"</link> D-Bus property.
7422  *
7423  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
7424  *
7425  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
7426  */
7427 gchar *
7428 sensor_i2c_dup_address (SensorI2c *object)
7429 {
7430   gchar *value;
7431   g_object_get (G_OBJECT (object), "address", &value, NULL);
7432   return value;
7433 }
7434 
7435 /**
7436  * sensor_i2c_set_address: (skip)
7437  * @object: A #SensorI2c.
7438  * @value: The value to set.
7439  *
7440  * Sets the <link linkend="gdbus-property-org-openbmc-SensorI2c.address">"address"</link> D-Bus property to @value.
7441  *
7442  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
7443  */
7444 void
7445 sensor_i2c_set_address (SensorI2c *object, const gchar *value)
7446 {
7447   g_object_set (G_OBJECT (object), "address", value, NULL);
7448 }
7449 
7450 /* ------------------------------------------------------------------------ */
7451 
7452 /**
7453  * SensorI2cProxy:
7454  *
7455  * The #SensorI2cProxy structure contains only private data and should only be accessed using the provided API.
7456  */
7457 
7458 /**
7459  * SensorI2cProxyClass:
7460  * @parent_class: The parent class.
7461  *
7462  * Class structure for #SensorI2cProxy.
7463  */
7464 
7465 struct _SensorI2cProxyPrivate
7466 {
7467   GData *qdata;
7468 };
7469 
7470 static void sensor_i2c_proxy_iface_init (SensorI2cIface *iface);
7471 
7472 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
7473 G_DEFINE_TYPE_WITH_CODE (SensorI2cProxy, sensor_i2c_proxy, G_TYPE_DBUS_PROXY,
7474                          G_ADD_PRIVATE (SensorI2cProxy)
7475                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_I2C, sensor_i2c_proxy_iface_init));
7476 
7477 #else
7478 G_DEFINE_TYPE_WITH_CODE (SensorI2cProxy, sensor_i2c_proxy, G_TYPE_DBUS_PROXY,
7479                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_I2C, sensor_i2c_proxy_iface_init));
7480 
7481 #endif
7482 static void
7483 sensor_i2c_proxy_finalize (GObject *object)
7484 {
7485   SensorI2cProxy *proxy = SENSOR_I2C_PROXY (object);
7486   g_datalist_clear (&proxy->priv->qdata);
7487   G_OBJECT_CLASS (sensor_i2c_proxy_parent_class)->finalize (object);
7488 }
7489 
7490 static void
7491 sensor_i2c_proxy_get_property (GObject      *object,
7492   guint         prop_id,
7493   GValue       *value,
7494   GParamSpec   *pspec G_GNUC_UNUSED)
7495 {
7496   const _ExtendedGDBusPropertyInfo *info;
7497   GVariant *variant;
7498   g_assert (prop_id != 0 && prop_id - 1 < 2);
7499   info = _sensor_i2c_property_info_pointers[prop_id - 1];
7500   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
7501   if (info->use_gvariant)
7502     {
7503       g_value_set_variant (value, variant);
7504     }
7505   else
7506     {
7507       if (variant != NULL)
7508         g_dbus_gvariant_to_gvalue (variant, value);
7509     }
7510   if (variant != NULL)
7511     g_variant_unref (variant);
7512 }
7513 
7514 static void
7515 sensor_i2c_proxy_set_property_cb (GDBusProxy *proxy,
7516   GAsyncResult *res,
7517   gpointer      user_data)
7518 {
7519   const _ExtendedGDBusPropertyInfo *info = user_data;
7520   GError *error;
7521   GVariant *_ret;
7522   error = NULL;
7523   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
7524   if (!_ret)
7525     {
7526       g_warning ("Error setting property '%s' on interface org.openbmc.SensorI2c: %s (%s, %d)",
7527                  info->parent_struct.name,
7528                  error->message, g_quark_to_string (error->domain), error->code);
7529       g_error_free (error);
7530     }
7531   else
7532     {
7533       g_variant_unref (_ret);
7534     }
7535 }
7536 
7537 static void
7538 sensor_i2c_proxy_set_property (GObject      *object,
7539   guint         prop_id,
7540   const GValue *value,
7541   GParamSpec   *pspec G_GNUC_UNUSED)
7542 {
7543   const _ExtendedGDBusPropertyInfo *info;
7544   GVariant *variant;
7545   g_assert (prop_id != 0 && prop_id - 1 < 2);
7546   info = _sensor_i2c_property_info_pointers[prop_id - 1];
7547   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
7548   g_dbus_proxy_call (G_DBUS_PROXY (object),
7549     "org.freedesktop.DBus.Properties.Set",
7550     g_variant_new ("(ssv)", "org.openbmc.SensorI2c", info->parent_struct.name, variant),
7551     G_DBUS_CALL_FLAGS_NONE,
7552     -1,
7553     NULL, (GAsyncReadyCallback) sensor_i2c_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
7554   g_variant_unref (variant);
7555 }
7556 
7557 static void
7558 sensor_i2c_proxy_g_signal (GDBusProxy *proxy,
7559   const gchar *sender_name G_GNUC_UNUSED,
7560   const gchar *signal_name,
7561   GVariant *parameters)
7562 {
7563   _ExtendedGDBusSignalInfo *info;
7564   GVariantIter iter;
7565   GVariant *child;
7566   GValue *paramv;
7567   guint num_params;
7568   guint n;
7569   guint signal_id;
7570   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_sensor_i2c_interface_info.parent_struct, signal_name);
7571   if (info == NULL)
7572     return;
7573   num_params = g_variant_n_children (parameters);
7574   paramv = g_new0 (GValue, num_params + 1);
7575   g_value_init (&paramv[0], TYPE_SENSOR_I2C);
7576   g_value_set_object (&paramv[0], proxy);
7577   g_variant_iter_init (&iter, parameters);
7578   n = 1;
7579   while ((child = g_variant_iter_next_value (&iter)) != NULL)
7580     {
7581       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
7582       if (arg_info->use_gvariant)
7583         {
7584           g_value_init (&paramv[n], G_TYPE_VARIANT);
7585           g_value_set_variant (&paramv[n], child);
7586           n++;
7587         }
7588       else
7589         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
7590       g_variant_unref (child);
7591     }
7592   signal_id = g_signal_lookup (info->signal_name, TYPE_SENSOR_I2C);
7593   g_signal_emitv (paramv, signal_id, 0, NULL);
7594   for (n = 0; n < num_params + 1; n++)
7595     g_value_unset (&paramv[n]);
7596   g_free (paramv);
7597 }
7598 
7599 static void
7600 sensor_i2c_proxy_g_properties_changed (GDBusProxy *_proxy,
7601   GVariant *changed_properties,
7602   const gchar *const *invalidated_properties)
7603 {
7604   SensorI2cProxy *proxy = SENSOR_I2C_PROXY (_proxy);
7605   guint n;
7606   const gchar *key;
7607   GVariantIter *iter;
7608   _ExtendedGDBusPropertyInfo *info;
7609   g_variant_get (changed_properties, "a{sv}", &iter);
7610   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
7611     {
7612       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_i2c_interface_info.parent_struct, key);
7613       g_datalist_remove_data (&proxy->priv->qdata, key);
7614       if (info != NULL)
7615         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
7616     }
7617   g_variant_iter_free (iter);
7618   for (n = 0; invalidated_properties[n] != NULL; n++)
7619     {
7620       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_i2c_interface_info.parent_struct, invalidated_properties[n]);
7621       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
7622       if (info != NULL)
7623         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
7624     }
7625 }
7626 
7627 static const gchar *
7628 sensor_i2c_proxy_get_dev_path (SensorI2c *object)
7629 {
7630   SensorI2cProxy *proxy = SENSOR_I2C_PROXY (object);
7631   GVariant *variant;
7632   const gchar *value = NULL;
7633   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "dev_path");
7634   if (variant != NULL)
7635     {
7636       value = g_variant_get_string (variant, NULL);
7637       g_variant_unref (variant);
7638     }
7639   return value;
7640 }
7641 
7642 static const gchar *
7643 sensor_i2c_proxy_get_address (SensorI2c *object)
7644 {
7645   SensorI2cProxy *proxy = SENSOR_I2C_PROXY (object);
7646   GVariant *variant;
7647   const gchar *value = NULL;
7648   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "address");
7649   if (variant != NULL)
7650     {
7651       value = g_variant_get_string (variant, NULL);
7652       g_variant_unref (variant);
7653     }
7654   return value;
7655 }
7656 
7657 static void
7658 sensor_i2c_proxy_init (SensorI2cProxy *proxy)
7659 {
7660 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
7661   proxy->priv = sensor_i2c_proxy_get_instance_private (proxy);
7662 #else
7663   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_SENSOR_I2C_PROXY, SensorI2cProxyPrivate);
7664 #endif
7665 
7666   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), sensor_i2c_interface_info ());
7667 }
7668 
7669 static void
7670 sensor_i2c_proxy_class_init (SensorI2cProxyClass *klass)
7671 {
7672   GObjectClass *gobject_class;
7673   GDBusProxyClass *proxy_class;
7674 
7675   gobject_class = G_OBJECT_CLASS (klass);
7676   gobject_class->finalize     = sensor_i2c_proxy_finalize;
7677   gobject_class->get_property = sensor_i2c_proxy_get_property;
7678   gobject_class->set_property = sensor_i2c_proxy_set_property;
7679 
7680   proxy_class = G_DBUS_PROXY_CLASS (klass);
7681   proxy_class->g_signal = sensor_i2c_proxy_g_signal;
7682   proxy_class->g_properties_changed = sensor_i2c_proxy_g_properties_changed;
7683 
7684   sensor_i2c_override_properties (gobject_class, 1);
7685 
7686 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
7687   g_type_class_add_private (klass, sizeof (SensorI2cProxyPrivate));
7688 #endif
7689 }
7690 
7691 static void
7692 sensor_i2c_proxy_iface_init (SensorI2cIface *iface)
7693 {
7694   iface->get_dev_path = sensor_i2c_proxy_get_dev_path;
7695   iface->get_address = sensor_i2c_proxy_get_address;
7696 }
7697 
7698 /**
7699  * sensor_i2c_proxy_new:
7700  * @connection: A #GDBusConnection.
7701  * @flags: Flags from the #GDBusProxyFlags enumeration.
7702  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
7703  * @object_path: An object path.
7704  * @cancellable: (allow-none): A #GCancellable or %NULL.
7705  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
7706  * @user_data: User data to pass to @callback.
7707  *
7708  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorI2c.top_of_page">org.openbmc.SensorI2c</link>. See g_dbus_proxy_new() for more details.
7709  *
7710  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
7711  * You can then call sensor_i2c_proxy_new_finish() to get the result of the operation.
7712  *
7713  * See sensor_i2c_proxy_new_sync() for the synchronous, blocking version of this constructor.
7714  */
7715 void
7716 sensor_i2c_proxy_new (
7717     GDBusConnection     *connection,
7718     GDBusProxyFlags      flags,
7719     const gchar         *name,
7720     const gchar         *object_path,
7721     GCancellable        *cancellable,
7722     GAsyncReadyCallback  callback,
7723     gpointer             user_data)
7724 {
7725   g_async_initable_new_async (TYPE_SENSOR_I2C_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.openbmc.SensorI2c", NULL);
7726 }
7727 
7728 /**
7729  * sensor_i2c_proxy_new_finish:
7730  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_i2c_proxy_new().
7731  * @error: Return location for error or %NULL
7732  *
7733  * Finishes an operation started with sensor_i2c_proxy_new().
7734  *
7735  * Returns: (transfer full) (type SensorI2cProxy): The constructed proxy object or %NULL if @error is set.
7736  */
7737 SensorI2c *
7738 sensor_i2c_proxy_new_finish (
7739     GAsyncResult        *res,
7740     GError             **error)
7741 {
7742   GObject *ret;
7743   GObject *source_object;
7744   source_object = g_async_result_get_source_object (res);
7745   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
7746   g_object_unref (source_object);
7747   if (ret != NULL)
7748     return SENSOR_I2C (ret);
7749   else
7750     return NULL;
7751 }
7752 
7753 /**
7754  * sensor_i2c_proxy_new_sync:
7755  * @connection: A #GDBusConnection.
7756  * @flags: Flags from the #GDBusProxyFlags enumeration.
7757  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
7758  * @object_path: An object path.
7759  * @cancellable: (allow-none): A #GCancellable or %NULL.
7760  * @error: Return location for error or %NULL
7761  *
7762  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorI2c.top_of_page">org.openbmc.SensorI2c</link>. See g_dbus_proxy_new_sync() for more details.
7763  *
7764  * The calling thread is blocked until a reply is received.
7765  *
7766  * See sensor_i2c_proxy_new() for the asynchronous version of this constructor.
7767  *
7768  * Returns: (transfer full) (type SensorI2cProxy): The constructed proxy object or %NULL if @error is set.
7769  */
7770 SensorI2c *
7771 sensor_i2c_proxy_new_sync (
7772     GDBusConnection     *connection,
7773     GDBusProxyFlags      flags,
7774     const gchar         *name,
7775     const gchar         *object_path,
7776     GCancellable        *cancellable,
7777     GError             **error)
7778 {
7779   GInitable *ret;
7780   ret = g_initable_new (TYPE_SENSOR_I2C_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.SensorI2c", NULL);
7781   if (ret != NULL)
7782     return SENSOR_I2C (ret);
7783   else
7784     return NULL;
7785 }
7786 
7787 
7788 /**
7789  * sensor_i2c_proxy_new_for_bus:
7790  * @bus_type: A #GBusType.
7791  * @flags: Flags from the #GDBusProxyFlags enumeration.
7792  * @name: A bus name (well-known or unique).
7793  * @object_path: An object path.
7794  * @cancellable: (allow-none): A #GCancellable or %NULL.
7795  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
7796  * @user_data: User data to pass to @callback.
7797  *
7798  * Like sensor_i2c_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
7799  *
7800  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
7801  * You can then call sensor_i2c_proxy_new_for_bus_finish() to get the result of the operation.
7802  *
7803  * See sensor_i2c_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
7804  */
7805 void
7806 sensor_i2c_proxy_new_for_bus (
7807     GBusType             bus_type,
7808     GDBusProxyFlags      flags,
7809     const gchar         *name,
7810     const gchar         *object_path,
7811     GCancellable        *cancellable,
7812     GAsyncReadyCallback  callback,
7813     gpointer             user_data)
7814 {
7815   g_async_initable_new_async (TYPE_SENSOR_I2C_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.openbmc.SensorI2c", NULL);
7816 }
7817 
7818 /**
7819  * sensor_i2c_proxy_new_for_bus_finish:
7820  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_i2c_proxy_new_for_bus().
7821  * @error: Return location for error or %NULL
7822  *
7823  * Finishes an operation started with sensor_i2c_proxy_new_for_bus().
7824  *
7825  * Returns: (transfer full) (type SensorI2cProxy): The constructed proxy object or %NULL if @error is set.
7826  */
7827 SensorI2c *
7828 sensor_i2c_proxy_new_for_bus_finish (
7829     GAsyncResult        *res,
7830     GError             **error)
7831 {
7832   GObject *ret;
7833   GObject *source_object;
7834   source_object = g_async_result_get_source_object (res);
7835   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
7836   g_object_unref (source_object);
7837   if (ret != NULL)
7838     return SENSOR_I2C (ret);
7839   else
7840     return NULL;
7841 }
7842 
7843 /**
7844  * sensor_i2c_proxy_new_for_bus_sync:
7845  * @bus_type: A #GBusType.
7846  * @flags: Flags from the #GDBusProxyFlags enumeration.
7847  * @name: A bus name (well-known or unique).
7848  * @object_path: An object path.
7849  * @cancellable: (allow-none): A #GCancellable or %NULL.
7850  * @error: Return location for error or %NULL
7851  *
7852  * Like sensor_i2c_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
7853  *
7854  * The calling thread is blocked until a reply is received.
7855  *
7856  * See sensor_i2c_proxy_new_for_bus() for the asynchronous version of this constructor.
7857  *
7858  * Returns: (transfer full) (type SensorI2cProxy): The constructed proxy object or %NULL if @error is set.
7859  */
7860 SensorI2c *
7861 sensor_i2c_proxy_new_for_bus_sync (
7862     GBusType             bus_type,
7863     GDBusProxyFlags      flags,
7864     const gchar         *name,
7865     const gchar         *object_path,
7866     GCancellable        *cancellable,
7867     GError             **error)
7868 {
7869   GInitable *ret;
7870   ret = g_initable_new (TYPE_SENSOR_I2C_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.SensorI2c", NULL);
7871   if (ret != NULL)
7872     return SENSOR_I2C (ret);
7873   else
7874     return NULL;
7875 }
7876 
7877 
7878 /* ------------------------------------------------------------------------ */
7879 
7880 /**
7881  * SensorI2cSkeleton:
7882  *
7883  * The #SensorI2cSkeleton structure contains only private data and should only be accessed using the provided API.
7884  */
7885 
7886 /**
7887  * SensorI2cSkeletonClass:
7888  * @parent_class: The parent class.
7889  *
7890  * Class structure for #SensorI2cSkeleton.
7891  */
7892 
7893 struct _SensorI2cSkeletonPrivate
7894 {
7895   GValue *properties;
7896   GList *changed_properties;
7897   GSource *changed_properties_idle_source;
7898   GMainContext *context;
7899   GMutex lock;
7900 };
7901 
7902 static void
7903 _sensor_i2c_skeleton_handle_method_call (
7904   GDBusConnection *connection G_GNUC_UNUSED,
7905   const gchar *sender G_GNUC_UNUSED,
7906   const gchar *object_path G_GNUC_UNUSED,
7907   const gchar *interface_name,
7908   const gchar *method_name,
7909   GVariant *parameters,
7910   GDBusMethodInvocation *invocation,
7911   gpointer user_data)
7912 {
7913   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (user_data);
7914   _ExtendedGDBusMethodInfo *info;
7915   GVariantIter iter;
7916   GVariant *child;
7917   GValue *paramv;
7918   guint num_params;
7919   guint num_extra;
7920   guint n;
7921   guint signal_id;
7922   GValue return_value = G_VALUE_INIT;
7923   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
7924   g_assert (info != NULL);
7925   num_params = g_variant_n_children (parameters);
7926   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
7927   n = 0;
7928   g_value_init (&paramv[n], TYPE_SENSOR_I2C);
7929   g_value_set_object (&paramv[n++], skeleton);
7930   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
7931   g_value_set_object (&paramv[n++], invocation);
7932   if (info->pass_fdlist)
7933     {
7934 #ifdef G_OS_UNIX
7935       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
7936       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
7937 #else
7938       g_assert_not_reached ();
7939 #endif
7940     }
7941   g_variant_iter_init (&iter, parameters);
7942   while ((child = g_variant_iter_next_value (&iter)) != NULL)
7943     {
7944       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
7945       if (arg_info->use_gvariant)
7946         {
7947           g_value_init (&paramv[n], G_TYPE_VARIANT);
7948           g_value_set_variant (&paramv[n], child);
7949           n++;
7950         }
7951       else
7952         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
7953       g_variant_unref (child);
7954     }
7955   signal_id = g_signal_lookup (info->signal_name, TYPE_SENSOR_I2C);
7956   g_value_init (&return_value, G_TYPE_BOOLEAN);
7957   g_signal_emitv (paramv, signal_id, 0, &return_value);
7958   if (!g_value_get_boolean (&return_value))
7959     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);
7960   g_value_unset (&return_value);
7961   for (n = 0; n < num_params + num_extra; n++)
7962     g_value_unset (&paramv[n]);
7963   g_free (paramv);
7964 }
7965 
7966 static GVariant *
7967 _sensor_i2c_skeleton_handle_get_property (
7968   GDBusConnection *connection G_GNUC_UNUSED,
7969   const gchar *sender G_GNUC_UNUSED,
7970   const gchar *object_path G_GNUC_UNUSED,
7971   const gchar *interface_name G_GNUC_UNUSED,
7972   const gchar *property_name,
7973   GError **error,
7974   gpointer user_data)
7975 {
7976   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (user_data);
7977   GValue value = G_VALUE_INIT;
7978   GParamSpec *pspec;
7979   _ExtendedGDBusPropertyInfo *info;
7980   GVariant *ret;
7981   ret = NULL;
7982   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_i2c_interface_info.parent_struct, property_name);
7983   g_assert (info != NULL);
7984   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
7985   if (pspec == NULL)
7986     {
7987       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
7988     }
7989   else
7990     {
7991       g_value_init (&value, pspec->value_type);
7992       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
7993       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
7994       g_value_unset (&value);
7995     }
7996   return ret;
7997 }
7998 
7999 static gboolean
8000 _sensor_i2c_skeleton_handle_set_property (
8001   GDBusConnection *connection G_GNUC_UNUSED,
8002   const gchar *sender G_GNUC_UNUSED,
8003   const gchar *object_path G_GNUC_UNUSED,
8004   const gchar *interface_name G_GNUC_UNUSED,
8005   const gchar *property_name,
8006   GVariant *variant,
8007   GError **error,
8008   gpointer user_data)
8009 {
8010   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (user_data);
8011   GValue value = G_VALUE_INIT;
8012   GParamSpec *pspec;
8013   _ExtendedGDBusPropertyInfo *info;
8014   gboolean ret;
8015   ret = FALSE;
8016   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_i2c_interface_info.parent_struct, property_name);
8017   g_assert (info != NULL);
8018   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
8019   if (pspec == NULL)
8020     {
8021       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
8022     }
8023   else
8024     {
8025       if (info->use_gvariant)
8026         g_value_set_variant (&value, variant);
8027       else
8028         g_dbus_gvariant_to_gvalue (variant, &value);
8029       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
8030       g_value_unset (&value);
8031       ret = TRUE;
8032     }
8033   return ret;
8034 }
8035 
8036 static const GDBusInterfaceVTable _sensor_i2c_skeleton_vtable =
8037 {
8038   _sensor_i2c_skeleton_handle_method_call,
8039   _sensor_i2c_skeleton_handle_get_property,
8040   _sensor_i2c_skeleton_handle_set_property,
8041   {NULL}
8042 };
8043 
8044 static GDBusInterfaceInfo *
8045 sensor_i2c_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
8046 {
8047   return sensor_i2c_interface_info ();
8048 }
8049 
8050 static GDBusInterfaceVTable *
8051 sensor_i2c_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
8052 {
8053   return (GDBusInterfaceVTable *) &_sensor_i2c_skeleton_vtable;
8054 }
8055 
8056 static GVariant *
8057 sensor_i2c_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
8058 {
8059   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (_skeleton);
8060 
8061   GVariantBuilder builder;
8062   guint n;
8063   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
8064   if (_sensor_i2c_interface_info.parent_struct.properties == NULL)
8065     goto out;
8066   for (n = 0; _sensor_i2c_interface_info.parent_struct.properties[n] != NULL; n++)
8067     {
8068       GDBusPropertyInfo *info = _sensor_i2c_interface_info.parent_struct.properties[n];
8069       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
8070         {
8071           GVariant *value;
8072           value = _sensor_i2c_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.openbmc.SensorI2c", info->name, NULL, skeleton);
8073           if (value != NULL)
8074             {
8075               g_variant_take_ref (value);
8076               g_variant_builder_add (&builder, "{sv}", info->name, value);
8077               g_variant_unref (value);
8078             }
8079         }
8080     }
8081 out:
8082   return g_variant_builder_end (&builder);
8083 }
8084 
8085 static gboolean _sensor_i2c_emit_changed (gpointer user_data);
8086 
8087 static void
8088 sensor_i2c_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
8089 {
8090   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (_skeleton);
8091   gboolean emit_changed = FALSE;
8092 
8093   g_mutex_lock (&skeleton->priv->lock);
8094   if (skeleton->priv->changed_properties_idle_source != NULL)
8095     {
8096       g_source_destroy (skeleton->priv->changed_properties_idle_source);
8097       skeleton->priv->changed_properties_idle_source = NULL;
8098       emit_changed = TRUE;
8099     }
8100   g_mutex_unlock (&skeleton->priv->lock);
8101 
8102   if (emit_changed)
8103     _sensor_i2c_emit_changed (skeleton);
8104 }
8105 
8106 static void sensor_i2c_skeleton_iface_init (SensorI2cIface *iface);
8107 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
8108 G_DEFINE_TYPE_WITH_CODE (SensorI2cSkeleton, sensor_i2c_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
8109                          G_ADD_PRIVATE (SensorI2cSkeleton)
8110                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_I2C, sensor_i2c_skeleton_iface_init));
8111 
8112 #else
8113 G_DEFINE_TYPE_WITH_CODE (SensorI2cSkeleton, sensor_i2c_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
8114                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_I2C, sensor_i2c_skeleton_iface_init));
8115 
8116 #endif
8117 static void
8118 sensor_i2c_skeleton_finalize (GObject *object)
8119 {
8120   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (object);
8121   guint n;
8122   for (n = 0; n < 2; n++)
8123     g_value_unset (&skeleton->priv->properties[n]);
8124   g_free (skeleton->priv->properties);
8125   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
8126   if (skeleton->priv->changed_properties_idle_source != NULL)
8127     g_source_destroy (skeleton->priv->changed_properties_idle_source);
8128   g_main_context_unref (skeleton->priv->context);
8129   g_mutex_clear (&skeleton->priv->lock);
8130   G_OBJECT_CLASS (sensor_i2c_skeleton_parent_class)->finalize (object);
8131 }
8132 
8133 static void
8134 sensor_i2c_skeleton_get_property (GObject      *object,
8135   guint         prop_id,
8136   GValue       *value,
8137   GParamSpec   *pspec G_GNUC_UNUSED)
8138 {
8139   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (object);
8140   g_assert (prop_id != 0 && prop_id - 1 < 2);
8141   g_mutex_lock (&skeleton->priv->lock);
8142   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
8143   g_mutex_unlock (&skeleton->priv->lock);
8144 }
8145 
8146 static gboolean
8147 _sensor_i2c_emit_changed (gpointer user_data)
8148 {
8149   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (user_data);
8150   GList *l;
8151   GVariantBuilder builder;
8152   GVariantBuilder invalidated_builder;
8153   guint num_changes;
8154 
8155   g_mutex_lock (&skeleton->priv->lock);
8156   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
8157   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
8158   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
8159     {
8160       ChangedProperty *cp = l->data;
8161       GVariant *variant;
8162       const GValue *cur_value;
8163 
8164       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
8165       if (!_g_value_equal (cur_value, &cp->orig_value))
8166         {
8167           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
8168           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
8169           g_variant_unref (variant);
8170           num_changes++;
8171         }
8172     }
8173   if (num_changes > 0)
8174     {
8175       GList *connections, *ll;
8176       GVariant *signal_variant;
8177       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.SensorI2c",
8178                                            &builder, &invalidated_builder));
8179       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
8180       for (ll = connections; ll != NULL; ll = ll->next)
8181         {
8182           GDBusConnection *connection = ll->data;
8183 
8184           g_dbus_connection_emit_signal (connection,
8185                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
8186                                          "org.freedesktop.DBus.Properties",
8187                                          "PropertiesChanged",
8188                                          signal_variant,
8189                                          NULL);
8190         }
8191       g_variant_unref (signal_variant);
8192       g_list_free_full (connections, g_object_unref);
8193     }
8194   else
8195     {
8196       g_variant_builder_clear (&builder);
8197       g_variant_builder_clear (&invalidated_builder);
8198     }
8199   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
8200   skeleton->priv->changed_properties = NULL;
8201   skeleton->priv->changed_properties_idle_source = NULL;
8202   g_mutex_unlock (&skeleton->priv->lock);
8203   return FALSE;
8204 }
8205 
8206 static void
8207 _sensor_i2c_schedule_emit_changed (SensorI2cSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
8208 {
8209   ChangedProperty *cp;
8210   GList *l;
8211   cp = NULL;
8212   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
8213     {
8214       ChangedProperty *i_cp = l->data;
8215       if (i_cp->info == info)
8216         {
8217           cp = i_cp;
8218           break;
8219         }
8220     }
8221   if (cp == NULL)
8222     {
8223       cp = g_new0 (ChangedProperty, 1);
8224       cp->prop_id = prop_id;
8225       cp->info = info;
8226       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
8227       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
8228       g_value_copy (orig_value, &cp->orig_value);
8229     }
8230 }
8231 
8232 static void
8233 sensor_i2c_skeleton_notify (GObject      *object,
8234   GParamSpec *pspec G_GNUC_UNUSED)
8235 {
8236   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (object);
8237   g_mutex_lock (&skeleton->priv->lock);
8238   if (skeleton->priv->changed_properties != NULL &&
8239       skeleton->priv->changed_properties_idle_source == NULL)
8240     {
8241       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
8242       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
8243       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_i2c_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
8244       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
8245       g_source_unref (skeleton->priv->changed_properties_idle_source);
8246     }
8247   g_mutex_unlock (&skeleton->priv->lock);
8248 }
8249 
8250 static void
8251 sensor_i2c_skeleton_set_property (GObject      *object,
8252   guint         prop_id,
8253   const GValue *value,
8254   GParamSpec   *pspec)
8255 {
8256   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (object);
8257   g_assert (prop_id != 0 && prop_id - 1 < 2);
8258   g_mutex_lock (&skeleton->priv->lock);
8259   g_object_freeze_notify (object);
8260   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
8261     {
8262       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
8263         _sensor_i2c_schedule_emit_changed (skeleton, _sensor_i2c_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
8264       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
8265       g_object_notify_by_pspec (object, pspec);
8266     }
8267   g_mutex_unlock (&skeleton->priv->lock);
8268   g_object_thaw_notify (object);
8269 }
8270 
8271 static void
8272 sensor_i2c_skeleton_init (SensorI2cSkeleton *skeleton)
8273 {
8274 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
8275   skeleton->priv = sensor_i2c_skeleton_get_instance_private (skeleton);
8276 #else
8277   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_SENSOR_I2C_SKELETON, SensorI2cSkeletonPrivate);
8278 #endif
8279 
8280   g_mutex_init (&skeleton->priv->lock);
8281   skeleton->priv->context = g_main_context_ref_thread_default ();
8282   skeleton->priv->properties = g_new0 (GValue, 2);
8283   g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING);
8284   g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING);
8285 }
8286 
8287 static const gchar *
8288 sensor_i2c_skeleton_get_dev_path (SensorI2c *object)
8289 {
8290   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (object);
8291   const gchar *value;
8292   g_mutex_lock (&skeleton->priv->lock);
8293   value = g_value_get_string (&(skeleton->priv->properties[0]));
8294   g_mutex_unlock (&skeleton->priv->lock);
8295   return value;
8296 }
8297 
8298 static const gchar *
8299 sensor_i2c_skeleton_get_address (SensorI2c *object)
8300 {
8301   SensorI2cSkeleton *skeleton = SENSOR_I2C_SKELETON (object);
8302   const gchar *value;
8303   g_mutex_lock (&skeleton->priv->lock);
8304   value = g_value_get_string (&(skeleton->priv->properties[1]));
8305   g_mutex_unlock (&skeleton->priv->lock);
8306   return value;
8307 }
8308 
8309 static void
8310 sensor_i2c_skeleton_class_init (SensorI2cSkeletonClass *klass)
8311 {
8312   GObjectClass *gobject_class;
8313   GDBusInterfaceSkeletonClass *skeleton_class;
8314 
8315   gobject_class = G_OBJECT_CLASS (klass);
8316   gobject_class->finalize = sensor_i2c_skeleton_finalize;
8317   gobject_class->get_property = sensor_i2c_skeleton_get_property;
8318   gobject_class->set_property = sensor_i2c_skeleton_set_property;
8319   gobject_class->notify       = sensor_i2c_skeleton_notify;
8320 
8321 
8322   sensor_i2c_override_properties (gobject_class, 1);
8323 
8324   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
8325   skeleton_class->get_info = sensor_i2c_skeleton_dbus_interface_get_info;
8326   skeleton_class->get_properties = sensor_i2c_skeleton_dbus_interface_get_properties;
8327   skeleton_class->flush = sensor_i2c_skeleton_dbus_interface_flush;
8328   skeleton_class->get_vtable = sensor_i2c_skeleton_dbus_interface_get_vtable;
8329 
8330 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
8331   g_type_class_add_private (klass, sizeof (SensorI2cSkeletonPrivate));
8332 #endif
8333 }
8334 
8335 static void
8336 sensor_i2c_skeleton_iface_init (SensorI2cIface *iface)
8337 {
8338   iface->get_dev_path = sensor_i2c_skeleton_get_dev_path;
8339   iface->get_address = sensor_i2c_skeleton_get_address;
8340 }
8341 
8342 /**
8343  * sensor_i2c_skeleton_new:
8344  *
8345  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorI2c.top_of_page">org.openbmc.SensorI2c</link>.
8346  *
8347  * Returns: (transfer full) (type SensorI2cSkeleton): The skeleton object.
8348  */
8349 SensorI2c *
8350 sensor_i2c_skeleton_new (void)
8351 {
8352   return SENSOR_I2C (g_object_new (TYPE_SENSOR_I2C_SKELETON, NULL));
8353 }
8354 
8355 /* ------------------------------------------------------------------------
8356  * Code for interface org.openbmc.SensorMatch
8357  * ------------------------------------------------------------------------
8358  */
8359 
8360 /**
8361  * SECTION:SensorMatch
8362  * @title: SensorMatch
8363  * @short_description: Generated C code for the org.openbmc.SensorMatch D-Bus interface
8364  *
8365  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-SensorMatch.top_of_page">org.openbmc.SensorMatch</link> D-Bus interface in C.
8366  */
8367 
8368 /* ---- Introspection data for org.openbmc.SensorMatch ---- */
8369 
8370 static const _ExtendedGDBusArgInfo _sensor_match_signal_info_sensor_match_ARG_state =
8371 {
8372   {
8373     -1,
8374     (gchar *) "state",
8375     (gchar *) "y",
8376     NULL
8377   },
8378   FALSE
8379 };
8380 
8381 static const _ExtendedGDBusArgInfo * const _sensor_match_signal_info_sensor_match_ARG_pointers[] =
8382 {
8383   &_sensor_match_signal_info_sensor_match_ARG_state,
8384   NULL
8385 };
8386 
8387 static const _ExtendedGDBusSignalInfo _sensor_match_signal_info_sensor_match =
8388 {
8389   {
8390     -1,
8391     (gchar *) "SensorMatch",
8392     (GDBusArgInfo **) &_sensor_match_signal_info_sensor_match_ARG_pointers,
8393     NULL
8394   },
8395   "sensor-match"
8396 };
8397 
8398 static const _ExtendedGDBusSignalInfo * const _sensor_match_signal_info_pointers[] =
8399 {
8400   &_sensor_match_signal_info_sensor_match,
8401   NULL
8402 };
8403 
8404 static const _ExtendedGDBusPropertyInfo _sensor_match_property_info_match_value =
8405 {
8406   {
8407     -1,
8408     (gchar *) "match_value",
8409     (gchar *) "v",
8410     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
8411     NULL
8412   },
8413   "match-value",
8414   FALSE
8415 };
8416 
8417 static const _ExtendedGDBusPropertyInfo _sensor_match_property_info_state =
8418 {
8419   {
8420     -1,
8421     (gchar *) "state",
8422     (gchar *) "y",
8423     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
8424     NULL
8425   },
8426   "state",
8427   FALSE
8428 };
8429 
8430 static const _ExtendedGDBusPropertyInfo * const _sensor_match_property_info_pointers[] =
8431 {
8432   &_sensor_match_property_info_match_value,
8433   &_sensor_match_property_info_state,
8434   NULL
8435 };
8436 
8437 static const _ExtendedGDBusInterfaceInfo _sensor_match_interface_info =
8438 {
8439   {
8440     -1,
8441     (gchar *) "org.openbmc.SensorMatch",
8442     NULL,
8443     (GDBusSignalInfo **) &_sensor_match_signal_info_pointers,
8444     (GDBusPropertyInfo **) &_sensor_match_property_info_pointers,
8445     NULL
8446   },
8447   "sensor-match",
8448 };
8449 
8450 
8451 /**
8452  * sensor_match_interface_info:
8453  *
8454  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-SensorMatch.top_of_page">org.openbmc.SensorMatch</link> D-Bus interface.
8455  *
8456  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
8457  */
8458 GDBusInterfaceInfo *
8459 sensor_match_interface_info (void)
8460 {
8461   return (GDBusInterfaceInfo *) &_sensor_match_interface_info.parent_struct;
8462 }
8463 
8464 /**
8465  * sensor_match_override_properties:
8466  * @klass: The class structure for a #GObject<!-- -->-derived class.
8467  * @property_id_begin: The property id to assign to the first overridden property.
8468  *
8469  * Overrides all #GObject properties in the #SensorMatch interface for a concrete class.
8470  * The properties are overridden in the order they are defined.
8471  *
8472  * Returns: The last property id.
8473  */
8474 guint
8475 sensor_match_override_properties (GObjectClass *klass, guint property_id_begin)
8476 {
8477   g_object_class_override_property (klass, property_id_begin++, "match-value");
8478   g_object_class_override_property (klass, property_id_begin++, "state");
8479   return property_id_begin - 1;
8480 }
8481 
8482 
8483 
8484 /**
8485  * SensorMatch:
8486  *
8487  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorMatch.top_of_page">org.openbmc.SensorMatch</link>.
8488  */
8489 
8490 /**
8491  * SensorMatchIface:
8492  * @parent_iface: The parent interface.
8493  * @get_match_value: Getter for the #SensorMatch:match-value property.
8494  * @get_state: Getter for the #SensorMatch:state property.
8495  * @sensor_match: Handler for the #SensorMatch::sensor-match signal.
8496  *
8497  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorMatch.top_of_page">org.openbmc.SensorMatch</link>.
8498  */
8499 
8500 typedef SensorMatchIface SensorMatchInterface;
8501 G_DEFINE_INTERFACE (SensorMatch, sensor_match, G_TYPE_OBJECT);
8502 
8503 static void
8504 sensor_match_default_init (SensorMatchIface *iface)
8505 {
8506   /* GObject signals for received D-Bus signals: */
8507   /**
8508    * SensorMatch::sensor-match:
8509    * @object: A #SensorMatch.
8510    * @arg_state: Argument.
8511    *
8512    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-SensorMatch.SensorMatch">"SensorMatch"</link> is received.
8513    *
8514    * 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.
8515    */
8516   g_signal_new ("sensor-match",
8517     G_TYPE_FROM_INTERFACE (iface),
8518     G_SIGNAL_RUN_LAST,
8519     G_STRUCT_OFFSET (SensorMatchIface, sensor_match),
8520     NULL,
8521     NULL,
8522     g_cclosure_marshal_generic,
8523     G_TYPE_NONE,
8524     1, G_TYPE_UCHAR);
8525 
8526   /* GObject properties for D-Bus properties: */
8527   /**
8528    * SensorMatch:match-value:
8529    *
8530    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorMatch.match_value">"match_value"</link>.
8531    *
8532    * 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.
8533    */
8534   g_object_interface_install_property (iface,
8535     g_param_spec_variant ("match-value", "match_value", "match_value", G_VARIANT_TYPE ("v"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
8536   /**
8537    * SensorMatch:state:
8538    *
8539    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SensorMatch.state">"state"</link>.
8540    *
8541    * 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.
8542    */
8543   g_object_interface_install_property (iface,
8544     g_param_spec_uchar ("state", "state", "state", 0, 255, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
8545 }
8546 
8547 /**
8548  * sensor_match_get_match_value: (skip)
8549  * @object: A #SensorMatch.
8550  *
8551  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorMatch.match_value">"match_value"</link> D-Bus property.
8552  *
8553  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
8554  *
8555  * <warning>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 sensor_match_dup_match_value() if on another thread.</warning>
8556  *
8557  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
8558  */
8559 GVariant *
8560 sensor_match_get_match_value (SensorMatch *object)
8561 {
8562   return SENSOR_MATCH_GET_IFACE (object)->get_match_value (object);
8563 }
8564 
8565 /**
8566  * sensor_match_dup_match_value: (skip)
8567  * @object: A #SensorMatch.
8568  *
8569  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-SensorMatch.match_value">"match_value"</link> D-Bus property.
8570  *
8571  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
8572  *
8573  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref().
8574  */
8575 GVariant *
8576 sensor_match_dup_match_value (SensorMatch *object)
8577 {
8578   GVariant *value;
8579   g_object_get (G_OBJECT (object), "match-value", &value, NULL);
8580   return value;
8581 }
8582 
8583 /**
8584  * sensor_match_set_match_value: (skip)
8585  * @object: A #SensorMatch.
8586  * @value: The value to set.
8587  *
8588  * Sets the <link linkend="gdbus-property-org-openbmc-SensorMatch.match_value">"match_value"</link> D-Bus property to @value.
8589  *
8590  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
8591  */
8592 void
8593 sensor_match_set_match_value (SensorMatch *object, GVariant *value)
8594 {
8595   g_object_set (G_OBJECT (object), "match-value", value, NULL);
8596 }
8597 
8598 /**
8599  * sensor_match_get_state: (skip)
8600  * @object: A #SensorMatch.
8601  *
8602  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SensorMatch.state">"state"</link> D-Bus property.
8603  *
8604  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
8605  *
8606  * Returns: The property value.
8607  */
8608 guchar
8609 sensor_match_get_state (SensorMatch *object)
8610 {
8611   return SENSOR_MATCH_GET_IFACE (object)->get_state (object);
8612 }
8613 
8614 /**
8615  * sensor_match_set_state: (skip)
8616  * @object: A #SensorMatch.
8617  * @value: The value to set.
8618  *
8619  * Sets the <link linkend="gdbus-property-org-openbmc-SensorMatch.state">"state"</link> D-Bus property to @value.
8620  *
8621  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
8622  */
8623 void
8624 sensor_match_set_state (SensorMatch *object, guchar value)
8625 {
8626   g_object_set (G_OBJECT (object), "state", value, NULL);
8627 }
8628 
8629 /**
8630  * sensor_match_emit_sensor_match:
8631  * @object: A #SensorMatch.
8632  * @arg_state: Argument to pass with the signal.
8633  *
8634  * Emits the <link linkend="gdbus-signal-org-openbmc-SensorMatch.SensorMatch">"SensorMatch"</link> D-Bus signal.
8635  */
8636 void
8637 sensor_match_emit_sensor_match (
8638     SensorMatch *object,
8639     guchar arg_state)
8640 {
8641   g_signal_emit_by_name (object, "sensor-match", arg_state);
8642 }
8643 
8644 /* ------------------------------------------------------------------------ */
8645 
8646 /**
8647  * SensorMatchProxy:
8648  *
8649  * The #SensorMatchProxy structure contains only private data and should only be accessed using the provided API.
8650  */
8651 
8652 /**
8653  * SensorMatchProxyClass:
8654  * @parent_class: The parent class.
8655  *
8656  * Class structure for #SensorMatchProxy.
8657  */
8658 
8659 struct _SensorMatchProxyPrivate
8660 {
8661   GData *qdata;
8662 };
8663 
8664 static void sensor_match_proxy_iface_init (SensorMatchIface *iface);
8665 
8666 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
8667 G_DEFINE_TYPE_WITH_CODE (SensorMatchProxy, sensor_match_proxy, G_TYPE_DBUS_PROXY,
8668                          G_ADD_PRIVATE (SensorMatchProxy)
8669                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_MATCH, sensor_match_proxy_iface_init));
8670 
8671 #else
8672 G_DEFINE_TYPE_WITH_CODE (SensorMatchProxy, sensor_match_proxy, G_TYPE_DBUS_PROXY,
8673                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_MATCH, sensor_match_proxy_iface_init));
8674 
8675 #endif
8676 static void
8677 sensor_match_proxy_finalize (GObject *object)
8678 {
8679   SensorMatchProxy *proxy = SENSOR_MATCH_PROXY (object);
8680   g_datalist_clear (&proxy->priv->qdata);
8681   G_OBJECT_CLASS (sensor_match_proxy_parent_class)->finalize (object);
8682 }
8683 
8684 static void
8685 sensor_match_proxy_get_property (GObject      *object,
8686   guint         prop_id,
8687   GValue       *value,
8688   GParamSpec   *pspec G_GNUC_UNUSED)
8689 {
8690   const _ExtendedGDBusPropertyInfo *info;
8691   GVariant *variant;
8692   g_assert (prop_id != 0 && prop_id - 1 < 2);
8693   info = _sensor_match_property_info_pointers[prop_id - 1];
8694   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
8695   if (info->use_gvariant)
8696     {
8697       g_value_set_variant (value, variant);
8698     }
8699   else
8700     {
8701       if (variant != NULL)
8702         g_dbus_gvariant_to_gvalue (variant, value);
8703     }
8704   if (variant != NULL)
8705     g_variant_unref (variant);
8706 }
8707 
8708 static void
8709 sensor_match_proxy_set_property_cb (GDBusProxy *proxy,
8710   GAsyncResult *res,
8711   gpointer      user_data)
8712 {
8713   const _ExtendedGDBusPropertyInfo *info = user_data;
8714   GError *error;
8715   GVariant *_ret;
8716   error = NULL;
8717   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
8718   if (!_ret)
8719     {
8720       g_warning ("Error setting property '%s' on interface org.openbmc.SensorMatch: %s (%s, %d)",
8721                  info->parent_struct.name,
8722                  error->message, g_quark_to_string (error->domain), error->code);
8723       g_error_free (error);
8724     }
8725   else
8726     {
8727       g_variant_unref (_ret);
8728     }
8729 }
8730 
8731 static void
8732 sensor_match_proxy_set_property (GObject      *object,
8733   guint         prop_id,
8734   const GValue *value,
8735   GParamSpec   *pspec G_GNUC_UNUSED)
8736 {
8737   const _ExtendedGDBusPropertyInfo *info;
8738   GVariant *variant;
8739   g_assert (prop_id != 0 && prop_id - 1 < 2);
8740   info = _sensor_match_property_info_pointers[prop_id - 1];
8741   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
8742   g_dbus_proxy_call (G_DBUS_PROXY (object),
8743     "org.freedesktop.DBus.Properties.Set",
8744     g_variant_new ("(ssv)", "org.openbmc.SensorMatch", info->parent_struct.name, variant),
8745     G_DBUS_CALL_FLAGS_NONE,
8746     -1,
8747     NULL, (GAsyncReadyCallback) sensor_match_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
8748   g_variant_unref (variant);
8749 }
8750 
8751 static void
8752 sensor_match_proxy_g_signal (GDBusProxy *proxy,
8753   const gchar *sender_name G_GNUC_UNUSED,
8754   const gchar *signal_name,
8755   GVariant *parameters)
8756 {
8757   _ExtendedGDBusSignalInfo *info;
8758   GVariantIter iter;
8759   GVariant *child;
8760   GValue *paramv;
8761   guint num_params;
8762   guint n;
8763   guint signal_id;
8764   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_sensor_match_interface_info.parent_struct, signal_name);
8765   if (info == NULL)
8766     return;
8767   num_params = g_variant_n_children (parameters);
8768   paramv = g_new0 (GValue, num_params + 1);
8769   g_value_init (&paramv[0], TYPE_SENSOR_MATCH);
8770   g_value_set_object (&paramv[0], proxy);
8771   g_variant_iter_init (&iter, parameters);
8772   n = 1;
8773   while ((child = g_variant_iter_next_value (&iter)) != NULL)
8774     {
8775       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
8776       if (arg_info->use_gvariant)
8777         {
8778           g_value_init (&paramv[n], G_TYPE_VARIANT);
8779           g_value_set_variant (&paramv[n], child);
8780           n++;
8781         }
8782       else
8783         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
8784       g_variant_unref (child);
8785     }
8786   signal_id = g_signal_lookup (info->signal_name, TYPE_SENSOR_MATCH);
8787   g_signal_emitv (paramv, signal_id, 0, NULL);
8788   for (n = 0; n < num_params + 1; n++)
8789     g_value_unset (&paramv[n]);
8790   g_free (paramv);
8791 }
8792 
8793 static void
8794 sensor_match_proxy_g_properties_changed (GDBusProxy *_proxy,
8795   GVariant *changed_properties,
8796   const gchar *const *invalidated_properties)
8797 {
8798   SensorMatchProxy *proxy = SENSOR_MATCH_PROXY (_proxy);
8799   guint n;
8800   const gchar *key;
8801   GVariantIter *iter;
8802   _ExtendedGDBusPropertyInfo *info;
8803   g_variant_get (changed_properties, "a{sv}", &iter);
8804   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
8805     {
8806       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_match_interface_info.parent_struct, key);
8807       g_datalist_remove_data (&proxy->priv->qdata, key);
8808       if (info != NULL)
8809         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
8810     }
8811   g_variant_iter_free (iter);
8812   for (n = 0; invalidated_properties[n] != NULL; n++)
8813     {
8814       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_match_interface_info.parent_struct, invalidated_properties[n]);
8815       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
8816       if (info != NULL)
8817         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
8818     }
8819 }
8820 
8821 static GVariant *
8822 sensor_match_proxy_get_match_value (SensorMatch *object)
8823 {
8824   SensorMatchProxy *proxy = SENSOR_MATCH_PROXY (object);
8825   GVariant *variant;
8826   GVariant *value = NULL;
8827   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "match_value");
8828   value = variant;
8829   if (variant != NULL)
8830     g_variant_unref (variant);
8831   return value;
8832 }
8833 
8834 static guchar
8835 sensor_match_proxy_get_state (SensorMatch *object)
8836 {
8837   SensorMatchProxy *proxy = SENSOR_MATCH_PROXY (object);
8838   GVariant *variant;
8839   guchar value = 0;
8840   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "state");
8841   if (variant != NULL)
8842     {
8843       value = g_variant_get_byte (variant);
8844       g_variant_unref (variant);
8845     }
8846   return value;
8847 }
8848 
8849 static void
8850 sensor_match_proxy_init (SensorMatchProxy *proxy)
8851 {
8852 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
8853   proxy->priv = sensor_match_proxy_get_instance_private (proxy);
8854 #else
8855   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_SENSOR_MATCH_PROXY, SensorMatchProxyPrivate);
8856 #endif
8857 
8858   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), sensor_match_interface_info ());
8859 }
8860 
8861 static void
8862 sensor_match_proxy_class_init (SensorMatchProxyClass *klass)
8863 {
8864   GObjectClass *gobject_class;
8865   GDBusProxyClass *proxy_class;
8866 
8867   gobject_class = G_OBJECT_CLASS (klass);
8868   gobject_class->finalize     = sensor_match_proxy_finalize;
8869   gobject_class->get_property = sensor_match_proxy_get_property;
8870   gobject_class->set_property = sensor_match_proxy_set_property;
8871 
8872   proxy_class = G_DBUS_PROXY_CLASS (klass);
8873   proxy_class->g_signal = sensor_match_proxy_g_signal;
8874   proxy_class->g_properties_changed = sensor_match_proxy_g_properties_changed;
8875 
8876   sensor_match_override_properties (gobject_class, 1);
8877 
8878 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
8879   g_type_class_add_private (klass, sizeof (SensorMatchProxyPrivate));
8880 #endif
8881 }
8882 
8883 static void
8884 sensor_match_proxy_iface_init (SensorMatchIface *iface)
8885 {
8886   iface->get_match_value = sensor_match_proxy_get_match_value;
8887   iface->get_state = sensor_match_proxy_get_state;
8888 }
8889 
8890 /**
8891  * sensor_match_proxy_new:
8892  * @connection: A #GDBusConnection.
8893  * @flags: Flags from the #GDBusProxyFlags enumeration.
8894  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
8895  * @object_path: An object path.
8896  * @cancellable: (allow-none): A #GCancellable or %NULL.
8897  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
8898  * @user_data: User data to pass to @callback.
8899  *
8900  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorMatch.top_of_page">org.openbmc.SensorMatch</link>. See g_dbus_proxy_new() for more details.
8901  *
8902  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
8903  * You can then call sensor_match_proxy_new_finish() to get the result of the operation.
8904  *
8905  * See sensor_match_proxy_new_sync() for the synchronous, blocking version of this constructor.
8906  */
8907 void
8908 sensor_match_proxy_new (
8909     GDBusConnection     *connection,
8910     GDBusProxyFlags      flags,
8911     const gchar         *name,
8912     const gchar         *object_path,
8913     GCancellable        *cancellable,
8914     GAsyncReadyCallback  callback,
8915     gpointer             user_data)
8916 {
8917   g_async_initable_new_async (TYPE_SENSOR_MATCH_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.openbmc.SensorMatch", NULL);
8918 }
8919 
8920 /**
8921  * sensor_match_proxy_new_finish:
8922  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_match_proxy_new().
8923  * @error: Return location for error or %NULL
8924  *
8925  * Finishes an operation started with sensor_match_proxy_new().
8926  *
8927  * Returns: (transfer full) (type SensorMatchProxy): The constructed proxy object or %NULL if @error is set.
8928  */
8929 SensorMatch *
8930 sensor_match_proxy_new_finish (
8931     GAsyncResult        *res,
8932     GError             **error)
8933 {
8934   GObject *ret;
8935   GObject *source_object;
8936   source_object = g_async_result_get_source_object (res);
8937   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
8938   g_object_unref (source_object);
8939   if (ret != NULL)
8940     return SENSOR_MATCH (ret);
8941   else
8942     return NULL;
8943 }
8944 
8945 /**
8946  * sensor_match_proxy_new_sync:
8947  * @connection: A #GDBusConnection.
8948  * @flags: Flags from the #GDBusProxyFlags enumeration.
8949  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
8950  * @object_path: An object path.
8951  * @cancellable: (allow-none): A #GCancellable or %NULL.
8952  * @error: Return location for error or %NULL
8953  *
8954  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorMatch.top_of_page">org.openbmc.SensorMatch</link>. See g_dbus_proxy_new_sync() for more details.
8955  *
8956  * The calling thread is blocked until a reply is received.
8957  *
8958  * See sensor_match_proxy_new() for the asynchronous version of this constructor.
8959  *
8960  * Returns: (transfer full) (type SensorMatchProxy): The constructed proxy object or %NULL if @error is set.
8961  */
8962 SensorMatch *
8963 sensor_match_proxy_new_sync (
8964     GDBusConnection     *connection,
8965     GDBusProxyFlags      flags,
8966     const gchar         *name,
8967     const gchar         *object_path,
8968     GCancellable        *cancellable,
8969     GError             **error)
8970 {
8971   GInitable *ret;
8972   ret = g_initable_new (TYPE_SENSOR_MATCH_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.SensorMatch", NULL);
8973   if (ret != NULL)
8974     return SENSOR_MATCH (ret);
8975   else
8976     return NULL;
8977 }
8978 
8979 
8980 /**
8981  * sensor_match_proxy_new_for_bus:
8982  * @bus_type: A #GBusType.
8983  * @flags: Flags from the #GDBusProxyFlags enumeration.
8984  * @name: A bus name (well-known or unique).
8985  * @object_path: An object path.
8986  * @cancellable: (allow-none): A #GCancellable or %NULL.
8987  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
8988  * @user_data: User data to pass to @callback.
8989  *
8990  * Like sensor_match_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
8991  *
8992  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
8993  * You can then call sensor_match_proxy_new_for_bus_finish() to get the result of the operation.
8994  *
8995  * See sensor_match_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
8996  */
8997 void
8998 sensor_match_proxy_new_for_bus (
8999     GBusType             bus_type,
9000     GDBusProxyFlags      flags,
9001     const gchar         *name,
9002     const gchar         *object_path,
9003     GCancellable        *cancellable,
9004     GAsyncReadyCallback  callback,
9005     gpointer             user_data)
9006 {
9007   g_async_initable_new_async (TYPE_SENSOR_MATCH_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.openbmc.SensorMatch", NULL);
9008 }
9009 
9010 /**
9011  * sensor_match_proxy_new_for_bus_finish:
9012  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to sensor_match_proxy_new_for_bus().
9013  * @error: Return location for error or %NULL
9014  *
9015  * Finishes an operation started with sensor_match_proxy_new_for_bus().
9016  *
9017  * Returns: (transfer full) (type SensorMatchProxy): The constructed proxy object or %NULL if @error is set.
9018  */
9019 SensorMatch *
9020 sensor_match_proxy_new_for_bus_finish (
9021     GAsyncResult        *res,
9022     GError             **error)
9023 {
9024   GObject *ret;
9025   GObject *source_object;
9026   source_object = g_async_result_get_source_object (res);
9027   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
9028   g_object_unref (source_object);
9029   if (ret != NULL)
9030     return SENSOR_MATCH (ret);
9031   else
9032     return NULL;
9033 }
9034 
9035 /**
9036  * sensor_match_proxy_new_for_bus_sync:
9037  * @bus_type: A #GBusType.
9038  * @flags: Flags from the #GDBusProxyFlags enumeration.
9039  * @name: A bus name (well-known or unique).
9040  * @object_path: An object path.
9041  * @cancellable: (allow-none): A #GCancellable or %NULL.
9042  * @error: Return location for error or %NULL
9043  *
9044  * Like sensor_match_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
9045  *
9046  * The calling thread is blocked until a reply is received.
9047  *
9048  * See sensor_match_proxy_new_for_bus() for the asynchronous version of this constructor.
9049  *
9050  * Returns: (transfer full) (type SensorMatchProxy): The constructed proxy object or %NULL if @error is set.
9051  */
9052 SensorMatch *
9053 sensor_match_proxy_new_for_bus_sync (
9054     GBusType             bus_type,
9055     GDBusProxyFlags      flags,
9056     const gchar         *name,
9057     const gchar         *object_path,
9058     GCancellable        *cancellable,
9059     GError             **error)
9060 {
9061   GInitable *ret;
9062   ret = g_initable_new (TYPE_SENSOR_MATCH_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.SensorMatch", NULL);
9063   if (ret != NULL)
9064     return SENSOR_MATCH (ret);
9065   else
9066     return NULL;
9067 }
9068 
9069 
9070 /* ------------------------------------------------------------------------ */
9071 
9072 /**
9073  * SensorMatchSkeleton:
9074  *
9075  * The #SensorMatchSkeleton structure contains only private data and should only be accessed using the provided API.
9076  */
9077 
9078 /**
9079  * SensorMatchSkeletonClass:
9080  * @parent_class: The parent class.
9081  *
9082  * Class structure for #SensorMatchSkeleton.
9083  */
9084 
9085 struct _SensorMatchSkeletonPrivate
9086 {
9087   GValue *properties;
9088   GList *changed_properties;
9089   GSource *changed_properties_idle_source;
9090   GMainContext *context;
9091   GMutex lock;
9092 };
9093 
9094 static void
9095 _sensor_match_skeleton_handle_method_call (
9096   GDBusConnection *connection G_GNUC_UNUSED,
9097   const gchar *sender G_GNUC_UNUSED,
9098   const gchar *object_path G_GNUC_UNUSED,
9099   const gchar *interface_name,
9100   const gchar *method_name,
9101   GVariant *parameters,
9102   GDBusMethodInvocation *invocation,
9103   gpointer user_data)
9104 {
9105   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (user_data);
9106   _ExtendedGDBusMethodInfo *info;
9107   GVariantIter iter;
9108   GVariant *child;
9109   GValue *paramv;
9110   guint num_params;
9111   guint num_extra;
9112   guint n;
9113   guint signal_id;
9114   GValue return_value = G_VALUE_INIT;
9115   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
9116   g_assert (info != NULL);
9117   num_params = g_variant_n_children (parameters);
9118   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
9119   n = 0;
9120   g_value_init (&paramv[n], TYPE_SENSOR_MATCH);
9121   g_value_set_object (&paramv[n++], skeleton);
9122   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
9123   g_value_set_object (&paramv[n++], invocation);
9124   if (info->pass_fdlist)
9125     {
9126 #ifdef G_OS_UNIX
9127       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
9128       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
9129 #else
9130       g_assert_not_reached ();
9131 #endif
9132     }
9133   g_variant_iter_init (&iter, parameters);
9134   while ((child = g_variant_iter_next_value (&iter)) != NULL)
9135     {
9136       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
9137       if (arg_info->use_gvariant)
9138         {
9139           g_value_init (&paramv[n], G_TYPE_VARIANT);
9140           g_value_set_variant (&paramv[n], child);
9141           n++;
9142         }
9143       else
9144         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
9145       g_variant_unref (child);
9146     }
9147   signal_id = g_signal_lookup (info->signal_name, TYPE_SENSOR_MATCH);
9148   g_value_init (&return_value, G_TYPE_BOOLEAN);
9149   g_signal_emitv (paramv, signal_id, 0, &return_value);
9150   if (!g_value_get_boolean (&return_value))
9151     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);
9152   g_value_unset (&return_value);
9153   for (n = 0; n < num_params + num_extra; n++)
9154     g_value_unset (&paramv[n]);
9155   g_free (paramv);
9156 }
9157 
9158 static GVariant *
9159 _sensor_match_skeleton_handle_get_property (
9160   GDBusConnection *connection G_GNUC_UNUSED,
9161   const gchar *sender G_GNUC_UNUSED,
9162   const gchar *object_path G_GNUC_UNUSED,
9163   const gchar *interface_name G_GNUC_UNUSED,
9164   const gchar *property_name,
9165   GError **error,
9166   gpointer user_data)
9167 {
9168   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (user_data);
9169   GValue value = G_VALUE_INIT;
9170   GParamSpec *pspec;
9171   _ExtendedGDBusPropertyInfo *info;
9172   GVariant *ret;
9173   ret = NULL;
9174   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_match_interface_info.parent_struct, property_name);
9175   g_assert (info != NULL);
9176   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
9177   if (pspec == NULL)
9178     {
9179       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
9180     }
9181   else
9182     {
9183       g_value_init (&value, pspec->value_type);
9184       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
9185       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
9186       g_value_unset (&value);
9187     }
9188   return ret;
9189 }
9190 
9191 static gboolean
9192 _sensor_match_skeleton_handle_set_property (
9193   GDBusConnection *connection G_GNUC_UNUSED,
9194   const gchar *sender G_GNUC_UNUSED,
9195   const gchar *object_path G_GNUC_UNUSED,
9196   const gchar *interface_name G_GNUC_UNUSED,
9197   const gchar *property_name,
9198   GVariant *variant,
9199   GError **error,
9200   gpointer user_data)
9201 {
9202   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (user_data);
9203   GValue value = G_VALUE_INIT;
9204   GParamSpec *pspec;
9205   _ExtendedGDBusPropertyInfo *info;
9206   gboolean ret;
9207   ret = FALSE;
9208   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_sensor_match_interface_info.parent_struct, property_name);
9209   g_assert (info != NULL);
9210   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
9211   if (pspec == NULL)
9212     {
9213       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
9214     }
9215   else
9216     {
9217       if (info->use_gvariant)
9218         g_value_set_variant (&value, variant);
9219       else
9220         g_dbus_gvariant_to_gvalue (variant, &value);
9221       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
9222       g_value_unset (&value);
9223       ret = TRUE;
9224     }
9225   return ret;
9226 }
9227 
9228 static const GDBusInterfaceVTable _sensor_match_skeleton_vtable =
9229 {
9230   _sensor_match_skeleton_handle_method_call,
9231   _sensor_match_skeleton_handle_get_property,
9232   _sensor_match_skeleton_handle_set_property,
9233   {NULL}
9234 };
9235 
9236 static GDBusInterfaceInfo *
9237 sensor_match_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
9238 {
9239   return sensor_match_interface_info ();
9240 }
9241 
9242 static GDBusInterfaceVTable *
9243 sensor_match_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
9244 {
9245   return (GDBusInterfaceVTable *) &_sensor_match_skeleton_vtable;
9246 }
9247 
9248 static GVariant *
9249 sensor_match_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
9250 {
9251   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (_skeleton);
9252 
9253   GVariantBuilder builder;
9254   guint n;
9255   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
9256   if (_sensor_match_interface_info.parent_struct.properties == NULL)
9257     goto out;
9258   for (n = 0; _sensor_match_interface_info.parent_struct.properties[n] != NULL; n++)
9259     {
9260       GDBusPropertyInfo *info = _sensor_match_interface_info.parent_struct.properties[n];
9261       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
9262         {
9263           GVariant *value;
9264           value = _sensor_match_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.openbmc.SensorMatch", info->name, NULL, skeleton);
9265           if (value != NULL)
9266             {
9267               g_variant_take_ref (value);
9268               g_variant_builder_add (&builder, "{sv}", info->name, value);
9269               g_variant_unref (value);
9270             }
9271         }
9272     }
9273 out:
9274   return g_variant_builder_end (&builder);
9275 }
9276 
9277 static gboolean _sensor_match_emit_changed (gpointer user_data);
9278 
9279 static void
9280 sensor_match_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
9281 {
9282   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (_skeleton);
9283   gboolean emit_changed = FALSE;
9284 
9285   g_mutex_lock (&skeleton->priv->lock);
9286   if (skeleton->priv->changed_properties_idle_source != NULL)
9287     {
9288       g_source_destroy (skeleton->priv->changed_properties_idle_source);
9289       skeleton->priv->changed_properties_idle_source = NULL;
9290       emit_changed = TRUE;
9291     }
9292   g_mutex_unlock (&skeleton->priv->lock);
9293 
9294   if (emit_changed)
9295     _sensor_match_emit_changed (skeleton);
9296 }
9297 
9298 static void
9299 _sensor_match_on_signal_sensor_match (
9300     SensorMatch *object,
9301     guchar arg_state)
9302 {
9303   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (object);
9304 
9305   GList      *connections, *l;
9306   GVariant   *signal_variant;
9307   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
9308 
9309   signal_variant = g_variant_ref_sink (g_variant_new ("(y)",
9310                    arg_state));
9311   for (l = connections; l != NULL; l = l->next)
9312     {
9313       GDBusConnection *connection = l->data;
9314       g_dbus_connection_emit_signal (connection,
9315         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.SensorMatch", "SensorMatch",
9316         signal_variant, NULL);
9317     }
9318   g_variant_unref (signal_variant);
9319   g_list_free_full (connections, g_object_unref);
9320 }
9321 
9322 static void sensor_match_skeleton_iface_init (SensorMatchIface *iface);
9323 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
9324 G_DEFINE_TYPE_WITH_CODE (SensorMatchSkeleton, sensor_match_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
9325                          G_ADD_PRIVATE (SensorMatchSkeleton)
9326                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_MATCH, sensor_match_skeleton_iface_init));
9327 
9328 #else
9329 G_DEFINE_TYPE_WITH_CODE (SensorMatchSkeleton, sensor_match_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
9330                          G_IMPLEMENT_INTERFACE (TYPE_SENSOR_MATCH, sensor_match_skeleton_iface_init));
9331 
9332 #endif
9333 static void
9334 sensor_match_skeleton_finalize (GObject *object)
9335 {
9336   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (object);
9337   guint n;
9338   for (n = 0; n < 2; n++)
9339     g_value_unset (&skeleton->priv->properties[n]);
9340   g_free (skeleton->priv->properties);
9341   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
9342   if (skeleton->priv->changed_properties_idle_source != NULL)
9343     g_source_destroy (skeleton->priv->changed_properties_idle_source);
9344   g_main_context_unref (skeleton->priv->context);
9345   g_mutex_clear (&skeleton->priv->lock);
9346   G_OBJECT_CLASS (sensor_match_skeleton_parent_class)->finalize (object);
9347 }
9348 
9349 static void
9350 sensor_match_skeleton_get_property (GObject      *object,
9351   guint         prop_id,
9352   GValue       *value,
9353   GParamSpec   *pspec G_GNUC_UNUSED)
9354 {
9355   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (object);
9356   g_assert (prop_id != 0 && prop_id - 1 < 2);
9357   g_mutex_lock (&skeleton->priv->lock);
9358   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
9359   g_mutex_unlock (&skeleton->priv->lock);
9360 }
9361 
9362 static gboolean
9363 _sensor_match_emit_changed (gpointer user_data)
9364 {
9365   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (user_data);
9366   GList *l;
9367   GVariantBuilder builder;
9368   GVariantBuilder invalidated_builder;
9369   guint num_changes;
9370 
9371   g_mutex_lock (&skeleton->priv->lock);
9372   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
9373   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
9374   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
9375     {
9376       ChangedProperty *cp = l->data;
9377       GVariant *variant;
9378       const GValue *cur_value;
9379 
9380       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
9381       if (!_g_value_equal (cur_value, &cp->orig_value))
9382         {
9383           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
9384           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
9385           g_variant_unref (variant);
9386           num_changes++;
9387         }
9388     }
9389   if (num_changes > 0)
9390     {
9391       GList *connections, *ll;
9392       GVariant *signal_variant;
9393       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.SensorMatch",
9394                                            &builder, &invalidated_builder));
9395       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
9396       for (ll = connections; ll != NULL; ll = ll->next)
9397         {
9398           GDBusConnection *connection = ll->data;
9399 
9400           g_dbus_connection_emit_signal (connection,
9401                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
9402                                          "org.freedesktop.DBus.Properties",
9403                                          "PropertiesChanged",
9404                                          signal_variant,
9405                                          NULL);
9406         }
9407       g_variant_unref (signal_variant);
9408       g_list_free_full (connections, g_object_unref);
9409     }
9410   else
9411     {
9412       g_variant_builder_clear (&builder);
9413       g_variant_builder_clear (&invalidated_builder);
9414     }
9415   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
9416   skeleton->priv->changed_properties = NULL;
9417   skeleton->priv->changed_properties_idle_source = NULL;
9418   g_mutex_unlock (&skeleton->priv->lock);
9419   return FALSE;
9420 }
9421 
9422 static void
9423 _sensor_match_schedule_emit_changed (SensorMatchSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
9424 {
9425   ChangedProperty *cp;
9426   GList *l;
9427   cp = NULL;
9428   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
9429     {
9430       ChangedProperty *i_cp = l->data;
9431       if (i_cp->info == info)
9432         {
9433           cp = i_cp;
9434           break;
9435         }
9436     }
9437   if (cp == NULL)
9438     {
9439       cp = g_new0 (ChangedProperty, 1);
9440       cp->prop_id = prop_id;
9441       cp->info = info;
9442       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
9443       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
9444       g_value_copy (orig_value, &cp->orig_value);
9445     }
9446 }
9447 
9448 static void
9449 sensor_match_skeleton_notify (GObject      *object,
9450   GParamSpec *pspec G_GNUC_UNUSED)
9451 {
9452   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (object);
9453   g_mutex_lock (&skeleton->priv->lock);
9454   if (skeleton->priv->changed_properties != NULL &&
9455       skeleton->priv->changed_properties_idle_source == NULL)
9456     {
9457       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
9458       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
9459       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_match_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
9460       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
9461       g_source_unref (skeleton->priv->changed_properties_idle_source);
9462     }
9463   g_mutex_unlock (&skeleton->priv->lock);
9464 }
9465 
9466 static void
9467 sensor_match_skeleton_set_property (GObject      *object,
9468   guint         prop_id,
9469   const GValue *value,
9470   GParamSpec   *pspec)
9471 {
9472   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (object);
9473   g_assert (prop_id != 0 && prop_id - 1 < 2);
9474   g_mutex_lock (&skeleton->priv->lock);
9475   g_object_freeze_notify (object);
9476   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
9477     {
9478       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
9479         _sensor_match_schedule_emit_changed (skeleton, _sensor_match_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
9480       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
9481       g_object_notify_by_pspec (object, pspec);
9482     }
9483   g_mutex_unlock (&skeleton->priv->lock);
9484   g_object_thaw_notify (object);
9485 }
9486 
9487 static void
9488 sensor_match_skeleton_init (SensorMatchSkeleton *skeleton)
9489 {
9490 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
9491   skeleton->priv = sensor_match_skeleton_get_instance_private (skeleton);
9492 #else
9493   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_SENSOR_MATCH_SKELETON, SensorMatchSkeletonPrivate);
9494 #endif
9495 
9496   g_mutex_init (&skeleton->priv->lock);
9497   skeleton->priv->context = g_main_context_ref_thread_default ();
9498   skeleton->priv->properties = g_new0 (GValue, 2);
9499   g_value_init (&skeleton->priv->properties[0], G_TYPE_VARIANT);
9500   g_value_init (&skeleton->priv->properties[1], G_TYPE_UCHAR);
9501 }
9502 
9503 static GVariant *
9504 sensor_match_skeleton_get_match_value (SensorMatch *object)
9505 {
9506   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (object);
9507   GVariant *value;
9508   g_mutex_lock (&skeleton->priv->lock);
9509   value = g_value_get_variant (&(skeleton->priv->properties[0]));
9510   g_mutex_unlock (&skeleton->priv->lock);
9511   return value;
9512 }
9513 
9514 static guchar
9515 sensor_match_skeleton_get_state (SensorMatch *object)
9516 {
9517   SensorMatchSkeleton *skeleton = SENSOR_MATCH_SKELETON (object);
9518   guchar value;
9519   g_mutex_lock (&skeleton->priv->lock);
9520   value = g_value_get_uchar (&(skeleton->priv->properties[1]));
9521   g_mutex_unlock (&skeleton->priv->lock);
9522   return value;
9523 }
9524 
9525 static void
9526 sensor_match_skeleton_class_init (SensorMatchSkeletonClass *klass)
9527 {
9528   GObjectClass *gobject_class;
9529   GDBusInterfaceSkeletonClass *skeleton_class;
9530 
9531   gobject_class = G_OBJECT_CLASS (klass);
9532   gobject_class->finalize = sensor_match_skeleton_finalize;
9533   gobject_class->get_property = sensor_match_skeleton_get_property;
9534   gobject_class->set_property = sensor_match_skeleton_set_property;
9535   gobject_class->notify       = sensor_match_skeleton_notify;
9536 
9537 
9538   sensor_match_override_properties (gobject_class, 1);
9539 
9540   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
9541   skeleton_class->get_info = sensor_match_skeleton_dbus_interface_get_info;
9542   skeleton_class->get_properties = sensor_match_skeleton_dbus_interface_get_properties;
9543   skeleton_class->flush = sensor_match_skeleton_dbus_interface_flush;
9544   skeleton_class->get_vtable = sensor_match_skeleton_dbus_interface_get_vtable;
9545 
9546 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
9547   g_type_class_add_private (klass, sizeof (SensorMatchSkeletonPrivate));
9548 #endif
9549 }
9550 
9551 static void
9552 sensor_match_skeleton_iface_init (SensorMatchIface *iface)
9553 {
9554   iface->sensor_match = _sensor_match_on_signal_sensor_match;
9555   iface->get_match_value = sensor_match_skeleton_get_match_value;
9556   iface->get_state = sensor_match_skeleton_get_state;
9557 }
9558 
9559 /**
9560  * sensor_match_skeleton_new:
9561  *
9562  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorMatch.top_of_page">org.openbmc.SensorMatch</link>.
9563  *
9564  * Returns: (transfer full) (type SensorMatchSkeleton): The skeleton object.
9565  */
9566 SensorMatch *
9567 sensor_match_skeleton_new (void)
9568 {
9569   return SENSOR_MATCH (g_object_new (TYPE_SENSOR_MATCH_SKELETON, NULL));
9570 }
9571 
9572 /* ------------------------------------------------------------------------
9573  * Code for interface org.openbmc.Process
9574  * ------------------------------------------------------------------------
9575  */
9576 
9577 /**
9578  * SECTION:Process
9579  * @title: Process
9580  * @short_description: Generated C code for the org.openbmc.Process D-Bus interface
9581  *
9582  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-Process.top_of_page">org.openbmc.Process</link> D-Bus interface in C.
9583  */
9584 
9585 /* ---- Introspection data for org.openbmc.Process ---- */
9586 
9587 static const _ExtendedGDBusMethodInfo _process_method_info_stop =
9588 {
9589   {
9590     -1,
9591     (gchar *) "stop",
9592     NULL,
9593     NULL,
9594     NULL
9595   },
9596   "handle-stop",
9597   FALSE
9598 };
9599 
9600 static const _ExtendedGDBusMethodInfo * const _process_method_info_pointers[] =
9601 {
9602   &_process_method_info_stop,
9603   NULL
9604 };
9605 
9606 static const _ExtendedGDBusInterfaceInfo _process_interface_info =
9607 {
9608   {
9609     -1,
9610     (gchar *) "org.openbmc.Process",
9611     (GDBusMethodInfo **) &_process_method_info_pointers,
9612     NULL,
9613     NULL,
9614     NULL
9615   },
9616   "process",
9617 };
9618 
9619 
9620 /**
9621  * process_interface_info:
9622  *
9623  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-Process.top_of_page">org.openbmc.Process</link> D-Bus interface.
9624  *
9625  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
9626  */
9627 GDBusInterfaceInfo *
9628 process_interface_info (void)
9629 {
9630   return (GDBusInterfaceInfo *) &_process_interface_info.parent_struct;
9631 }
9632 
9633 /**
9634  * process_override_properties:
9635  * @klass: The class structure for a #GObject<!-- -->-derived class.
9636  * @property_id_begin: The property id to assign to the first overridden property.
9637  *
9638  * Overrides all #GObject properties in the #Process interface for a concrete class.
9639  * The properties are overridden in the order they are defined.
9640  *
9641  * Returns: The last property id.
9642  */
9643 guint
9644 process_override_properties (GObjectClass *klass, guint property_id_begin)
9645 {
9646   return property_id_begin - 1;
9647 }
9648 
9649 
9650 
9651 /**
9652  * Process:
9653  *
9654  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Process.top_of_page">org.openbmc.Process</link>.
9655  */
9656 
9657 /**
9658  * ProcessIface:
9659  * @parent_iface: The parent interface.
9660  * @handle_stop: Handler for the #Process::handle-stop signal.
9661  *
9662  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Process.top_of_page">org.openbmc.Process</link>.
9663  */
9664 
9665 typedef ProcessIface ProcessInterface;
9666 G_DEFINE_INTERFACE (Process, process, G_TYPE_OBJECT);
9667 
9668 static void
9669 process_default_init (ProcessIface *iface)
9670 {
9671   /* GObject signals for incoming D-Bus method calls: */
9672   /**
9673    * Process::handle-stop:
9674    * @object: A #Process.
9675    * @invocation: A #GDBusMethodInvocation.
9676    *
9677    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Process.stop">stop()</link> D-Bus method.
9678    *
9679    * 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 process_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.
9680    *
9681    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
9682    */
9683   g_signal_new ("handle-stop",
9684     G_TYPE_FROM_INTERFACE (iface),
9685     G_SIGNAL_RUN_LAST,
9686     G_STRUCT_OFFSET (ProcessIface, handle_stop),
9687     g_signal_accumulator_true_handled,
9688     NULL,
9689     g_cclosure_marshal_generic,
9690     G_TYPE_BOOLEAN,
9691     1,
9692     G_TYPE_DBUS_METHOD_INVOCATION);
9693 
9694 }
9695 
9696 /**
9697  * process_call_stop:
9698  * @proxy: A #ProcessProxy.
9699  * @cancellable: (allow-none): A #GCancellable or %NULL.
9700  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
9701  * @user_data: User data to pass to @callback.
9702  *
9703  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Process.stop">stop()</link> D-Bus method on @proxy.
9704  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
9705  * You can then call process_call_stop_finish() to get the result of the operation.
9706  *
9707  * See process_call_stop_sync() for the synchronous, blocking version of this method.
9708  */
9709 void
9710 process_call_stop (
9711     Process *proxy,
9712     GCancellable *cancellable,
9713     GAsyncReadyCallback callback,
9714     gpointer user_data)
9715 {
9716   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
9717     "stop",
9718     g_variant_new ("()"),
9719     G_DBUS_CALL_FLAGS_NONE,
9720     -1,
9721     cancellable,
9722     callback,
9723     user_data);
9724 }
9725 
9726 /**
9727  * process_call_stop_finish:
9728  * @proxy: A #ProcessProxy.
9729  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to process_call_stop().
9730  * @error: Return location for error or %NULL.
9731  *
9732  * Finishes an operation started with process_call_stop().
9733  *
9734  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
9735  */
9736 gboolean
9737 process_call_stop_finish (
9738     Process *proxy,
9739     GAsyncResult *res,
9740     GError **error)
9741 {
9742   GVariant *_ret;
9743   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
9744   if (_ret == NULL)
9745     goto _out;
9746   g_variant_get (_ret,
9747                  "()");
9748   g_variant_unref (_ret);
9749 _out:
9750   return _ret != NULL;
9751 }
9752 
9753 /**
9754  * process_call_stop_sync:
9755  * @proxy: A #ProcessProxy.
9756  * @cancellable: (allow-none): A #GCancellable or %NULL.
9757  * @error: Return location for error or %NULL.
9758  *
9759  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Process.stop">stop()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
9760  *
9761  * See process_call_stop() for the asynchronous version of this method.
9762  *
9763  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
9764  */
9765 gboolean
9766 process_call_stop_sync (
9767     Process *proxy,
9768     GCancellable *cancellable,
9769     GError **error)
9770 {
9771   GVariant *_ret;
9772   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
9773     "stop",
9774     g_variant_new ("()"),
9775     G_DBUS_CALL_FLAGS_NONE,
9776     -1,
9777     cancellable,
9778     error);
9779   if (_ret == NULL)
9780     goto _out;
9781   g_variant_get (_ret,
9782                  "()");
9783   g_variant_unref (_ret);
9784 _out:
9785   return _ret != NULL;
9786 }
9787 
9788 /**
9789  * process_complete_stop:
9790  * @object: A #Process.
9791  * @invocation: (transfer full): A #GDBusMethodInvocation.
9792  *
9793  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Process.stop">stop()</link> 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.
9794  *
9795  * This method will free @invocation, you cannot use it afterwards.
9796  */
9797 void
9798 process_complete_stop (
9799     Process *object,
9800     GDBusMethodInvocation *invocation)
9801 {
9802   g_dbus_method_invocation_return_value (invocation,
9803     g_variant_new ("()"));
9804 }
9805 
9806 /* ------------------------------------------------------------------------ */
9807 
9808 /**
9809  * ProcessProxy:
9810  *
9811  * The #ProcessProxy structure contains only private data and should only be accessed using the provided API.
9812  */
9813 
9814 /**
9815  * ProcessProxyClass:
9816  * @parent_class: The parent class.
9817  *
9818  * Class structure for #ProcessProxy.
9819  */
9820 
9821 struct _ProcessProxyPrivate
9822 {
9823   GData *qdata;
9824 };
9825 
9826 static void process_proxy_iface_init (ProcessIface *iface);
9827 
9828 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
9829 G_DEFINE_TYPE_WITH_CODE (ProcessProxy, process_proxy, G_TYPE_DBUS_PROXY,
9830                          G_ADD_PRIVATE (ProcessProxy)
9831                          G_IMPLEMENT_INTERFACE (TYPE_PROCESS, process_proxy_iface_init));
9832 
9833 #else
9834 G_DEFINE_TYPE_WITH_CODE (ProcessProxy, process_proxy, G_TYPE_DBUS_PROXY,
9835                          G_IMPLEMENT_INTERFACE (TYPE_PROCESS, process_proxy_iface_init));
9836 
9837 #endif
9838 static void
9839 process_proxy_finalize (GObject *object)
9840 {
9841   ProcessProxy *proxy = PROCESS_PROXY (object);
9842   g_datalist_clear (&proxy->priv->qdata);
9843   G_OBJECT_CLASS (process_proxy_parent_class)->finalize (object);
9844 }
9845 
9846 static void
9847 process_proxy_get_property (GObject      *object,
9848   guint         prop_id,
9849   GValue       *value,
9850   GParamSpec   *pspec G_GNUC_UNUSED)
9851 {
9852 }
9853 
9854 static void
9855 process_proxy_set_property (GObject      *object,
9856   guint         prop_id,
9857   const GValue *value,
9858   GParamSpec   *pspec G_GNUC_UNUSED)
9859 {
9860 }
9861 
9862 static void
9863 process_proxy_g_signal (GDBusProxy *proxy,
9864   const gchar *sender_name G_GNUC_UNUSED,
9865   const gchar *signal_name,
9866   GVariant *parameters)
9867 {
9868   _ExtendedGDBusSignalInfo *info;
9869   GVariantIter iter;
9870   GVariant *child;
9871   GValue *paramv;
9872   guint num_params;
9873   guint n;
9874   guint signal_id;
9875   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_process_interface_info.parent_struct, signal_name);
9876   if (info == NULL)
9877     return;
9878   num_params = g_variant_n_children (parameters);
9879   paramv = g_new0 (GValue, num_params + 1);
9880   g_value_init (&paramv[0], TYPE_PROCESS);
9881   g_value_set_object (&paramv[0], proxy);
9882   g_variant_iter_init (&iter, parameters);
9883   n = 1;
9884   while ((child = g_variant_iter_next_value (&iter)) != NULL)
9885     {
9886       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
9887       if (arg_info->use_gvariant)
9888         {
9889           g_value_init (&paramv[n], G_TYPE_VARIANT);
9890           g_value_set_variant (&paramv[n], child);
9891           n++;
9892         }
9893       else
9894         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
9895       g_variant_unref (child);
9896     }
9897   signal_id = g_signal_lookup (info->signal_name, TYPE_PROCESS);
9898   g_signal_emitv (paramv, signal_id, 0, NULL);
9899   for (n = 0; n < num_params + 1; n++)
9900     g_value_unset (&paramv[n]);
9901   g_free (paramv);
9902 }
9903 
9904 static void
9905 process_proxy_g_properties_changed (GDBusProxy *_proxy,
9906   GVariant *changed_properties,
9907   const gchar *const *invalidated_properties)
9908 {
9909   ProcessProxy *proxy = PROCESS_PROXY (_proxy);
9910   guint n;
9911   const gchar *key;
9912   GVariantIter *iter;
9913   _ExtendedGDBusPropertyInfo *info;
9914   g_variant_get (changed_properties, "a{sv}", &iter);
9915   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
9916     {
9917       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_process_interface_info.parent_struct, key);
9918       g_datalist_remove_data (&proxy->priv->qdata, key);
9919       if (info != NULL)
9920         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
9921     }
9922   g_variant_iter_free (iter);
9923   for (n = 0; invalidated_properties[n] != NULL; n++)
9924     {
9925       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_process_interface_info.parent_struct, invalidated_properties[n]);
9926       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
9927       if (info != NULL)
9928         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
9929     }
9930 }
9931 
9932 static void
9933 process_proxy_init (ProcessProxy *proxy)
9934 {
9935 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
9936   proxy->priv = process_proxy_get_instance_private (proxy);
9937 #else
9938   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_PROCESS_PROXY, ProcessProxyPrivate);
9939 #endif
9940 
9941   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), process_interface_info ());
9942 }
9943 
9944 static void
9945 process_proxy_class_init (ProcessProxyClass *klass)
9946 {
9947   GObjectClass *gobject_class;
9948   GDBusProxyClass *proxy_class;
9949 
9950   gobject_class = G_OBJECT_CLASS (klass);
9951   gobject_class->finalize     = process_proxy_finalize;
9952   gobject_class->get_property = process_proxy_get_property;
9953   gobject_class->set_property = process_proxy_set_property;
9954 
9955   proxy_class = G_DBUS_PROXY_CLASS (klass);
9956   proxy_class->g_signal = process_proxy_g_signal;
9957   proxy_class->g_properties_changed = process_proxy_g_properties_changed;
9958 
9959 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
9960   g_type_class_add_private (klass, sizeof (ProcessProxyPrivate));
9961 #endif
9962 }
9963 
9964 static void
9965 process_proxy_iface_init (ProcessIface *iface)
9966 {
9967 }
9968 
9969 /**
9970  * process_proxy_new:
9971  * @connection: A #GDBusConnection.
9972  * @flags: Flags from the #GDBusProxyFlags enumeration.
9973  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
9974  * @object_path: An object path.
9975  * @cancellable: (allow-none): A #GCancellable or %NULL.
9976  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
9977  * @user_data: User data to pass to @callback.
9978  *
9979  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Process.top_of_page">org.openbmc.Process</link>. See g_dbus_proxy_new() for more details.
9980  *
9981  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
9982  * You can then call process_proxy_new_finish() to get the result of the operation.
9983  *
9984  * See process_proxy_new_sync() for the synchronous, blocking version of this constructor.
9985  */
9986 void
9987 process_proxy_new (
9988     GDBusConnection     *connection,
9989     GDBusProxyFlags      flags,
9990     const gchar         *name,
9991     const gchar         *object_path,
9992     GCancellable        *cancellable,
9993     GAsyncReadyCallback  callback,
9994     gpointer             user_data)
9995 {
9996   g_async_initable_new_async (TYPE_PROCESS_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.openbmc.Process", NULL);
9997 }
9998 
9999 /**
10000  * process_proxy_new_finish:
10001  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to process_proxy_new().
10002  * @error: Return location for error or %NULL
10003  *
10004  * Finishes an operation started with process_proxy_new().
10005  *
10006  * Returns: (transfer full) (type ProcessProxy): The constructed proxy object or %NULL if @error is set.
10007  */
10008 Process *
10009 process_proxy_new_finish (
10010     GAsyncResult        *res,
10011     GError             **error)
10012 {
10013   GObject *ret;
10014   GObject *source_object;
10015   source_object = g_async_result_get_source_object (res);
10016   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
10017   g_object_unref (source_object);
10018   if (ret != NULL)
10019     return PROCESS (ret);
10020   else
10021     return NULL;
10022 }
10023 
10024 /**
10025  * process_proxy_new_sync:
10026  * @connection: A #GDBusConnection.
10027  * @flags: Flags from the #GDBusProxyFlags enumeration.
10028  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
10029  * @object_path: An object path.
10030  * @cancellable: (allow-none): A #GCancellable or %NULL.
10031  * @error: Return location for error or %NULL
10032  *
10033  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Process.top_of_page">org.openbmc.Process</link>. See g_dbus_proxy_new_sync() for more details.
10034  *
10035  * The calling thread is blocked until a reply is received.
10036  *
10037  * See process_proxy_new() for the asynchronous version of this constructor.
10038  *
10039  * Returns: (transfer full) (type ProcessProxy): The constructed proxy object or %NULL if @error is set.
10040  */
10041 Process *
10042 process_proxy_new_sync (
10043     GDBusConnection     *connection,
10044     GDBusProxyFlags      flags,
10045     const gchar         *name,
10046     const gchar         *object_path,
10047     GCancellable        *cancellable,
10048     GError             **error)
10049 {
10050   GInitable *ret;
10051   ret = g_initable_new (TYPE_PROCESS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.Process", NULL);
10052   if (ret != NULL)
10053     return PROCESS (ret);
10054   else
10055     return NULL;
10056 }
10057 
10058 
10059 /**
10060  * process_proxy_new_for_bus:
10061  * @bus_type: A #GBusType.
10062  * @flags: Flags from the #GDBusProxyFlags enumeration.
10063  * @name: A bus name (well-known or unique).
10064  * @object_path: An object path.
10065  * @cancellable: (allow-none): A #GCancellable or %NULL.
10066  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
10067  * @user_data: User data to pass to @callback.
10068  *
10069  * Like process_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
10070  *
10071  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
10072  * You can then call process_proxy_new_for_bus_finish() to get the result of the operation.
10073  *
10074  * See process_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
10075  */
10076 void
10077 process_proxy_new_for_bus (
10078     GBusType             bus_type,
10079     GDBusProxyFlags      flags,
10080     const gchar         *name,
10081     const gchar         *object_path,
10082     GCancellable        *cancellable,
10083     GAsyncReadyCallback  callback,
10084     gpointer             user_data)
10085 {
10086   g_async_initable_new_async (TYPE_PROCESS_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.openbmc.Process", NULL);
10087 }
10088 
10089 /**
10090  * process_proxy_new_for_bus_finish:
10091  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to process_proxy_new_for_bus().
10092  * @error: Return location for error or %NULL
10093  *
10094  * Finishes an operation started with process_proxy_new_for_bus().
10095  *
10096  * Returns: (transfer full) (type ProcessProxy): The constructed proxy object or %NULL if @error is set.
10097  */
10098 Process *
10099 process_proxy_new_for_bus_finish (
10100     GAsyncResult        *res,
10101     GError             **error)
10102 {
10103   GObject *ret;
10104   GObject *source_object;
10105   source_object = g_async_result_get_source_object (res);
10106   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
10107   g_object_unref (source_object);
10108   if (ret != NULL)
10109     return PROCESS (ret);
10110   else
10111     return NULL;
10112 }
10113 
10114 /**
10115  * process_proxy_new_for_bus_sync:
10116  * @bus_type: A #GBusType.
10117  * @flags: Flags from the #GDBusProxyFlags enumeration.
10118  * @name: A bus name (well-known or unique).
10119  * @object_path: An object path.
10120  * @cancellable: (allow-none): A #GCancellable or %NULL.
10121  * @error: Return location for error or %NULL
10122  *
10123  * Like process_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
10124  *
10125  * The calling thread is blocked until a reply is received.
10126  *
10127  * See process_proxy_new_for_bus() for the asynchronous version of this constructor.
10128  *
10129  * Returns: (transfer full) (type ProcessProxy): The constructed proxy object or %NULL if @error is set.
10130  */
10131 Process *
10132 process_proxy_new_for_bus_sync (
10133     GBusType             bus_type,
10134     GDBusProxyFlags      flags,
10135     const gchar         *name,
10136     const gchar         *object_path,
10137     GCancellable        *cancellable,
10138     GError             **error)
10139 {
10140   GInitable *ret;
10141   ret = g_initable_new (TYPE_PROCESS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.Process", NULL);
10142   if (ret != NULL)
10143     return PROCESS (ret);
10144   else
10145     return NULL;
10146 }
10147 
10148 
10149 /* ------------------------------------------------------------------------ */
10150 
10151 /**
10152  * ProcessSkeleton:
10153  *
10154  * The #ProcessSkeleton structure contains only private data and should only be accessed using the provided API.
10155  */
10156 
10157 /**
10158  * ProcessSkeletonClass:
10159  * @parent_class: The parent class.
10160  *
10161  * Class structure for #ProcessSkeleton.
10162  */
10163 
10164 struct _ProcessSkeletonPrivate
10165 {
10166   GValue *properties;
10167   GList *changed_properties;
10168   GSource *changed_properties_idle_source;
10169   GMainContext *context;
10170   GMutex lock;
10171 };
10172 
10173 static void
10174 _process_skeleton_handle_method_call (
10175   GDBusConnection *connection G_GNUC_UNUSED,
10176   const gchar *sender G_GNUC_UNUSED,
10177   const gchar *object_path G_GNUC_UNUSED,
10178   const gchar *interface_name,
10179   const gchar *method_name,
10180   GVariant *parameters,
10181   GDBusMethodInvocation *invocation,
10182   gpointer user_data)
10183 {
10184   ProcessSkeleton *skeleton = PROCESS_SKELETON (user_data);
10185   _ExtendedGDBusMethodInfo *info;
10186   GVariantIter iter;
10187   GVariant *child;
10188   GValue *paramv;
10189   guint num_params;
10190   guint num_extra;
10191   guint n;
10192   guint signal_id;
10193   GValue return_value = G_VALUE_INIT;
10194   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
10195   g_assert (info != NULL);
10196   num_params = g_variant_n_children (parameters);
10197   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
10198   n = 0;
10199   g_value_init (&paramv[n], TYPE_PROCESS);
10200   g_value_set_object (&paramv[n++], skeleton);
10201   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
10202   g_value_set_object (&paramv[n++], invocation);
10203   if (info->pass_fdlist)
10204     {
10205 #ifdef G_OS_UNIX
10206       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
10207       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
10208 #else
10209       g_assert_not_reached ();
10210 #endif
10211     }
10212   g_variant_iter_init (&iter, parameters);
10213   while ((child = g_variant_iter_next_value (&iter)) != NULL)
10214     {
10215       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
10216       if (arg_info->use_gvariant)
10217         {
10218           g_value_init (&paramv[n], G_TYPE_VARIANT);
10219           g_value_set_variant (&paramv[n], child);
10220           n++;
10221         }
10222       else
10223         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
10224       g_variant_unref (child);
10225     }
10226   signal_id = g_signal_lookup (info->signal_name, TYPE_PROCESS);
10227   g_value_init (&return_value, G_TYPE_BOOLEAN);
10228   g_signal_emitv (paramv, signal_id, 0, &return_value);
10229   if (!g_value_get_boolean (&return_value))
10230     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);
10231   g_value_unset (&return_value);
10232   for (n = 0; n < num_params + num_extra; n++)
10233     g_value_unset (&paramv[n]);
10234   g_free (paramv);
10235 }
10236 
10237 static GVariant *
10238 _process_skeleton_handle_get_property (
10239   GDBusConnection *connection G_GNUC_UNUSED,
10240   const gchar *sender G_GNUC_UNUSED,
10241   const gchar *object_path G_GNUC_UNUSED,
10242   const gchar *interface_name G_GNUC_UNUSED,
10243   const gchar *property_name,
10244   GError **error,
10245   gpointer user_data)
10246 {
10247   ProcessSkeleton *skeleton = PROCESS_SKELETON (user_data);
10248   GValue value = G_VALUE_INIT;
10249   GParamSpec *pspec;
10250   _ExtendedGDBusPropertyInfo *info;
10251   GVariant *ret;
10252   ret = NULL;
10253   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_process_interface_info.parent_struct, property_name);
10254   g_assert (info != NULL);
10255   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
10256   if (pspec == NULL)
10257     {
10258       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
10259     }
10260   else
10261     {
10262       g_value_init (&value, pspec->value_type);
10263       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
10264       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
10265       g_value_unset (&value);
10266     }
10267   return ret;
10268 }
10269 
10270 static gboolean
10271 _process_skeleton_handle_set_property (
10272   GDBusConnection *connection G_GNUC_UNUSED,
10273   const gchar *sender G_GNUC_UNUSED,
10274   const gchar *object_path G_GNUC_UNUSED,
10275   const gchar *interface_name G_GNUC_UNUSED,
10276   const gchar *property_name,
10277   GVariant *variant,
10278   GError **error,
10279   gpointer user_data)
10280 {
10281   ProcessSkeleton *skeleton = PROCESS_SKELETON (user_data);
10282   GValue value = G_VALUE_INIT;
10283   GParamSpec *pspec;
10284   _ExtendedGDBusPropertyInfo *info;
10285   gboolean ret;
10286   ret = FALSE;
10287   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_process_interface_info.parent_struct, property_name);
10288   g_assert (info != NULL);
10289   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
10290   if (pspec == NULL)
10291     {
10292       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
10293     }
10294   else
10295     {
10296       if (info->use_gvariant)
10297         g_value_set_variant (&value, variant);
10298       else
10299         g_dbus_gvariant_to_gvalue (variant, &value);
10300       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
10301       g_value_unset (&value);
10302       ret = TRUE;
10303     }
10304   return ret;
10305 }
10306 
10307 static const GDBusInterfaceVTable _process_skeleton_vtable =
10308 {
10309   _process_skeleton_handle_method_call,
10310   _process_skeleton_handle_get_property,
10311   _process_skeleton_handle_set_property,
10312   {NULL}
10313 };
10314 
10315 static GDBusInterfaceInfo *
10316 process_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
10317 {
10318   return process_interface_info ();
10319 }
10320 
10321 static GDBusInterfaceVTable *
10322 process_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
10323 {
10324   return (GDBusInterfaceVTable *) &_process_skeleton_vtable;
10325 }
10326 
10327 static GVariant *
10328 process_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
10329 {
10330   ProcessSkeleton *skeleton = PROCESS_SKELETON (_skeleton);
10331 
10332   GVariantBuilder builder;
10333   guint n;
10334   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
10335   if (_process_interface_info.parent_struct.properties == NULL)
10336     goto out;
10337   for (n = 0; _process_interface_info.parent_struct.properties[n] != NULL; n++)
10338     {
10339       GDBusPropertyInfo *info = _process_interface_info.parent_struct.properties[n];
10340       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
10341         {
10342           GVariant *value;
10343           value = _process_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.openbmc.Process", info->name, NULL, skeleton);
10344           if (value != NULL)
10345             {
10346               g_variant_take_ref (value);
10347               g_variant_builder_add (&builder, "{sv}", info->name, value);
10348               g_variant_unref (value);
10349             }
10350         }
10351     }
10352 out:
10353   return g_variant_builder_end (&builder);
10354 }
10355 
10356 static void
10357 process_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
10358 {
10359 }
10360 
10361 static void process_skeleton_iface_init (ProcessIface *iface);
10362 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
10363 G_DEFINE_TYPE_WITH_CODE (ProcessSkeleton, process_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
10364                          G_ADD_PRIVATE (ProcessSkeleton)
10365                          G_IMPLEMENT_INTERFACE (TYPE_PROCESS, process_skeleton_iface_init));
10366 
10367 #else
10368 G_DEFINE_TYPE_WITH_CODE (ProcessSkeleton, process_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
10369                          G_IMPLEMENT_INTERFACE (TYPE_PROCESS, process_skeleton_iface_init));
10370 
10371 #endif
10372 static void
10373 process_skeleton_finalize (GObject *object)
10374 {
10375   ProcessSkeleton *skeleton = PROCESS_SKELETON (object);
10376   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
10377   if (skeleton->priv->changed_properties_idle_source != NULL)
10378     g_source_destroy (skeleton->priv->changed_properties_idle_source);
10379   g_main_context_unref (skeleton->priv->context);
10380   g_mutex_clear (&skeleton->priv->lock);
10381   G_OBJECT_CLASS (process_skeleton_parent_class)->finalize (object);
10382 }
10383 
10384 static void
10385 process_skeleton_init (ProcessSkeleton *skeleton)
10386 {
10387 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
10388   skeleton->priv = process_skeleton_get_instance_private (skeleton);
10389 #else
10390   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_PROCESS_SKELETON, ProcessSkeletonPrivate);
10391 #endif
10392 
10393   g_mutex_init (&skeleton->priv->lock);
10394   skeleton->priv->context = g_main_context_ref_thread_default ();
10395 }
10396 
10397 static void
10398 process_skeleton_class_init (ProcessSkeletonClass *klass)
10399 {
10400   GObjectClass *gobject_class;
10401   GDBusInterfaceSkeletonClass *skeleton_class;
10402 
10403   gobject_class = G_OBJECT_CLASS (klass);
10404   gobject_class->finalize = process_skeleton_finalize;
10405 
10406   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
10407   skeleton_class->get_info = process_skeleton_dbus_interface_get_info;
10408   skeleton_class->get_properties = process_skeleton_dbus_interface_get_properties;
10409   skeleton_class->flush = process_skeleton_dbus_interface_flush;
10410   skeleton_class->get_vtable = process_skeleton_dbus_interface_get_vtable;
10411 
10412 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
10413   g_type_class_add_private (klass, sizeof (ProcessSkeletonPrivate));
10414 #endif
10415 }
10416 
10417 static void
10418 process_skeleton_iface_init (ProcessIface *iface)
10419 {
10420 }
10421 
10422 /**
10423  * process_skeleton_new:
10424  *
10425  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Process.top_of_page">org.openbmc.Process</link>.
10426  *
10427  * Returns: (transfer full) (type ProcessSkeleton): The skeleton object.
10428  */
10429 Process *
10430 process_skeleton_new (void)
10431 {
10432   return PROCESS (g_object_new (TYPE_PROCESS_SKELETON, NULL));
10433 }
10434 
10435 /* ------------------------------------------------------------------------
10436  * Code for interface org.openbmc.SharedResource
10437  * ------------------------------------------------------------------------
10438  */
10439 
10440 /**
10441  * SECTION:SharedResource
10442  * @title: SharedResource
10443  * @short_description: Generated C code for the org.openbmc.SharedResource D-Bus interface
10444  *
10445  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-SharedResource.top_of_page">org.openbmc.SharedResource</link> D-Bus interface in C.
10446  */
10447 
10448 /* ---- Introspection data for org.openbmc.SharedResource ---- */
10449 
10450 static const _ExtendedGDBusArgInfo _shared_resource_method_info_lock_IN_ARG_name =
10451 {
10452   {
10453     -1,
10454     (gchar *) "name",
10455     (gchar *) "s",
10456     NULL
10457   },
10458   FALSE
10459 };
10460 
10461 static const _ExtendedGDBusArgInfo * const _shared_resource_method_info_lock_IN_ARG_pointers[] =
10462 {
10463   &_shared_resource_method_info_lock_IN_ARG_name,
10464   NULL
10465 };
10466 
10467 static const _ExtendedGDBusMethodInfo _shared_resource_method_info_lock =
10468 {
10469   {
10470     -1,
10471     (gchar *) "lock",
10472     (GDBusArgInfo **) &_shared_resource_method_info_lock_IN_ARG_pointers,
10473     NULL,
10474     NULL
10475   },
10476   "handle-lock",
10477   FALSE
10478 };
10479 
10480 static const _ExtendedGDBusMethodInfo _shared_resource_method_info_unlock =
10481 {
10482   {
10483     -1,
10484     (gchar *) "unlock",
10485     NULL,
10486     NULL,
10487     NULL
10488   },
10489   "handle-unlock",
10490   FALSE
10491 };
10492 
10493 static const _ExtendedGDBusArgInfo _shared_resource_method_info_is_locked_OUT_ARG_lock =
10494 {
10495   {
10496     -1,
10497     (gchar *) "lock",
10498     (gchar *) "b",
10499     NULL
10500   },
10501   FALSE
10502 };
10503 
10504 static const _ExtendedGDBusArgInfo _shared_resource_method_info_is_locked_OUT_ARG_name =
10505 {
10506   {
10507     -1,
10508     (gchar *) "name",
10509     (gchar *) "s",
10510     NULL
10511   },
10512   FALSE
10513 };
10514 
10515 static const _ExtendedGDBusArgInfo * const _shared_resource_method_info_is_locked_OUT_ARG_pointers[] =
10516 {
10517   &_shared_resource_method_info_is_locked_OUT_ARG_lock,
10518   &_shared_resource_method_info_is_locked_OUT_ARG_name,
10519   NULL
10520 };
10521 
10522 static const _ExtendedGDBusMethodInfo _shared_resource_method_info_is_locked =
10523 {
10524   {
10525     -1,
10526     (gchar *) "isLocked",
10527     NULL,
10528     (GDBusArgInfo **) &_shared_resource_method_info_is_locked_OUT_ARG_pointers,
10529     NULL
10530   },
10531   "handle-is-locked",
10532   FALSE
10533 };
10534 
10535 static const _ExtendedGDBusMethodInfo * const _shared_resource_method_info_pointers[] =
10536 {
10537   &_shared_resource_method_info_lock,
10538   &_shared_resource_method_info_unlock,
10539   &_shared_resource_method_info_is_locked,
10540   NULL
10541 };
10542 
10543 static const _ExtendedGDBusPropertyInfo _shared_resource_property_info_lock =
10544 {
10545   {
10546     -1,
10547     (gchar *) "lock",
10548     (gchar *) "b",
10549     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
10550     NULL
10551   },
10552   "lock",
10553   FALSE
10554 };
10555 
10556 static const _ExtendedGDBusPropertyInfo _shared_resource_property_info_name =
10557 {
10558   {
10559     -1,
10560     (gchar *) "name",
10561     (gchar *) "s",
10562     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
10563     NULL
10564   },
10565   "name",
10566   FALSE
10567 };
10568 
10569 static const _ExtendedGDBusPropertyInfo * const _shared_resource_property_info_pointers[] =
10570 {
10571   &_shared_resource_property_info_lock,
10572   &_shared_resource_property_info_name,
10573   NULL
10574 };
10575 
10576 static const _ExtendedGDBusInterfaceInfo _shared_resource_interface_info =
10577 {
10578   {
10579     -1,
10580     (gchar *) "org.openbmc.SharedResource",
10581     (GDBusMethodInfo **) &_shared_resource_method_info_pointers,
10582     NULL,
10583     (GDBusPropertyInfo **) &_shared_resource_property_info_pointers,
10584     NULL
10585   },
10586   "shared-resource",
10587 };
10588 
10589 
10590 /**
10591  * shared_resource_interface_info:
10592  *
10593  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-SharedResource.top_of_page">org.openbmc.SharedResource</link> D-Bus interface.
10594  *
10595  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
10596  */
10597 GDBusInterfaceInfo *
10598 shared_resource_interface_info (void)
10599 {
10600   return (GDBusInterfaceInfo *) &_shared_resource_interface_info.parent_struct;
10601 }
10602 
10603 /**
10604  * shared_resource_override_properties:
10605  * @klass: The class structure for a #GObject<!-- -->-derived class.
10606  * @property_id_begin: The property id to assign to the first overridden property.
10607  *
10608  * Overrides all #GObject properties in the #SharedResource interface for a concrete class.
10609  * The properties are overridden in the order they are defined.
10610  *
10611  * Returns: The last property id.
10612  */
10613 guint
10614 shared_resource_override_properties (GObjectClass *klass, guint property_id_begin)
10615 {
10616   g_object_class_override_property (klass, property_id_begin++, "lock");
10617   g_object_class_override_property (klass, property_id_begin++, "name");
10618   return property_id_begin - 1;
10619 }
10620 
10621 
10622 
10623 /**
10624  * SharedResource:
10625  *
10626  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SharedResource.top_of_page">org.openbmc.SharedResource</link>.
10627  */
10628 
10629 /**
10630  * SharedResourceIface:
10631  * @parent_iface: The parent interface.
10632  * @handle_is_locked: Handler for the #SharedResource::handle-is-locked signal.
10633  * @handle_lock: Handler for the #SharedResource::handle-lock signal.
10634  * @handle_unlock: Handler for the #SharedResource::handle-unlock signal.
10635  * @get_lock: Getter for the #SharedResource:lock property.
10636  * @get_name: Getter for the #SharedResource:name property.
10637  *
10638  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SharedResource.top_of_page">org.openbmc.SharedResource</link>.
10639  */
10640 
10641 typedef SharedResourceIface SharedResourceInterface;
10642 G_DEFINE_INTERFACE (SharedResource, shared_resource, G_TYPE_OBJECT);
10643 
10644 static void
10645 shared_resource_default_init (SharedResourceIface *iface)
10646 {
10647   /* GObject signals for incoming D-Bus method calls: */
10648   /**
10649    * SharedResource::handle-lock:
10650    * @object: A #SharedResource.
10651    * @invocation: A #GDBusMethodInvocation.
10652    * @arg_name: Argument passed by remote caller.
10653    *
10654    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-SharedResource.lock">lock()</link> D-Bus method.
10655    *
10656    * 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 shared_resource_complete_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.
10657    *
10658    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
10659    */
10660   g_signal_new ("handle-lock",
10661     G_TYPE_FROM_INTERFACE (iface),
10662     G_SIGNAL_RUN_LAST,
10663     G_STRUCT_OFFSET (SharedResourceIface, handle_lock),
10664     g_signal_accumulator_true_handled,
10665     NULL,
10666     g_cclosure_marshal_generic,
10667     G_TYPE_BOOLEAN,
10668     2,
10669     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
10670 
10671   /**
10672    * SharedResource::handle-unlock:
10673    * @object: A #SharedResource.
10674    * @invocation: A #GDBusMethodInvocation.
10675    *
10676    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-SharedResource.unlock">unlock()</link> D-Bus method.
10677    *
10678    * 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 shared_resource_complete_unlock() 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.
10679    *
10680    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
10681    */
10682   g_signal_new ("handle-unlock",
10683     G_TYPE_FROM_INTERFACE (iface),
10684     G_SIGNAL_RUN_LAST,
10685     G_STRUCT_OFFSET (SharedResourceIface, handle_unlock),
10686     g_signal_accumulator_true_handled,
10687     NULL,
10688     g_cclosure_marshal_generic,
10689     G_TYPE_BOOLEAN,
10690     1,
10691     G_TYPE_DBUS_METHOD_INVOCATION);
10692 
10693   /**
10694    * SharedResource::handle-is-locked:
10695    * @object: A #SharedResource.
10696    * @invocation: A #GDBusMethodInvocation.
10697    *
10698    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-SharedResource.isLocked">isLocked()</link> D-Bus method.
10699    *
10700    * 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 shared_resource_complete_is_locked() 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.
10701    *
10702    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
10703    */
10704   g_signal_new ("handle-is-locked",
10705     G_TYPE_FROM_INTERFACE (iface),
10706     G_SIGNAL_RUN_LAST,
10707     G_STRUCT_OFFSET (SharedResourceIface, handle_is_locked),
10708     g_signal_accumulator_true_handled,
10709     NULL,
10710     g_cclosure_marshal_generic,
10711     G_TYPE_BOOLEAN,
10712     1,
10713     G_TYPE_DBUS_METHOD_INVOCATION);
10714 
10715   /* GObject properties for D-Bus properties: */
10716   /**
10717    * SharedResource:lock:
10718    *
10719    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SharedResource.lock">"lock"</link>.
10720    *
10721    * 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.
10722    */
10723   g_object_interface_install_property (iface,
10724     g_param_spec_boolean ("lock", "lock", "lock", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
10725   /**
10726    * SharedResource:name:
10727    *
10728    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-SharedResource.name">"name"</link>.
10729    *
10730    * 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.
10731    */
10732   g_object_interface_install_property (iface,
10733     g_param_spec_string ("name", "name", "name", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
10734 }
10735 
10736 /**
10737  * shared_resource_get_lock: (skip)
10738  * @object: A #SharedResource.
10739  *
10740  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SharedResource.lock">"lock"</link> D-Bus property.
10741  *
10742  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
10743  *
10744  * Returns: The property value.
10745  */
10746 gboolean
10747 shared_resource_get_lock (SharedResource *object)
10748 {
10749   return SHARED_RESOURCE_GET_IFACE (object)->get_lock (object);
10750 }
10751 
10752 /**
10753  * shared_resource_set_lock: (skip)
10754  * @object: A #SharedResource.
10755  * @value: The value to set.
10756  *
10757  * Sets the <link linkend="gdbus-property-org-openbmc-SharedResource.lock">"lock"</link> D-Bus property to @value.
10758  *
10759  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
10760  */
10761 void
10762 shared_resource_set_lock (SharedResource *object, gboolean value)
10763 {
10764   g_object_set (G_OBJECT (object), "lock", value, NULL);
10765 }
10766 
10767 /**
10768  * shared_resource_get_name: (skip)
10769  * @object: A #SharedResource.
10770  *
10771  * Gets the value of the <link linkend="gdbus-property-org-openbmc-SharedResource.name">"name"</link> D-Bus property.
10772  *
10773  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
10774  *
10775  * <warning>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 shared_resource_dup_name() if on another thread.</warning>
10776  *
10777  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
10778  */
10779 const gchar *
10780 shared_resource_get_name (SharedResource *object)
10781 {
10782   return SHARED_RESOURCE_GET_IFACE (object)->get_name (object);
10783 }
10784 
10785 /**
10786  * shared_resource_dup_name: (skip)
10787  * @object: A #SharedResource.
10788  *
10789  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-SharedResource.name">"name"</link> D-Bus property.
10790  *
10791  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
10792  *
10793  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
10794  */
10795 gchar *
10796 shared_resource_dup_name (SharedResource *object)
10797 {
10798   gchar *value;
10799   g_object_get (G_OBJECT (object), "name", &value, NULL);
10800   return value;
10801 }
10802 
10803 /**
10804  * shared_resource_set_name: (skip)
10805  * @object: A #SharedResource.
10806  * @value: The value to set.
10807  *
10808  * Sets the <link linkend="gdbus-property-org-openbmc-SharedResource.name">"name"</link> D-Bus property to @value.
10809  *
10810  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
10811  */
10812 void
10813 shared_resource_set_name (SharedResource *object, const gchar *value)
10814 {
10815   g_object_set (G_OBJECT (object), "name", value, NULL);
10816 }
10817 
10818 /**
10819  * shared_resource_call_lock:
10820  * @proxy: A #SharedResourceProxy.
10821  * @arg_name: Argument to pass with the method invocation.
10822  * @cancellable: (allow-none): A #GCancellable or %NULL.
10823  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
10824  * @user_data: User data to pass to @callback.
10825  *
10826  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-SharedResource.lock">lock()</link> D-Bus method on @proxy.
10827  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
10828  * You can then call shared_resource_call_lock_finish() to get the result of the operation.
10829  *
10830  * See shared_resource_call_lock_sync() for the synchronous, blocking version of this method.
10831  */
10832 void
10833 shared_resource_call_lock (
10834     SharedResource *proxy,
10835     const gchar *arg_name,
10836     GCancellable *cancellable,
10837     GAsyncReadyCallback callback,
10838     gpointer user_data)
10839 {
10840   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
10841     "lock",
10842     g_variant_new ("(s)",
10843                    arg_name),
10844     G_DBUS_CALL_FLAGS_NONE,
10845     -1,
10846     cancellable,
10847     callback,
10848     user_data);
10849 }
10850 
10851 /**
10852  * shared_resource_call_lock_finish:
10853  * @proxy: A #SharedResourceProxy.
10854  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shared_resource_call_lock().
10855  * @error: Return location for error or %NULL.
10856  *
10857  * Finishes an operation started with shared_resource_call_lock().
10858  *
10859  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
10860  */
10861 gboolean
10862 shared_resource_call_lock_finish (
10863     SharedResource *proxy,
10864     GAsyncResult *res,
10865     GError **error)
10866 {
10867   GVariant *_ret;
10868   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
10869   if (_ret == NULL)
10870     goto _out;
10871   g_variant_get (_ret,
10872                  "()");
10873   g_variant_unref (_ret);
10874 _out:
10875   return _ret != NULL;
10876 }
10877 
10878 /**
10879  * shared_resource_call_lock_sync:
10880  * @proxy: A #SharedResourceProxy.
10881  * @arg_name: Argument to pass with the method invocation.
10882  * @cancellable: (allow-none): A #GCancellable or %NULL.
10883  * @error: Return location for error or %NULL.
10884  *
10885  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-SharedResource.lock">lock()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
10886  *
10887  * See shared_resource_call_lock() for the asynchronous version of this method.
10888  *
10889  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
10890  */
10891 gboolean
10892 shared_resource_call_lock_sync (
10893     SharedResource *proxy,
10894     const gchar *arg_name,
10895     GCancellable *cancellable,
10896     GError **error)
10897 {
10898   GVariant *_ret;
10899   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
10900     "lock",
10901     g_variant_new ("(s)",
10902                    arg_name),
10903     G_DBUS_CALL_FLAGS_NONE,
10904     -1,
10905     cancellable,
10906     error);
10907   if (_ret == NULL)
10908     goto _out;
10909   g_variant_get (_ret,
10910                  "()");
10911   g_variant_unref (_ret);
10912 _out:
10913   return _ret != NULL;
10914 }
10915 
10916 /**
10917  * shared_resource_call_unlock:
10918  * @proxy: A #SharedResourceProxy.
10919  * @cancellable: (allow-none): A #GCancellable or %NULL.
10920  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
10921  * @user_data: User data to pass to @callback.
10922  *
10923  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-SharedResource.unlock">unlock()</link> D-Bus method on @proxy.
10924  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
10925  * You can then call shared_resource_call_unlock_finish() to get the result of the operation.
10926  *
10927  * See shared_resource_call_unlock_sync() for the synchronous, blocking version of this method.
10928  */
10929 void
10930 shared_resource_call_unlock (
10931     SharedResource *proxy,
10932     GCancellable *cancellable,
10933     GAsyncReadyCallback callback,
10934     gpointer user_data)
10935 {
10936   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
10937     "unlock",
10938     g_variant_new ("()"),
10939     G_DBUS_CALL_FLAGS_NONE,
10940     -1,
10941     cancellable,
10942     callback,
10943     user_data);
10944 }
10945 
10946 /**
10947  * shared_resource_call_unlock_finish:
10948  * @proxy: A #SharedResourceProxy.
10949  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shared_resource_call_unlock().
10950  * @error: Return location for error or %NULL.
10951  *
10952  * Finishes an operation started with shared_resource_call_unlock().
10953  *
10954  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
10955  */
10956 gboolean
10957 shared_resource_call_unlock_finish (
10958     SharedResource *proxy,
10959     GAsyncResult *res,
10960     GError **error)
10961 {
10962   GVariant *_ret;
10963   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
10964   if (_ret == NULL)
10965     goto _out;
10966   g_variant_get (_ret,
10967                  "()");
10968   g_variant_unref (_ret);
10969 _out:
10970   return _ret != NULL;
10971 }
10972 
10973 /**
10974  * shared_resource_call_unlock_sync:
10975  * @proxy: A #SharedResourceProxy.
10976  * @cancellable: (allow-none): A #GCancellable or %NULL.
10977  * @error: Return location for error or %NULL.
10978  *
10979  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-SharedResource.unlock">unlock()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
10980  *
10981  * See shared_resource_call_unlock() for the asynchronous version of this method.
10982  *
10983  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
10984  */
10985 gboolean
10986 shared_resource_call_unlock_sync (
10987     SharedResource *proxy,
10988     GCancellable *cancellable,
10989     GError **error)
10990 {
10991   GVariant *_ret;
10992   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
10993     "unlock",
10994     g_variant_new ("()"),
10995     G_DBUS_CALL_FLAGS_NONE,
10996     -1,
10997     cancellable,
10998     error);
10999   if (_ret == NULL)
11000     goto _out;
11001   g_variant_get (_ret,
11002                  "()");
11003   g_variant_unref (_ret);
11004 _out:
11005   return _ret != NULL;
11006 }
11007 
11008 /**
11009  * shared_resource_call_is_locked:
11010  * @proxy: A #SharedResourceProxy.
11011  * @cancellable: (allow-none): A #GCancellable or %NULL.
11012  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
11013  * @user_data: User data to pass to @callback.
11014  *
11015  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-SharedResource.isLocked">isLocked()</link> D-Bus method on @proxy.
11016  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
11017  * You can then call shared_resource_call_is_locked_finish() to get the result of the operation.
11018  *
11019  * See shared_resource_call_is_locked_sync() for the synchronous, blocking version of this method.
11020  */
11021 void
11022 shared_resource_call_is_locked (
11023     SharedResource *proxy,
11024     GCancellable *cancellable,
11025     GAsyncReadyCallback callback,
11026     gpointer user_data)
11027 {
11028   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
11029     "isLocked",
11030     g_variant_new ("()"),
11031     G_DBUS_CALL_FLAGS_NONE,
11032     -1,
11033     cancellable,
11034     callback,
11035     user_data);
11036 }
11037 
11038 /**
11039  * shared_resource_call_is_locked_finish:
11040  * @proxy: A #SharedResourceProxy.
11041  * @out_lock: (out): Return location for return parameter or %NULL to ignore.
11042  * @out_name: (out): Return location for return parameter or %NULL to ignore.
11043  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shared_resource_call_is_locked().
11044  * @error: Return location for error or %NULL.
11045  *
11046  * Finishes an operation started with shared_resource_call_is_locked().
11047  *
11048  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
11049  */
11050 gboolean
11051 shared_resource_call_is_locked_finish (
11052     SharedResource *proxy,
11053     gboolean *out_lock,
11054     gchar **out_name,
11055     GAsyncResult *res,
11056     GError **error)
11057 {
11058   GVariant *_ret;
11059   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
11060   if (_ret == NULL)
11061     goto _out;
11062   g_variant_get (_ret,
11063                  "(bs)",
11064                  out_lock,
11065                  out_name);
11066   g_variant_unref (_ret);
11067 _out:
11068   return _ret != NULL;
11069 }
11070 
11071 /**
11072  * shared_resource_call_is_locked_sync:
11073  * @proxy: A #SharedResourceProxy.
11074  * @out_lock: (out): Return location for return parameter or %NULL to ignore.
11075  * @out_name: (out): Return location for return parameter or %NULL to ignore.
11076  * @cancellable: (allow-none): A #GCancellable or %NULL.
11077  * @error: Return location for error or %NULL.
11078  *
11079  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-SharedResource.isLocked">isLocked()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
11080  *
11081  * See shared_resource_call_is_locked() for the asynchronous version of this method.
11082  *
11083  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
11084  */
11085 gboolean
11086 shared_resource_call_is_locked_sync (
11087     SharedResource *proxy,
11088     gboolean *out_lock,
11089     gchar **out_name,
11090     GCancellable *cancellable,
11091     GError **error)
11092 {
11093   GVariant *_ret;
11094   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
11095     "isLocked",
11096     g_variant_new ("()"),
11097     G_DBUS_CALL_FLAGS_NONE,
11098     -1,
11099     cancellable,
11100     error);
11101   if (_ret == NULL)
11102     goto _out;
11103   g_variant_get (_ret,
11104                  "(bs)",
11105                  out_lock,
11106                  out_name);
11107   g_variant_unref (_ret);
11108 _out:
11109   return _ret != NULL;
11110 }
11111 
11112 /**
11113  * shared_resource_complete_lock:
11114  * @object: A #SharedResource.
11115  * @invocation: (transfer full): A #GDBusMethodInvocation.
11116  *
11117  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-SharedResource.lock">lock()</link> 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.
11118  *
11119  * This method will free @invocation, you cannot use it afterwards.
11120  */
11121 void
11122 shared_resource_complete_lock (
11123     SharedResource *object,
11124     GDBusMethodInvocation *invocation)
11125 {
11126   g_dbus_method_invocation_return_value (invocation,
11127     g_variant_new ("()"));
11128 }
11129 
11130 /**
11131  * shared_resource_complete_unlock:
11132  * @object: A #SharedResource.
11133  * @invocation: (transfer full): A #GDBusMethodInvocation.
11134  *
11135  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-SharedResource.unlock">unlock()</link> 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.
11136  *
11137  * This method will free @invocation, you cannot use it afterwards.
11138  */
11139 void
11140 shared_resource_complete_unlock (
11141     SharedResource *object,
11142     GDBusMethodInvocation *invocation)
11143 {
11144   g_dbus_method_invocation_return_value (invocation,
11145     g_variant_new ("()"));
11146 }
11147 
11148 /**
11149  * shared_resource_complete_is_locked:
11150  * @object: A #SharedResource.
11151  * @invocation: (transfer full): A #GDBusMethodInvocation.
11152  * @lock: Parameter to return.
11153  * @name: Parameter to return.
11154  *
11155  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-SharedResource.isLocked">isLocked()</link> 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.
11156  *
11157  * This method will free @invocation, you cannot use it afterwards.
11158  */
11159 void
11160 shared_resource_complete_is_locked (
11161     SharedResource *object,
11162     GDBusMethodInvocation *invocation,
11163     gboolean lock,
11164     const gchar *name)
11165 {
11166   g_dbus_method_invocation_return_value (invocation,
11167     g_variant_new ("(bs)",
11168                    lock,
11169                    name));
11170 }
11171 
11172 /* ------------------------------------------------------------------------ */
11173 
11174 /**
11175  * SharedResourceProxy:
11176  *
11177  * The #SharedResourceProxy structure contains only private data and should only be accessed using the provided API.
11178  */
11179 
11180 /**
11181  * SharedResourceProxyClass:
11182  * @parent_class: The parent class.
11183  *
11184  * Class structure for #SharedResourceProxy.
11185  */
11186 
11187 struct _SharedResourceProxyPrivate
11188 {
11189   GData *qdata;
11190 };
11191 
11192 static void shared_resource_proxy_iface_init (SharedResourceIface *iface);
11193 
11194 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
11195 G_DEFINE_TYPE_WITH_CODE (SharedResourceProxy, shared_resource_proxy, G_TYPE_DBUS_PROXY,
11196                          G_ADD_PRIVATE (SharedResourceProxy)
11197                          G_IMPLEMENT_INTERFACE (TYPE_SHARED_RESOURCE, shared_resource_proxy_iface_init));
11198 
11199 #else
11200 G_DEFINE_TYPE_WITH_CODE (SharedResourceProxy, shared_resource_proxy, G_TYPE_DBUS_PROXY,
11201                          G_IMPLEMENT_INTERFACE (TYPE_SHARED_RESOURCE, shared_resource_proxy_iface_init));
11202 
11203 #endif
11204 static void
11205 shared_resource_proxy_finalize (GObject *object)
11206 {
11207   SharedResourceProxy *proxy = SHARED_RESOURCE_PROXY (object);
11208   g_datalist_clear (&proxy->priv->qdata);
11209   G_OBJECT_CLASS (shared_resource_proxy_parent_class)->finalize (object);
11210 }
11211 
11212 static void
11213 shared_resource_proxy_get_property (GObject      *object,
11214   guint         prop_id,
11215   GValue       *value,
11216   GParamSpec   *pspec G_GNUC_UNUSED)
11217 {
11218   const _ExtendedGDBusPropertyInfo *info;
11219   GVariant *variant;
11220   g_assert (prop_id != 0 && prop_id - 1 < 2);
11221   info = _shared_resource_property_info_pointers[prop_id - 1];
11222   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
11223   if (info->use_gvariant)
11224     {
11225       g_value_set_variant (value, variant);
11226     }
11227   else
11228     {
11229       if (variant != NULL)
11230         g_dbus_gvariant_to_gvalue (variant, value);
11231     }
11232   if (variant != NULL)
11233     g_variant_unref (variant);
11234 }
11235 
11236 static void
11237 shared_resource_proxy_set_property_cb (GDBusProxy *proxy,
11238   GAsyncResult *res,
11239   gpointer      user_data)
11240 {
11241   const _ExtendedGDBusPropertyInfo *info = user_data;
11242   GError *error;
11243   GVariant *_ret;
11244   error = NULL;
11245   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
11246   if (!_ret)
11247     {
11248       g_warning ("Error setting property '%s' on interface org.openbmc.SharedResource: %s (%s, %d)",
11249                  info->parent_struct.name,
11250                  error->message, g_quark_to_string (error->domain), error->code);
11251       g_error_free (error);
11252     }
11253   else
11254     {
11255       g_variant_unref (_ret);
11256     }
11257 }
11258 
11259 static void
11260 shared_resource_proxy_set_property (GObject      *object,
11261   guint         prop_id,
11262   const GValue *value,
11263   GParamSpec   *pspec G_GNUC_UNUSED)
11264 {
11265   const _ExtendedGDBusPropertyInfo *info;
11266   GVariant *variant;
11267   g_assert (prop_id != 0 && prop_id - 1 < 2);
11268   info = _shared_resource_property_info_pointers[prop_id - 1];
11269   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
11270   g_dbus_proxy_call (G_DBUS_PROXY (object),
11271     "org.freedesktop.DBus.Properties.Set",
11272     g_variant_new ("(ssv)", "org.openbmc.SharedResource", info->parent_struct.name, variant),
11273     G_DBUS_CALL_FLAGS_NONE,
11274     -1,
11275     NULL, (GAsyncReadyCallback) shared_resource_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
11276   g_variant_unref (variant);
11277 }
11278 
11279 static void
11280 shared_resource_proxy_g_signal (GDBusProxy *proxy,
11281   const gchar *sender_name G_GNUC_UNUSED,
11282   const gchar *signal_name,
11283   GVariant *parameters)
11284 {
11285   _ExtendedGDBusSignalInfo *info;
11286   GVariantIter iter;
11287   GVariant *child;
11288   GValue *paramv;
11289   guint num_params;
11290   guint n;
11291   guint signal_id;
11292   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_shared_resource_interface_info.parent_struct, signal_name);
11293   if (info == NULL)
11294     return;
11295   num_params = g_variant_n_children (parameters);
11296   paramv = g_new0 (GValue, num_params + 1);
11297   g_value_init (&paramv[0], TYPE_SHARED_RESOURCE);
11298   g_value_set_object (&paramv[0], proxy);
11299   g_variant_iter_init (&iter, parameters);
11300   n = 1;
11301   while ((child = g_variant_iter_next_value (&iter)) != NULL)
11302     {
11303       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
11304       if (arg_info->use_gvariant)
11305         {
11306           g_value_init (&paramv[n], G_TYPE_VARIANT);
11307           g_value_set_variant (&paramv[n], child);
11308           n++;
11309         }
11310       else
11311         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
11312       g_variant_unref (child);
11313     }
11314   signal_id = g_signal_lookup (info->signal_name, TYPE_SHARED_RESOURCE);
11315   g_signal_emitv (paramv, signal_id, 0, NULL);
11316   for (n = 0; n < num_params + 1; n++)
11317     g_value_unset (&paramv[n]);
11318   g_free (paramv);
11319 }
11320 
11321 static void
11322 shared_resource_proxy_g_properties_changed (GDBusProxy *_proxy,
11323   GVariant *changed_properties,
11324   const gchar *const *invalidated_properties)
11325 {
11326   SharedResourceProxy *proxy = SHARED_RESOURCE_PROXY (_proxy);
11327   guint n;
11328   const gchar *key;
11329   GVariantIter *iter;
11330   _ExtendedGDBusPropertyInfo *info;
11331   g_variant_get (changed_properties, "a{sv}", &iter);
11332   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
11333     {
11334       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shared_resource_interface_info.parent_struct, key);
11335       g_datalist_remove_data (&proxy->priv->qdata, key);
11336       if (info != NULL)
11337         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
11338     }
11339   g_variant_iter_free (iter);
11340   for (n = 0; invalidated_properties[n] != NULL; n++)
11341     {
11342       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shared_resource_interface_info.parent_struct, invalidated_properties[n]);
11343       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
11344       if (info != NULL)
11345         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
11346     }
11347 }
11348 
11349 static gboolean
11350 shared_resource_proxy_get_lock (SharedResource *object)
11351 {
11352   SharedResourceProxy *proxy = SHARED_RESOURCE_PROXY (object);
11353   GVariant *variant;
11354   gboolean value = 0;
11355   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "lock");
11356   if (variant != NULL)
11357     {
11358       value = g_variant_get_boolean (variant);
11359       g_variant_unref (variant);
11360     }
11361   return value;
11362 }
11363 
11364 static const gchar *
11365 shared_resource_proxy_get_name (SharedResource *object)
11366 {
11367   SharedResourceProxy *proxy = SHARED_RESOURCE_PROXY (object);
11368   GVariant *variant;
11369   const gchar *value = NULL;
11370   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "name");
11371   if (variant != NULL)
11372     {
11373       value = g_variant_get_string (variant, NULL);
11374       g_variant_unref (variant);
11375     }
11376   return value;
11377 }
11378 
11379 static void
11380 shared_resource_proxy_init (SharedResourceProxy *proxy)
11381 {
11382 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
11383   proxy->priv = shared_resource_proxy_get_instance_private (proxy);
11384 #else
11385   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_SHARED_RESOURCE_PROXY, SharedResourceProxyPrivate);
11386 #endif
11387 
11388   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), shared_resource_interface_info ());
11389 }
11390 
11391 static void
11392 shared_resource_proxy_class_init (SharedResourceProxyClass *klass)
11393 {
11394   GObjectClass *gobject_class;
11395   GDBusProxyClass *proxy_class;
11396 
11397   gobject_class = G_OBJECT_CLASS (klass);
11398   gobject_class->finalize     = shared_resource_proxy_finalize;
11399   gobject_class->get_property = shared_resource_proxy_get_property;
11400   gobject_class->set_property = shared_resource_proxy_set_property;
11401 
11402   proxy_class = G_DBUS_PROXY_CLASS (klass);
11403   proxy_class->g_signal = shared_resource_proxy_g_signal;
11404   proxy_class->g_properties_changed = shared_resource_proxy_g_properties_changed;
11405 
11406   shared_resource_override_properties (gobject_class, 1);
11407 
11408 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
11409   g_type_class_add_private (klass, sizeof (SharedResourceProxyPrivate));
11410 #endif
11411 }
11412 
11413 static void
11414 shared_resource_proxy_iface_init (SharedResourceIface *iface)
11415 {
11416   iface->get_lock = shared_resource_proxy_get_lock;
11417   iface->get_name = shared_resource_proxy_get_name;
11418 }
11419 
11420 /**
11421  * shared_resource_proxy_new:
11422  * @connection: A #GDBusConnection.
11423  * @flags: Flags from the #GDBusProxyFlags enumeration.
11424  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
11425  * @object_path: An object path.
11426  * @cancellable: (allow-none): A #GCancellable or %NULL.
11427  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
11428  * @user_data: User data to pass to @callback.
11429  *
11430  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SharedResource.top_of_page">org.openbmc.SharedResource</link>. See g_dbus_proxy_new() for more details.
11431  *
11432  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
11433  * You can then call shared_resource_proxy_new_finish() to get the result of the operation.
11434  *
11435  * See shared_resource_proxy_new_sync() for the synchronous, blocking version of this constructor.
11436  */
11437 void
11438 shared_resource_proxy_new (
11439     GDBusConnection     *connection,
11440     GDBusProxyFlags      flags,
11441     const gchar         *name,
11442     const gchar         *object_path,
11443     GCancellable        *cancellable,
11444     GAsyncReadyCallback  callback,
11445     gpointer             user_data)
11446 {
11447   g_async_initable_new_async (TYPE_SHARED_RESOURCE_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.openbmc.SharedResource", NULL);
11448 }
11449 
11450 /**
11451  * shared_resource_proxy_new_finish:
11452  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shared_resource_proxy_new().
11453  * @error: Return location for error or %NULL
11454  *
11455  * Finishes an operation started with shared_resource_proxy_new().
11456  *
11457  * Returns: (transfer full) (type SharedResourceProxy): The constructed proxy object or %NULL if @error is set.
11458  */
11459 SharedResource *
11460 shared_resource_proxy_new_finish (
11461     GAsyncResult        *res,
11462     GError             **error)
11463 {
11464   GObject *ret;
11465   GObject *source_object;
11466   source_object = g_async_result_get_source_object (res);
11467   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
11468   g_object_unref (source_object);
11469   if (ret != NULL)
11470     return SHARED_RESOURCE (ret);
11471   else
11472     return NULL;
11473 }
11474 
11475 /**
11476  * shared_resource_proxy_new_sync:
11477  * @connection: A #GDBusConnection.
11478  * @flags: Flags from the #GDBusProxyFlags enumeration.
11479  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
11480  * @object_path: An object path.
11481  * @cancellable: (allow-none): A #GCancellable or %NULL.
11482  * @error: Return location for error or %NULL
11483  *
11484  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SharedResource.top_of_page">org.openbmc.SharedResource</link>. See g_dbus_proxy_new_sync() for more details.
11485  *
11486  * The calling thread is blocked until a reply is received.
11487  *
11488  * See shared_resource_proxy_new() for the asynchronous version of this constructor.
11489  *
11490  * Returns: (transfer full) (type SharedResourceProxy): The constructed proxy object or %NULL if @error is set.
11491  */
11492 SharedResource *
11493 shared_resource_proxy_new_sync (
11494     GDBusConnection     *connection,
11495     GDBusProxyFlags      flags,
11496     const gchar         *name,
11497     const gchar         *object_path,
11498     GCancellable        *cancellable,
11499     GError             **error)
11500 {
11501   GInitable *ret;
11502   ret = g_initable_new (TYPE_SHARED_RESOURCE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.SharedResource", NULL);
11503   if (ret != NULL)
11504     return SHARED_RESOURCE (ret);
11505   else
11506     return NULL;
11507 }
11508 
11509 
11510 /**
11511  * shared_resource_proxy_new_for_bus:
11512  * @bus_type: A #GBusType.
11513  * @flags: Flags from the #GDBusProxyFlags enumeration.
11514  * @name: A bus name (well-known or unique).
11515  * @object_path: An object path.
11516  * @cancellable: (allow-none): A #GCancellable or %NULL.
11517  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
11518  * @user_data: User data to pass to @callback.
11519  *
11520  * Like shared_resource_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
11521  *
11522  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
11523  * You can then call shared_resource_proxy_new_for_bus_finish() to get the result of the operation.
11524  *
11525  * See shared_resource_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
11526  */
11527 void
11528 shared_resource_proxy_new_for_bus (
11529     GBusType             bus_type,
11530     GDBusProxyFlags      flags,
11531     const gchar         *name,
11532     const gchar         *object_path,
11533     GCancellable        *cancellable,
11534     GAsyncReadyCallback  callback,
11535     gpointer             user_data)
11536 {
11537   g_async_initable_new_async (TYPE_SHARED_RESOURCE_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.openbmc.SharedResource", NULL);
11538 }
11539 
11540 /**
11541  * shared_resource_proxy_new_for_bus_finish:
11542  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shared_resource_proxy_new_for_bus().
11543  * @error: Return location for error or %NULL
11544  *
11545  * Finishes an operation started with shared_resource_proxy_new_for_bus().
11546  *
11547  * Returns: (transfer full) (type SharedResourceProxy): The constructed proxy object or %NULL if @error is set.
11548  */
11549 SharedResource *
11550 shared_resource_proxy_new_for_bus_finish (
11551     GAsyncResult        *res,
11552     GError             **error)
11553 {
11554   GObject *ret;
11555   GObject *source_object;
11556   source_object = g_async_result_get_source_object (res);
11557   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
11558   g_object_unref (source_object);
11559   if (ret != NULL)
11560     return SHARED_RESOURCE (ret);
11561   else
11562     return NULL;
11563 }
11564 
11565 /**
11566  * shared_resource_proxy_new_for_bus_sync:
11567  * @bus_type: A #GBusType.
11568  * @flags: Flags from the #GDBusProxyFlags enumeration.
11569  * @name: A bus name (well-known or unique).
11570  * @object_path: An object path.
11571  * @cancellable: (allow-none): A #GCancellable or %NULL.
11572  * @error: Return location for error or %NULL
11573  *
11574  * Like shared_resource_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
11575  *
11576  * The calling thread is blocked until a reply is received.
11577  *
11578  * See shared_resource_proxy_new_for_bus() for the asynchronous version of this constructor.
11579  *
11580  * Returns: (transfer full) (type SharedResourceProxy): The constructed proxy object or %NULL if @error is set.
11581  */
11582 SharedResource *
11583 shared_resource_proxy_new_for_bus_sync (
11584     GBusType             bus_type,
11585     GDBusProxyFlags      flags,
11586     const gchar         *name,
11587     const gchar         *object_path,
11588     GCancellable        *cancellable,
11589     GError             **error)
11590 {
11591   GInitable *ret;
11592   ret = g_initable_new (TYPE_SHARED_RESOURCE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.SharedResource", NULL);
11593   if (ret != NULL)
11594     return SHARED_RESOURCE (ret);
11595   else
11596     return NULL;
11597 }
11598 
11599 
11600 /* ------------------------------------------------------------------------ */
11601 
11602 /**
11603  * SharedResourceSkeleton:
11604  *
11605  * The #SharedResourceSkeleton structure contains only private data and should only be accessed using the provided API.
11606  */
11607 
11608 /**
11609  * SharedResourceSkeletonClass:
11610  * @parent_class: The parent class.
11611  *
11612  * Class structure for #SharedResourceSkeleton.
11613  */
11614 
11615 struct _SharedResourceSkeletonPrivate
11616 {
11617   GValue *properties;
11618   GList *changed_properties;
11619   GSource *changed_properties_idle_source;
11620   GMainContext *context;
11621   GMutex lock;
11622 };
11623 
11624 static void
11625 _shared_resource_skeleton_handle_method_call (
11626   GDBusConnection *connection G_GNUC_UNUSED,
11627   const gchar *sender G_GNUC_UNUSED,
11628   const gchar *object_path G_GNUC_UNUSED,
11629   const gchar *interface_name,
11630   const gchar *method_name,
11631   GVariant *parameters,
11632   GDBusMethodInvocation *invocation,
11633   gpointer user_data)
11634 {
11635   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (user_data);
11636   _ExtendedGDBusMethodInfo *info;
11637   GVariantIter iter;
11638   GVariant *child;
11639   GValue *paramv;
11640   guint num_params;
11641   guint num_extra;
11642   guint n;
11643   guint signal_id;
11644   GValue return_value = G_VALUE_INIT;
11645   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
11646   g_assert (info != NULL);
11647   num_params = g_variant_n_children (parameters);
11648   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
11649   n = 0;
11650   g_value_init (&paramv[n], TYPE_SHARED_RESOURCE);
11651   g_value_set_object (&paramv[n++], skeleton);
11652   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
11653   g_value_set_object (&paramv[n++], invocation);
11654   if (info->pass_fdlist)
11655     {
11656 #ifdef G_OS_UNIX
11657       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
11658       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
11659 #else
11660       g_assert_not_reached ();
11661 #endif
11662     }
11663   g_variant_iter_init (&iter, parameters);
11664   while ((child = g_variant_iter_next_value (&iter)) != NULL)
11665     {
11666       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
11667       if (arg_info->use_gvariant)
11668         {
11669           g_value_init (&paramv[n], G_TYPE_VARIANT);
11670           g_value_set_variant (&paramv[n], child);
11671           n++;
11672         }
11673       else
11674         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
11675       g_variant_unref (child);
11676     }
11677   signal_id = g_signal_lookup (info->signal_name, TYPE_SHARED_RESOURCE);
11678   g_value_init (&return_value, G_TYPE_BOOLEAN);
11679   g_signal_emitv (paramv, signal_id, 0, &return_value);
11680   if (!g_value_get_boolean (&return_value))
11681     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);
11682   g_value_unset (&return_value);
11683   for (n = 0; n < num_params + num_extra; n++)
11684     g_value_unset (&paramv[n]);
11685   g_free (paramv);
11686 }
11687 
11688 static GVariant *
11689 _shared_resource_skeleton_handle_get_property (
11690   GDBusConnection *connection G_GNUC_UNUSED,
11691   const gchar *sender G_GNUC_UNUSED,
11692   const gchar *object_path G_GNUC_UNUSED,
11693   const gchar *interface_name G_GNUC_UNUSED,
11694   const gchar *property_name,
11695   GError **error,
11696   gpointer user_data)
11697 {
11698   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (user_data);
11699   GValue value = G_VALUE_INIT;
11700   GParamSpec *pspec;
11701   _ExtendedGDBusPropertyInfo *info;
11702   GVariant *ret;
11703   ret = NULL;
11704   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shared_resource_interface_info.parent_struct, property_name);
11705   g_assert (info != NULL);
11706   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
11707   if (pspec == NULL)
11708     {
11709       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
11710     }
11711   else
11712     {
11713       g_value_init (&value, pspec->value_type);
11714       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
11715       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
11716       g_value_unset (&value);
11717     }
11718   return ret;
11719 }
11720 
11721 static gboolean
11722 _shared_resource_skeleton_handle_set_property (
11723   GDBusConnection *connection G_GNUC_UNUSED,
11724   const gchar *sender G_GNUC_UNUSED,
11725   const gchar *object_path G_GNUC_UNUSED,
11726   const gchar *interface_name G_GNUC_UNUSED,
11727   const gchar *property_name,
11728   GVariant *variant,
11729   GError **error,
11730   gpointer user_data)
11731 {
11732   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (user_data);
11733   GValue value = G_VALUE_INIT;
11734   GParamSpec *pspec;
11735   _ExtendedGDBusPropertyInfo *info;
11736   gboolean ret;
11737   ret = FALSE;
11738   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shared_resource_interface_info.parent_struct, property_name);
11739   g_assert (info != NULL);
11740   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
11741   if (pspec == NULL)
11742     {
11743       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
11744     }
11745   else
11746     {
11747       if (info->use_gvariant)
11748         g_value_set_variant (&value, variant);
11749       else
11750         g_dbus_gvariant_to_gvalue (variant, &value);
11751       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
11752       g_value_unset (&value);
11753       ret = TRUE;
11754     }
11755   return ret;
11756 }
11757 
11758 static const GDBusInterfaceVTable _shared_resource_skeleton_vtable =
11759 {
11760   _shared_resource_skeleton_handle_method_call,
11761   _shared_resource_skeleton_handle_get_property,
11762   _shared_resource_skeleton_handle_set_property,
11763   {NULL}
11764 };
11765 
11766 static GDBusInterfaceInfo *
11767 shared_resource_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
11768 {
11769   return shared_resource_interface_info ();
11770 }
11771 
11772 static GDBusInterfaceVTable *
11773 shared_resource_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
11774 {
11775   return (GDBusInterfaceVTable *) &_shared_resource_skeleton_vtable;
11776 }
11777 
11778 static GVariant *
11779 shared_resource_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
11780 {
11781   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (_skeleton);
11782 
11783   GVariantBuilder builder;
11784   guint n;
11785   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
11786   if (_shared_resource_interface_info.parent_struct.properties == NULL)
11787     goto out;
11788   for (n = 0; _shared_resource_interface_info.parent_struct.properties[n] != NULL; n++)
11789     {
11790       GDBusPropertyInfo *info = _shared_resource_interface_info.parent_struct.properties[n];
11791       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
11792         {
11793           GVariant *value;
11794           value = _shared_resource_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.openbmc.SharedResource", info->name, NULL, skeleton);
11795           if (value != NULL)
11796             {
11797               g_variant_take_ref (value);
11798               g_variant_builder_add (&builder, "{sv}", info->name, value);
11799               g_variant_unref (value);
11800             }
11801         }
11802     }
11803 out:
11804   return g_variant_builder_end (&builder);
11805 }
11806 
11807 static gboolean _shared_resource_emit_changed (gpointer user_data);
11808 
11809 static void
11810 shared_resource_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
11811 {
11812   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (_skeleton);
11813   gboolean emit_changed = FALSE;
11814 
11815   g_mutex_lock (&skeleton->priv->lock);
11816   if (skeleton->priv->changed_properties_idle_source != NULL)
11817     {
11818       g_source_destroy (skeleton->priv->changed_properties_idle_source);
11819       skeleton->priv->changed_properties_idle_source = NULL;
11820       emit_changed = TRUE;
11821     }
11822   g_mutex_unlock (&skeleton->priv->lock);
11823 
11824   if (emit_changed)
11825     _shared_resource_emit_changed (skeleton);
11826 }
11827 
11828 static void shared_resource_skeleton_iface_init (SharedResourceIface *iface);
11829 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
11830 G_DEFINE_TYPE_WITH_CODE (SharedResourceSkeleton, shared_resource_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
11831                          G_ADD_PRIVATE (SharedResourceSkeleton)
11832                          G_IMPLEMENT_INTERFACE (TYPE_SHARED_RESOURCE, shared_resource_skeleton_iface_init));
11833 
11834 #else
11835 G_DEFINE_TYPE_WITH_CODE (SharedResourceSkeleton, shared_resource_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
11836                          G_IMPLEMENT_INTERFACE (TYPE_SHARED_RESOURCE, shared_resource_skeleton_iface_init));
11837 
11838 #endif
11839 static void
11840 shared_resource_skeleton_finalize (GObject *object)
11841 {
11842   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (object);
11843   guint n;
11844   for (n = 0; n < 2; n++)
11845     g_value_unset (&skeleton->priv->properties[n]);
11846   g_free (skeleton->priv->properties);
11847   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
11848   if (skeleton->priv->changed_properties_idle_source != NULL)
11849     g_source_destroy (skeleton->priv->changed_properties_idle_source);
11850   g_main_context_unref (skeleton->priv->context);
11851   g_mutex_clear (&skeleton->priv->lock);
11852   G_OBJECT_CLASS (shared_resource_skeleton_parent_class)->finalize (object);
11853 }
11854 
11855 static void
11856 shared_resource_skeleton_get_property (GObject      *object,
11857   guint         prop_id,
11858   GValue       *value,
11859   GParamSpec   *pspec G_GNUC_UNUSED)
11860 {
11861   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (object);
11862   g_assert (prop_id != 0 && prop_id - 1 < 2);
11863   g_mutex_lock (&skeleton->priv->lock);
11864   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
11865   g_mutex_unlock (&skeleton->priv->lock);
11866 }
11867 
11868 static gboolean
11869 _shared_resource_emit_changed (gpointer user_data)
11870 {
11871   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (user_data);
11872   GList *l;
11873   GVariantBuilder builder;
11874   GVariantBuilder invalidated_builder;
11875   guint num_changes;
11876 
11877   g_mutex_lock (&skeleton->priv->lock);
11878   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
11879   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
11880   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
11881     {
11882       ChangedProperty *cp = l->data;
11883       GVariant *variant;
11884       const GValue *cur_value;
11885 
11886       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
11887       if (!_g_value_equal (cur_value, &cp->orig_value))
11888         {
11889           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
11890           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
11891           g_variant_unref (variant);
11892           num_changes++;
11893         }
11894     }
11895   if (num_changes > 0)
11896     {
11897       GList *connections, *ll;
11898       GVariant *signal_variant;
11899       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.SharedResource",
11900                                            &builder, &invalidated_builder));
11901       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
11902       for (ll = connections; ll != NULL; ll = ll->next)
11903         {
11904           GDBusConnection *connection = ll->data;
11905 
11906           g_dbus_connection_emit_signal (connection,
11907                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
11908                                          "org.freedesktop.DBus.Properties",
11909                                          "PropertiesChanged",
11910                                          signal_variant,
11911                                          NULL);
11912         }
11913       g_variant_unref (signal_variant);
11914       g_list_free_full (connections, g_object_unref);
11915     }
11916   else
11917     {
11918       g_variant_builder_clear (&builder);
11919       g_variant_builder_clear (&invalidated_builder);
11920     }
11921   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
11922   skeleton->priv->changed_properties = NULL;
11923   skeleton->priv->changed_properties_idle_source = NULL;
11924   g_mutex_unlock (&skeleton->priv->lock);
11925   return FALSE;
11926 }
11927 
11928 static void
11929 _shared_resource_schedule_emit_changed (SharedResourceSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
11930 {
11931   ChangedProperty *cp;
11932   GList *l;
11933   cp = NULL;
11934   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
11935     {
11936       ChangedProperty *i_cp = l->data;
11937       if (i_cp->info == info)
11938         {
11939           cp = i_cp;
11940           break;
11941         }
11942     }
11943   if (cp == NULL)
11944     {
11945       cp = g_new0 (ChangedProperty, 1);
11946       cp->prop_id = prop_id;
11947       cp->info = info;
11948       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
11949       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
11950       g_value_copy (orig_value, &cp->orig_value);
11951     }
11952 }
11953 
11954 static void
11955 shared_resource_skeleton_notify (GObject      *object,
11956   GParamSpec *pspec G_GNUC_UNUSED)
11957 {
11958   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (object);
11959   g_mutex_lock (&skeleton->priv->lock);
11960   if (skeleton->priv->changed_properties != NULL &&
11961       skeleton->priv->changed_properties_idle_source == NULL)
11962     {
11963       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
11964       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
11965       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _shared_resource_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
11966       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
11967       g_source_unref (skeleton->priv->changed_properties_idle_source);
11968     }
11969   g_mutex_unlock (&skeleton->priv->lock);
11970 }
11971 
11972 static void
11973 shared_resource_skeleton_set_property (GObject      *object,
11974   guint         prop_id,
11975   const GValue *value,
11976   GParamSpec   *pspec)
11977 {
11978   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (object);
11979   g_assert (prop_id != 0 && prop_id - 1 < 2);
11980   g_mutex_lock (&skeleton->priv->lock);
11981   g_object_freeze_notify (object);
11982   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
11983     {
11984       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
11985         _shared_resource_schedule_emit_changed (skeleton, _shared_resource_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
11986       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
11987       g_object_notify_by_pspec (object, pspec);
11988     }
11989   g_mutex_unlock (&skeleton->priv->lock);
11990   g_object_thaw_notify (object);
11991 }
11992 
11993 static void
11994 shared_resource_skeleton_init (SharedResourceSkeleton *skeleton)
11995 {
11996 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
11997   skeleton->priv = shared_resource_skeleton_get_instance_private (skeleton);
11998 #else
11999   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_SHARED_RESOURCE_SKELETON, SharedResourceSkeletonPrivate);
12000 #endif
12001 
12002   g_mutex_init (&skeleton->priv->lock);
12003   skeleton->priv->context = g_main_context_ref_thread_default ();
12004   skeleton->priv->properties = g_new0 (GValue, 2);
12005   g_value_init (&skeleton->priv->properties[0], G_TYPE_BOOLEAN);
12006   g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING);
12007 }
12008 
12009 static gboolean
12010 shared_resource_skeleton_get_lock (SharedResource *object)
12011 {
12012   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (object);
12013   gboolean value;
12014   g_mutex_lock (&skeleton->priv->lock);
12015   value = g_value_get_boolean (&(skeleton->priv->properties[0]));
12016   g_mutex_unlock (&skeleton->priv->lock);
12017   return value;
12018 }
12019 
12020 static const gchar *
12021 shared_resource_skeleton_get_name (SharedResource *object)
12022 {
12023   SharedResourceSkeleton *skeleton = SHARED_RESOURCE_SKELETON (object);
12024   const gchar *value;
12025   g_mutex_lock (&skeleton->priv->lock);
12026   value = g_value_get_string (&(skeleton->priv->properties[1]));
12027   g_mutex_unlock (&skeleton->priv->lock);
12028   return value;
12029 }
12030 
12031 static void
12032 shared_resource_skeleton_class_init (SharedResourceSkeletonClass *klass)
12033 {
12034   GObjectClass *gobject_class;
12035   GDBusInterfaceSkeletonClass *skeleton_class;
12036 
12037   gobject_class = G_OBJECT_CLASS (klass);
12038   gobject_class->finalize = shared_resource_skeleton_finalize;
12039   gobject_class->get_property = shared_resource_skeleton_get_property;
12040   gobject_class->set_property = shared_resource_skeleton_set_property;
12041   gobject_class->notify       = shared_resource_skeleton_notify;
12042 
12043 
12044   shared_resource_override_properties (gobject_class, 1);
12045 
12046   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
12047   skeleton_class->get_info = shared_resource_skeleton_dbus_interface_get_info;
12048   skeleton_class->get_properties = shared_resource_skeleton_dbus_interface_get_properties;
12049   skeleton_class->flush = shared_resource_skeleton_dbus_interface_flush;
12050   skeleton_class->get_vtable = shared_resource_skeleton_dbus_interface_get_vtable;
12051 
12052 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
12053   g_type_class_add_private (klass, sizeof (SharedResourceSkeletonPrivate));
12054 #endif
12055 }
12056 
12057 static void
12058 shared_resource_skeleton_iface_init (SharedResourceIface *iface)
12059 {
12060   iface->get_lock = shared_resource_skeleton_get_lock;
12061   iface->get_name = shared_resource_skeleton_get_name;
12062 }
12063 
12064 /**
12065  * shared_resource_skeleton_new:
12066  *
12067  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SharedResource.top_of_page">org.openbmc.SharedResource</link>.
12068  *
12069  * Returns: (transfer full) (type SharedResourceSkeleton): The skeleton object.
12070  */
12071 SharedResource *
12072 shared_resource_skeleton_new (void)
12073 {
12074   return SHARED_RESOURCE (g_object_new (TYPE_SHARED_RESOURCE_SKELETON, NULL));
12075 }
12076 
12077 /* ------------------------------------------------------------------------
12078  * Code for interface org.openbmc.Control
12079  * ------------------------------------------------------------------------
12080  */
12081 
12082 /**
12083  * SECTION:Control
12084  * @title: Control
12085  * @short_description: Generated C code for the org.openbmc.Control D-Bus interface
12086  *
12087  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-Control.top_of_page">org.openbmc.Control</link> D-Bus interface in C.
12088  */
12089 
12090 /* ---- Introspection data for org.openbmc.Control ---- */
12091 
12092 static const _ExtendedGDBusMethodInfo _control_method_info_init =
12093 {
12094   {
12095     -1,
12096     (gchar *) "init",
12097     NULL,
12098     NULL,
12099     NULL
12100   },
12101   "handle-init",
12102   FALSE
12103 };
12104 
12105 static const _ExtendedGDBusMethodInfo * const _control_method_info_pointers[] =
12106 {
12107   &_control_method_info_init,
12108   NULL
12109 };
12110 
12111 static const _ExtendedGDBusArgInfo _control_signal_info_heartbeat_ARG_bus_name =
12112 {
12113   {
12114     -1,
12115     (gchar *) "bus_name",
12116     (gchar *) "s",
12117     NULL
12118   },
12119   FALSE
12120 };
12121 
12122 static const _ExtendedGDBusArgInfo * const _control_signal_info_heartbeat_ARG_pointers[] =
12123 {
12124   &_control_signal_info_heartbeat_ARG_bus_name,
12125   NULL
12126 };
12127 
12128 static const _ExtendedGDBusSignalInfo _control_signal_info_heartbeat =
12129 {
12130   {
12131     -1,
12132     (gchar *) "Heartbeat",
12133     (GDBusArgInfo **) &_control_signal_info_heartbeat_ARG_pointers,
12134     NULL
12135   },
12136   "heartbeat"
12137 };
12138 
12139 static const _ExtendedGDBusArgInfo _control_signal_info_goto_system_state_ARG_state_name =
12140 {
12141   {
12142     -1,
12143     (gchar *) "state_name",
12144     (gchar *) "s",
12145     NULL
12146   },
12147   FALSE
12148 };
12149 
12150 static const _ExtendedGDBusArgInfo * const _control_signal_info_goto_system_state_ARG_pointers[] =
12151 {
12152   &_control_signal_info_goto_system_state_ARG_state_name,
12153   NULL
12154 };
12155 
12156 static const _ExtendedGDBusSignalInfo _control_signal_info_goto_system_state =
12157 {
12158   {
12159     -1,
12160     (gchar *) "GotoSystemState",
12161     (GDBusArgInfo **) &_control_signal_info_goto_system_state_ARG_pointers,
12162     NULL
12163   },
12164   "goto-system-state"
12165 };
12166 
12167 static const _ExtendedGDBusSignalInfo _control_signal_info_started =
12168 {
12169   {
12170     -1,
12171     (gchar *) "Started",
12172     NULL,
12173     NULL
12174   },
12175   "started"
12176 };
12177 
12178 static const _ExtendedGDBusSignalInfo * const _control_signal_info_pointers[] =
12179 {
12180   &_control_signal_info_heartbeat,
12181   &_control_signal_info_goto_system_state,
12182   &_control_signal_info_started,
12183   NULL
12184 };
12185 
12186 static const _ExtendedGDBusPropertyInfo _control_property_info_poll_interval =
12187 {
12188   {
12189     -1,
12190     (gchar *) "poll_interval",
12191     (gchar *) "i",
12192     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
12193     NULL
12194   },
12195   "poll-interval",
12196   FALSE
12197 };
12198 
12199 static const _ExtendedGDBusPropertyInfo _control_property_info_heatbeat =
12200 {
12201   {
12202     -1,
12203     (gchar *) "heatbeat",
12204     (gchar *) "i",
12205     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
12206     NULL
12207   },
12208   "heatbeat",
12209   FALSE
12210 };
12211 
12212 static const _ExtendedGDBusPropertyInfo * const _control_property_info_pointers[] =
12213 {
12214   &_control_property_info_poll_interval,
12215   &_control_property_info_heatbeat,
12216   NULL
12217 };
12218 
12219 static const _ExtendedGDBusInterfaceInfo _control_interface_info =
12220 {
12221   {
12222     -1,
12223     (gchar *) "org.openbmc.Control",
12224     (GDBusMethodInfo **) &_control_method_info_pointers,
12225     (GDBusSignalInfo **) &_control_signal_info_pointers,
12226     (GDBusPropertyInfo **) &_control_property_info_pointers,
12227     NULL
12228   },
12229   "control",
12230 };
12231 
12232 
12233 /**
12234  * control_interface_info:
12235  *
12236  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-Control.top_of_page">org.openbmc.Control</link> D-Bus interface.
12237  *
12238  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
12239  */
12240 GDBusInterfaceInfo *
12241 control_interface_info (void)
12242 {
12243   return (GDBusInterfaceInfo *) &_control_interface_info.parent_struct;
12244 }
12245 
12246 /**
12247  * control_override_properties:
12248  * @klass: The class structure for a #GObject<!-- -->-derived class.
12249  * @property_id_begin: The property id to assign to the first overridden property.
12250  *
12251  * Overrides all #GObject properties in the #Control interface for a concrete class.
12252  * The properties are overridden in the order they are defined.
12253  *
12254  * Returns: The last property id.
12255  */
12256 guint
12257 control_override_properties (GObjectClass *klass, guint property_id_begin)
12258 {
12259   g_object_class_override_property (klass, property_id_begin++, "poll-interval");
12260   g_object_class_override_property (klass, property_id_begin++, "heatbeat");
12261   return property_id_begin - 1;
12262 }
12263 
12264 
12265 
12266 /**
12267  * Control:
12268  *
12269  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Control.top_of_page">org.openbmc.Control</link>.
12270  */
12271 
12272 /**
12273  * ControlIface:
12274  * @parent_iface: The parent interface.
12275  * @handle_init: Handler for the #Control::handle-init signal.
12276  * @get_heatbeat: Getter for the #Control:heatbeat property.
12277  * @get_poll_interval: Getter for the #Control:poll-interval property.
12278  * @goto_system_state: Handler for the #Control::goto-system-state signal.
12279  * @heartbeat: Handler for the #Control::heartbeat signal.
12280  * @started: Handler for the #Control::started signal.
12281  *
12282  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Control.top_of_page">org.openbmc.Control</link>.
12283  */
12284 
12285 typedef ControlIface ControlInterface;
12286 G_DEFINE_INTERFACE (Control, control, G_TYPE_OBJECT);
12287 
12288 static void
12289 control_default_init (ControlIface *iface)
12290 {
12291   /* GObject signals for incoming D-Bus method calls: */
12292   /**
12293    * Control::handle-init:
12294    * @object: A #Control.
12295    * @invocation: A #GDBusMethodInvocation.
12296    *
12297    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Control.init">init()</link> D-Bus method.
12298    *
12299    * 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 control_complete_init() 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.
12300    *
12301    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
12302    */
12303   g_signal_new ("handle-init",
12304     G_TYPE_FROM_INTERFACE (iface),
12305     G_SIGNAL_RUN_LAST,
12306     G_STRUCT_OFFSET (ControlIface, handle_init),
12307     g_signal_accumulator_true_handled,
12308     NULL,
12309     g_cclosure_marshal_generic,
12310     G_TYPE_BOOLEAN,
12311     1,
12312     G_TYPE_DBUS_METHOD_INVOCATION);
12313 
12314   /* GObject signals for received D-Bus signals: */
12315   /**
12316    * Control::heartbeat:
12317    * @object: A #Control.
12318    * @arg_bus_name: Argument.
12319    *
12320    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Control.Heartbeat">"Heartbeat"</link> is received.
12321    *
12322    * 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.
12323    */
12324   g_signal_new ("heartbeat",
12325     G_TYPE_FROM_INTERFACE (iface),
12326     G_SIGNAL_RUN_LAST,
12327     G_STRUCT_OFFSET (ControlIface, heartbeat),
12328     NULL,
12329     NULL,
12330     g_cclosure_marshal_generic,
12331     G_TYPE_NONE,
12332     1, G_TYPE_STRING);
12333 
12334   /**
12335    * Control::goto-system-state:
12336    * @object: A #Control.
12337    * @arg_state_name: Argument.
12338    *
12339    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Control.GotoSystemState">"GotoSystemState"</link> is received.
12340    *
12341    * 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.
12342    */
12343   g_signal_new ("goto-system-state",
12344     G_TYPE_FROM_INTERFACE (iface),
12345     G_SIGNAL_RUN_LAST,
12346     G_STRUCT_OFFSET (ControlIface, goto_system_state),
12347     NULL,
12348     NULL,
12349     g_cclosure_marshal_generic,
12350     G_TYPE_NONE,
12351     1, G_TYPE_STRING);
12352 
12353   /**
12354    * Control::started:
12355    * @object: A #Control.
12356    *
12357    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Control.Started">"Started"</link> is received.
12358    *
12359    * 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.
12360    */
12361   g_signal_new ("started",
12362     G_TYPE_FROM_INTERFACE (iface),
12363     G_SIGNAL_RUN_LAST,
12364     G_STRUCT_OFFSET (ControlIface, started),
12365     NULL,
12366     NULL,
12367     g_cclosure_marshal_generic,
12368     G_TYPE_NONE,
12369     0);
12370 
12371   /* GObject properties for D-Bus properties: */
12372   /**
12373    * Control:poll-interval:
12374    *
12375    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Control.poll_interval">"poll_interval"</link>.
12376    *
12377    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
12378    */
12379   g_object_interface_install_property (iface,
12380     g_param_spec_int ("poll-interval", "poll_interval", "poll_interval", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
12381   /**
12382    * Control:heatbeat:
12383    *
12384    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Control.heatbeat">"heatbeat"</link>.
12385    *
12386    * 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.
12387    */
12388   g_object_interface_install_property (iface,
12389     g_param_spec_int ("heatbeat", "heatbeat", "heatbeat", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
12390 }
12391 
12392 /**
12393  * control_get_poll_interval: (skip)
12394  * @object: A #Control.
12395  *
12396  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Control.poll_interval">"poll_interval"</link> D-Bus property.
12397  *
12398  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
12399  *
12400  * Returns: The property value.
12401  */
12402 gint
12403 control_get_poll_interval (Control *object)
12404 {
12405   return CONTROL_GET_IFACE (object)->get_poll_interval (object);
12406 }
12407 
12408 /**
12409  * control_set_poll_interval: (skip)
12410  * @object: A #Control.
12411  * @value: The value to set.
12412  *
12413  * Sets the <link linkend="gdbus-property-org-openbmc-Control.poll_interval">"poll_interval"</link> D-Bus property to @value.
12414  *
12415  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
12416  */
12417 void
12418 control_set_poll_interval (Control *object, gint value)
12419 {
12420   g_object_set (G_OBJECT (object), "poll-interval", value, NULL);
12421 }
12422 
12423 /**
12424  * control_get_heatbeat: (skip)
12425  * @object: A #Control.
12426  *
12427  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Control.heatbeat">"heatbeat"</link> D-Bus property.
12428  *
12429  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
12430  *
12431  * Returns: The property value.
12432  */
12433 gint
12434 control_get_heatbeat (Control *object)
12435 {
12436   return CONTROL_GET_IFACE (object)->get_heatbeat (object);
12437 }
12438 
12439 /**
12440  * control_set_heatbeat: (skip)
12441  * @object: A #Control.
12442  * @value: The value to set.
12443  *
12444  * Sets the <link linkend="gdbus-property-org-openbmc-Control.heatbeat">"heatbeat"</link> D-Bus property to @value.
12445  *
12446  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
12447  */
12448 void
12449 control_set_heatbeat (Control *object, gint value)
12450 {
12451   g_object_set (G_OBJECT (object), "heatbeat", value, NULL);
12452 }
12453 
12454 /**
12455  * control_emit_heartbeat:
12456  * @object: A #Control.
12457  * @arg_bus_name: Argument to pass with the signal.
12458  *
12459  * Emits the <link linkend="gdbus-signal-org-openbmc-Control.Heartbeat">"Heartbeat"</link> D-Bus signal.
12460  */
12461 void
12462 control_emit_heartbeat (
12463     Control *object,
12464     const gchar *arg_bus_name)
12465 {
12466   g_signal_emit_by_name (object, "heartbeat", arg_bus_name);
12467 }
12468 
12469 /**
12470  * control_emit_goto_system_state:
12471  * @object: A #Control.
12472  * @arg_state_name: Argument to pass with the signal.
12473  *
12474  * Emits the <link linkend="gdbus-signal-org-openbmc-Control.GotoSystemState">"GotoSystemState"</link> D-Bus signal.
12475  */
12476 void
12477 control_emit_goto_system_state (
12478     Control *object,
12479     const gchar *arg_state_name)
12480 {
12481   g_signal_emit_by_name (object, "goto-system-state", arg_state_name);
12482 }
12483 
12484 /**
12485  * control_emit_started:
12486  * @object: A #Control.
12487  *
12488  * Emits the <link linkend="gdbus-signal-org-openbmc-Control.Started">"Started"</link> D-Bus signal.
12489  */
12490 void
12491 control_emit_started (
12492     Control *object)
12493 {
12494   g_signal_emit_by_name (object, "started");
12495 }
12496 
12497 /**
12498  * control_call_init:
12499  * @proxy: A #ControlProxy.
12500  * @cancellable: (allow-none): A #GCancellable or %NULL.
12501  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
12502  * @user_data: User data to pass to @callback.
12503  *
12504  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Control.init">init()</link> D-Bus method on @proxy.
12505  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
12506  * You can then call control_call_init_finish() to get the result of the operation.
12507  *
12508  * See control_call_init_sync() for the synchronous, blocking version of this method.
12509  */
12510 void
12511 control_call_init (
12512     Control *proxy,
12513     GCancellable *cancellable,
12514     GAsyncReadyCallback callback,
12515     gpointer user_data)
12516 {
12517   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
12518     "init",
12519     g_variant_new ("()"),
12520     G_DBUS_CALL_FLAGS_NONE,
12521     -1,
12522     cancellable,
12523     callback,
12524     user_data);
12525 }
12526 
12527 /**
12528  * control_call_init_finish:
12529  * @proxy: A #ControlProxy.
12530  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_call_init().
12531  * @error: Return location for error or %NULL.
12532  *
12533  * Finishes an operation started with control_call_init().
12534  *
12535  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
12536  */
12537 gboolean
12538 control_call_init_finish (
12539     Control *proxy,
12540     GAsyncResult *res,
12541     GError **error)
12542 {
12543   GVariant *_ret;
12544   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
12545   if (_ret == NULL)
12546     goto _out;
12547   g_variant_get (_ret,
12548                  "()");
12549   g_variant_unref (_ret);
12550 _out:
12551   return _ret != NULL;
12552 }
12553 
12554 /**
12555  * control_call_init_sync:
12556  * @proxy: A #ControlProxy.
12557  * @cancellable: (allow-none): A #GCancellable or %NULL.
12558  * @error: Return location for error or %NULL.
12559  *
12560  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Control.init">init()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
12561  *
12562  * See control_call_init() for the asynchronous version of this method.
12563  *
12564  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
12565  */
12566 gboolean
12567 control_call_init_sync (
12568     Control *proxy,
12569     GCancellable *cancellable,
12570     GError **error)
12571 {
12572   GVariant *_ret;
12573   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
12574     "init",
12575     g_variant_new ("()"),
12576     G_DBUS_CALL_FLAGS_NONE,
12577     -1,
12578     cancellable,
12579     error);
12580   if (_ret == NULL)
12581     goto _out;
12582   g_variant_get (_ret,
12583                  "()");
12584   g_variant_unref (_ret);
12585 _out:
12586   return _ret != NULL;
12587 }
12588 
12589 /**
12590  * control_complete_init:
12591  * @object: A #Control.
12592  * @invocation: (transfer full): A #GDBusMethodInvocation.
12593  *
12594  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Control.init">init()</link> 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.
12595  *
12596  * This method will free @invocation, you cannot use it afterwards.
12597  */
12598 void
12599 control_complete_init (
12600     Control *object,
12601     GDBusMethodInvocation *invocation)
12602 {
12603   g_dbus_method_invocation_return_value (invocation,
12604     g_variant_new ("()"));
12605 }
12606 
12607 /* ------------------------------------------------------------------------ */
12608 
12609 /**
12610  * ControlProxy:
12611  *
12612  * The #ControlProxy structure contains only private data and should only be accessed using the provided API.
12613  */
12614 
12615 /**
12616  * ControlProxyClass:
12617  * @parent_class: The parent class.
12618  *
12619  * Class structure for #ControlProxy.
12620  */
12621 
12622 struct _ControlProxyPrivate
12623 {
12624   GData *qdata;
12625 };
12626 
12627 static void control_proxy_iface_init (ControlIface *iface);
12628 
12629 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
12630 G_DEFINE_TYPE_WITH_CODE (ControlProxy, control_proxy, G_TYPE_DBUS_PROXY,
12631                          G_ADD_PRIVATE (ControlProxy)
12632                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL, control_proxy_iface_init));
12633 
12634 #else
12635 G_DEFINE_TYPE_WITH_CODE (ControlProxy, control_proxy, G_TYPE_DBUS_PROXY,
12636                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL, control_proxy_iface_init));
12637 
12638 #endif
12639 static void
12640 control_proxy_finalize (GObject *object)
12641 {
12642   ControlProxy *proxy = CONTROL_PROXY (object);
12643   g_datalist_clear (&proxy->priv->qdata);
12644   G_OBJECT_CLASS (control_proxy_parent_class)->finalize (object);
12645 }
12646 
12647 static void
12648 control_proxy_get_property (GObject      *object,
12649   guint         prop_id,
12650   GValue       *value,
12651   GParamSpec   *pspec G_GNUC_UNUSED)
12652 {
12653   const _ExtendedGDBusPropertyInfo *info;
12654   GVariant *variant;
12655   g_assert (prop_id != 0 && prop_id - 1 < 2);
12656   info = _control_property_info_pointers[prop_id - 1];
12657   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
12658   if (info->use_gvariant)
12659     {
12660       g_value_set_variant (value, variant);
12661     }
12662   else
12663     {
12664       if (variant != NULL)
12665         g_dbus_gvariant_to_gvalue (variant, value);
12666     }
12667   if (variant != NULL)
12668     g_variant_unref (variant);
12669 }
12670 
12671 static void
12672 control_proxy_set_property_cb (GDBusProxy *proxy,
12673   GAsyncResult *res,
12674   gpointer      user_data)
12675 {
12676   const _ExtendedGDBusPropertyInfo *info = user_data;
12677   GError *error;
12678   GVariant *_ret;
12679   error = NULL;
12680   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
12681   if (!_ret)
12682     {
12683       g_warning ("Error setting property '%s' on interface org.openbmc.Control: %s (%s, %d)",
12684                  info->parent_struct.name,
12685                  error->message, g_quark_to_string (error->domain), error->code);
12686       g_error_free (error);
12687     }
12688   else
12689     {
12690       g_variant_unref (_ret);
12691     }
12692 }
12693 
12694 static void
12695 control_proxy_set_property (GObject      *object,
12696   guint         prop_id,
12697   const GValue *value,
12698   GParamSpec   *pspec G_GNUC_UNUSED)
12699 {
12700   const _ExtendedGDBusPropertyInfo *info;
12701   GVariant *variant;
12702   g_assert (prop_id != 0 && prop_id - 1 < 2);
12703   info = _control_property_info_pointers[prop_id - 1];
12704   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
12705   g_dbus_proxy_call (G_DBUS_PROXY (object),
12706     "org.freedesktop.DBus.Properties.Set",
12707     g_variant_new ("(ssv)", "org.openbmc.Control", info->parent_struct.name, variant),
12708     G_DBUS_CALL_FLAGS_NONE,
12709     -1,
12710     NULL, (GAsyncReadyCallback) control_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
12711   g_variant_unref (variant);
12712 }
12713 
12714 static void
12715 control_proxy_g_signal (GDBusProxy *proxy,
12716   const gchar *sender_name G_GNUC_UNUSED,
12717   const gchar *signal_name,
12718   GVariant *parameters)
12719 {
12720   _ExtendedGDBusSignalInfo *info;
12721   GVariantIter iter;
12722   GVariant *child;
12723   GValue *paramv;
12724   guint num_params;
12725   guint n;
12726   guint signal_id;
12727   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_control_interface_info.parent_struct, signal_name);
12728   if (info == NULL)
12729     return;
12730   num_params = g_variant_n_children (parameters);
12731   paramv = g_new0 (GValue, num_params + 1);
12732   g_value_init (&paramv[0], TYPE_CONTROL);
12733   g_value_set_object (&paramv[0], proxy);
12734   g_variant_iter_init (&iter, parameters);
12735   n = 1;
12736   while ((child = g_variant_iter_next_value (&iter)) != NULL)
12737     {
12738       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
12739       if (arg_info->use_gvariant)
12740         {
12741           g_value_init (&paramv[n], G_TYPE_VARIANT);
12742           g_value_set_variant (&paramv[n], child);
12743           n++;
12744         }
12745       else
12746         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
12747       g_variant_unref (child);
12748     }
12749   signal_id = g_signal_lookup (info->signal_name, TYPE_CONTROL);
12750   g_signal_emitv (paramv, signal_id, 0, NULL);
12751   for (n = 0; n < num_params + 1; n++)
12752     g_value_unset (&paramv[n]);
12753   g_free (paramv);
12754 }
12755 
12756 static void
12757 control_proxy_g_properties_changed (GDBusProxy *_proxy,
12758   GVariant *changed_properties,
12759   const gchar *const *invalidated_properties)
12760 {
12761   ControlProxy *proxy = CONTROL_PROXY (_proxy);
12762   guint n;
12763   const gchar *key;
12764   GVariantIter *iter;
12765   _ExtendedGDBusPropertyInfo *info;
12766   g_variant_get (changed_properties, "a{sv}", &iter);
12767   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
12768     {
12769       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_interface_info.parent_struct, key);
12770       g_datalist_remove_data (&proxy->priv->qdata, key);
12771       if (info != NULL)
12772         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
12773     }
12774   g_variant_iter_free (iter);
12775   for (n = 0; invalidated_properties[n] != NULL; n++)
12776     {
12777       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_interface_info.parent_struct, invalidated_properties[n]);
12778       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
12779       if (info != NULL)
12780         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
12781     }
12782 }
12783 
12784 static gint
12785 control_proxy_get_poll_interval (Control *object)
12786 {
12787   ControlProxy *proxy = CONTROL_PROXY (object);
12788   GVariant *variant;
12789   gint value = 0;
12790   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "poll_interval");
12791   if (variant != NULL)
12792     {
12793       value = g_variant_get_int32 (variant);
12794       g_variant_unref (variant);
12795     }
12796   return value;
12797 }
12798 
12799 static gint
12800 control_proxy_get_heatbeat (Control *object)
12801 {
12802   ControlProxy *proxy = CONTROL_PROXY (object);
12803   GVariant *variant;
12804   gint value = 0;
12805   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "heatbeat");
12806   if (variant != NULL)
12807     {
12808       value = g_variant_get_int32 (variant);
12809       g_variant_unref (variant);
12810     }
12811   return value;
12812 }
12813 
12814 static void
12815 control_proxy_init (ControlProxy *proxy)
12816 {
12817 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
12818   proxy->priv = control_proxy_get_instance_private (proxy);
12819 #else
12820   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_CONTROL_PROXY, ControlProxyPrivate);
12821 #endif
12822 
12823   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), control_interface_info ());
12824 }
12825 
12826 static void
12827 control_proxy_class_init (ControlProxyClass *klass)
12828 {
12829   GObjectClass *gobject_class;
12830   GDBusProxyClass *proxy_class;
12831 
12832   gobject_class = G_OBJECT_CLASS (klass);
12833   gobject_class->finalize     = control_proxy_finalize;
12834   gobject_class->get_property = control_proxy_get_property;
12835   gobject_class->set_property = control_proxy_set_property;
12836 
12837   proxy_class = G_DBUS_PROXY_CLASS (klass);
12838   proxy_class->g_signal = control_proxy_g_signal;
12839   proxy_class->g_properties_changed = control_proxy_g_properties_changed;
12840 
12841   control_override_properties (gobject_class, 1);
12842 
12843 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
12844   g_type_class_add_private (klass, sizeof (ControlProxyPrivate));
12845 #endif
12846 }
12847 
12848 static void
12849 control_proxy_iface_init (ControlIface *iface)
12850 {
12851   iface->get_poll_interval = control_proxy_get_poll_interval;
12852   iface->get_heatbeat = control_proxy_get_heatbeat;
12853 }
12854 
12855 /**
12856  * control_proxy_new:
12857  * @connection: A #GDBusConnection.
12858  * @flags: Flags from the #GDBusProxyFlags enumeration.
12859  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
12860  * @object_path: An object path.
12861  * @cancellable: (allow-none): A #GCancellable or %NULL.
12862  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
12863  * @user_data: User data to pass to @callback.
12864  *
12865  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Control.top_of_page">org.openbmc.Control</link>. See g_dbus_proxy_new() for more details.
12866  *
12867  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
12868  * You can then call control_proxy_new_finish() to get the result of the operation.
12869  *
12870  * See control_proxy_new_sync() for the synchronous, blocking version of this constructor.
12871  */
12872 void
12873 control_proxy_new (
12874     GDBusConnection     *connection,
12875     GDBusProxyFlags      flags,
12876     const gchar         *name,
12877     const gchar         *object_path,
12878     GCancellable        *cancellable,
12879     GAsyncReadyCallback  callback,
12880     gpointer             user_data)
12881 {
12882   g_async_initable_new_async (TYPE_CONTROL_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.openbmc.Control", NULL);
12883 }
12884 
12885 /**
12886  * control_proxy_new_finish:
12887  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_proxy_new().
12888  * @error: Return location for error or %NULL
12889  *
12890  * Finishes an operation started with control_proxy_new().
12891  *
12892  * Returns: (transfer full) (type ControlProxy): The constructed proxy object or %NULL if @error is set.
12893  */
12894 Control *
12895 control_proxy_new_finish (
12896     GAsyncResult        *res,
12897     GError             **error)
12898 {
12899   GObject *ret;
12900   GObject *source_object;
12901   source_object = g_async_result_get_source_object (res);
12902   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
12903   g_object_unref (source_object);
12904   if (ret != NULL)
12905     return CONTROL (ret);
12906   else
12907     return NULL;
12908 }
12909 
12910 /**
12911  * control_proxy_new_sync:
12912  * @connection: A #GDBusConnection.
12913  * @flags: Flags from the #GDBusProxyFlags enumeration.
12914  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
12915  * @object_path: An object path.
12916  * @cancellable: (allow-none): A #GCancellable or %NULL.
12917  * @error: Return location for error or %NULL
12918  *
12919  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Control.top_of_page">org.openbmc.Control</link>. See g_dbus_proxy_new_sync() for more details.
12920  *
12921  * The calling thread is blocked until a reply is received.
12922  *
12923  * See control_proxy_new() for the asynchronous version of this constructor.
12924  *
12925  * Returns: (transfer full) (type ControlProxy): The constructed proxy object or %NULL if @error is set.
12926  */
12927 Control *
12928 control_proxy_new_sync (
12929     GDBusConnection     *connection,
12930     GDBusProxyFlags      flags,
12931     const gchar         *name,
12932     const gchar         *object_path,
12933     GCancellable        *cancellable,
12934     GError             **error)
12935 {
12936   GInitable *ret;
12937   ret = g_initable_new (TYPE_CONTROL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.Control", NULL);
12938   if (ret != NULL)
12939     return CONTROL (ret);
12940   else
12941     return NULL;
12942 }
12943 
12944 
12945 /**
12946  * control_proxy_new_for_bus:
12947  * @bus_type: A #GBusType.
12948  * @flags: Flags from the #GDBusProxyFlags enumeration.
12949  * @name: A bus name (well-known or unique).
12950  * @object_path: An object path.
12951  * @cancellable: (allow-none): A #GCancellable or %NULL.
12952  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
12953  * @user_data: User data to pass to @callback.
12954  *
12955  * Like control_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
12956  *
12957  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
12958  * You can then call control_proxy_new_for_bus_finish() to get the result of the operation.
12959  *
12960  * See control_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
12961  */
12962 void
12963 control_proxy_new_for_bus (
12964     GBusType             bus_type,
12965     GDBusProxyFlags      flags,
12966     const gchar         *name,
12967     const gchar         *object_path,
12968     GCancellable        *cancellable,
12969     GAsyncReadyCallback  callback,
12970     gpointer             user_data)
12971 {
12972   g_async_initable_new_async (TYPE_CONTROL_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.openbmc.Control", NULL);
12973 }
12974 
12975 /**
12976  * control_proxy_new_for_bus_finish:
12977  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_proxy_new_for_bus().
12978  * @error: Return location for error or %NULL
12979  *
12980  * Finishes an operation started with control_proxy_new_for_bus().
12981  *
12982  * Returns: (transfer full) (type ControlProxy): The constructed proxy object or %NULL if @error is set.
12983  */
12984 Control *
12985 control_proxy_new_for_bus_finish (
12986     GAsyncResult        *res,
12987     GError             **error)
12988 {
12989   GObject *ret;
12990   GObject *source_object;
12991   source_object = g_async_result_get_source_object (res);
12992   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
12993   g_object_unref (source_object);
12994   if (ret != NULL)
12995     return CONTROL (ret);
12996   else
12997     return NULL;
12998 }
12999 
13000 /**
13001  * control_proxy_new_for_bus_sync:
13002  * @bus_type: A #GBusType.
13003  * @flags: Flags from the #GDBusProxyFlags enumeration.
13004  * @name: A bus name (well-known or unique).
13005  * @object_path: An object path.
13006  * @cancellable: (allow-none): A #GCancellable or %NULL.
13007  * @error: Return location for error or %NULL
13008  *
13009  * Like control_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
13010  *
13011  * The calling thread is blocked until a reply is received.
13012  *
13013  * See control_proxy_new_for_bus() for the asynchronous version of this constructor.
13014  *
13015  * Returns: (transfer full) (type ControlProxy): The constructed proxy object or %NULL if @error is set.
13016  */
13017 Control *
13018 control_proxy_new_for_bus_sync (
13019     GBusType             bus_type,
13020     GDBusProxyFlags      flags,
13021     const gchar         *name,
13022     const gchar         *object_path,
13023     GCancellable        *cancellable,
13024     GError             **error)
13025 {
13026   GInitable *ret;
13027   ret = g_initable_new (TYPE_CONTROL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.Control", NULL);
13028   if (ret != NULL)
13029     return CONTROL (ret);
13030   else
13031     return NULL;
13032 }
13033 
13034 
13035 /* ------------------------------------------------------------------------ */
13036 
13037 /**
13038  * ControlSkeleton:
13039  *
13040  * The #ControlSkeleton structure contains only private data and should only be accessed using the provided API.
13041  */
13042 
13043 /**
13044  * ControlSkeletonClass:
13045  * @parent_class: The parent class.
13046  *
13047  * Class structure for #ControlSkeleton.
13048  */
13049 
13050 struct _ControlSkeletonPrivate
13051 {
13052   GValue *properties;
13053   GList *changed_properties;
13054   GSource *changed_properties_idle_source;
13055   GMainContext *context;
13056   GMutex lock;
13057 };
13058 
13059 static void
13060 _control_skeleton_handle_method_call (
13061   GDBusConnection *connection G_GNUC_UNUSED,
13062   const gchar *sender G_GNUC_UNUSED,
13063   const gchar *object_path G_GNUC_UNUSED,
13064   const gchar *interface_name,
13065   const gchar *method_name,
13066   GVariant *parameters,
13067   GDBusMethodInvocation *invocation,
13068   gpointer user_data)
13069 {
13070   ControlSkeleton *skeleton = CONTROL_SKELETON (user_data);
13071   _ExtendedGDBusMethodInfo *info;
13072   GVariantIter iter;
13073   GVariant *child;
13074   GValue *paramv;
13075   guint num_params;
13076   guint num_extra;
13077   guint n;
13078   guint signal_id;
13079   GValue return_value = G_VALUE_INIT;
13080   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
13081   g_assert (info != NULL);
13082   num_params = g_variant_n_children (parameters);
13083   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
13084   n = 0;
13085   g_value_init (&paramv[n], TYPE_CONTROL);
13086   g_value_set_object (&paramv[n++], skeleton);
13087   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
13088   g_value_set_object (&paramv[n++], invocation);
13089   if (info->pass_fdlist)
13090     {
13091 #ifdef G_OS_UNIX
13092       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
13093       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
13094 #else
13095       g_assert_not_reached ();
13096 #endif
13097     }
13098   g_variant_iter_init (&iter, parameters);
13099   while ((child = g_variant_iter_next_value (&iter)) != NULL)
13100     {
13101       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
13102       if (arg_info->use_gvariant)
13103         {
13104           g_value_init (&paramv[n], G_TYPE_VARIANT);
13105           g_value_set_variant (&paramv[n], child);
13106           n++;
13107         }
13108       else
13109         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
13110       g_variant_unref (child);
13111     }
13112   signal_id = g_signal_lookup (info->signal_name, TYPE_CONTROL);
13113   g_value_init (&return_value, G_TYPE_BOOLEAN);
13114   g_signal_emitv (paramv, signal_id, 0, &return_value);
13115   if (!g_value_get_boolean (&return_value))
13116     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);
13117   g_value_unset (&return_value);
13118   for (n = 0; n < num_params + num_extra; n++)
13119     g_value_unset (&paramv[n]);
13120   g_free (paramv);
13121 }
13122 
13123 static GVariant *
13124 _control_skeleton_handle_get_property (
13125   GDBusConnection *connection G_GNUC_UNUSED,
13126   const gchar *sender G_GNUC_UNUSED,
13127   const gchar *object_path G_GNUC_UNUSED,
13128   const gchar *interface_name G_GNUC_UNUSED,
13129   const gchar *property_name,
13130   GError **error,
13131   gpointer user_data)
13132 {
13133   ControlSkeleton *skeleton = CONTROL_SKELETON (user_data);
13134   GValue value = G_VALUE_INIT;
13135   GParamSpec *pspec;
13136   _ExtendedGDBusPropertyInfo *info;
13137   GVariant *ret;
13138   ret = NULL;
13139   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_interface_info.parent_struct, property_name);
13140   g_assert (info != NULL);
13141   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
13142   if (pspec == NULL)
13143     {
13144       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
13145     }
13146   else
13147     {
13148       g_value_init (&value, pspec->value_type);
13149       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
13150       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
13151       g_value_unset (&value);
13152     }
13153   return ret;
13154 }
13155 
13156 static gboolean
13157 _control_skeleton_handle_set_property (
13158   GDBusConnection *connection G_GNUC_UNUSED,
13159   const gchar *sender G_GNUC_UNUSED,
13160   const gchar *object_path G_GNUC_UNUSED,
13161   const gchar *interface_name G_GNUC_UNUSED,
13162   const gchar *property_name,
13163   GVariant *variant,
13164   GError **error,
13165   gpointer user_data)
13166 {
13167   ControlSkeleton *skeleton = CONTROL_SKELETON (user_data);
13168   GValue value = G_VALUE_INIT;
13169   GParamSpec *pspec;
13170   _ExtendedGDBusPropertyInfo *info;
13171   gboolean ret;
13172   ret = FALSE;
13173   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_interface_info.parent_struct, property_name);
13174   g_assert (info != NULL);
13175   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
13176   if (pspec == NULL)
13177     {
13178       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
13179     }
13180   else
13181     {
13182       if (info->use_gvariant)
13183         g_value_set_variant (&value, variant);
13184       else
13185         g_dbus_gvariant_to_gvalue (variant, &value);
13186       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
13187       g_value_unset (&value);
13188       ret = TRUE;
13189     }
13190   return ret;
13191 }
13192 
13193 static const GDBusInterfaceVTable _control_skeleton_vtable =
13194 {
13195   _control_skeleton_handle_method_call,
13196   _control_skeleton_handle_get_property,
13197   _control_skeleton_handle_set_property,
13198   {NULL}
13199 };
13200 
13201 static GDBusInterfaceInfo *
13202 control_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
13203 {
13204   return control_interface_info ();
13205 }
13206 
13207 static GDBusInterfaceVTable *
13208 control_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
13209 {
13210   return (GDBusInterfaceVTable *) &_control_skeleton_vtable;
13211 }
13212 
13213 static GVariant *
13214 control_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
13215 {
13216   ControlSkeleton *skeleton = CONTROL_SKELETON (_skeleton);
13217 
13218   GVariantBuilder builder;
13219   guint n;
13220   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
13221   if (_control_interface_info.parent_struct.properties == NULL)
13222     goto out;
13223   for (n = 0; _control_interface_info.parent_struct.properties[n] != NULL; n++)
13224     {
13225       GDBusPropertyInfo *info = _control_interface_info.parent_struct.properties[n];
13226       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
13227         {
13228           GVariant *value;
13229           value = _control_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.openbmc.Control", info->name, NULL, skeleton);
13230           if (value != NULL)
13231             {
13232               g_variant_take_ref (value);
13233               g_variant_builder_add (&builder, "{sv}", info->name, value);
13234               g_variant_unref (value);
13235             }
13236         }
13237     }
13238 out:
13239   return g_variant_builder_end (&builder);
13240 }
13241 
13242 static gboolean _control_emit_changed (gpointer user_data);
13243 
13244 static void
13245 control_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
13246 {
13247   ControlSkeleton *skeleton = CONTROL_SKELETON (_skeleton);
13248   gboolean emit_changed = FALSE;
13249 
13250   g_mutex_lock (&skeleton->priv->lock);
13251   if (skeleton->priv->changed_properties_idle_source != NULL)
13252     {
13253       g_source_destroy (skeleton->priv->changed_properties_idle_source);
13254       skeleton->priv->changed_properties_idle_source = NULL;
13255       emit_changed = TRUE;
13256     }
13257   g_mutex_unlock (&skeleton->priv->lock);
13258 
13259   if (emit_changed)
13260     _control_emit_changed (skeleton);
13261 }
13262 
13263 static void
13264 _control_on_signal_heartbeat (
13265     Control *object,
13266     const gchar *arg_bus_name)
13267 {
13268   ControlSkeleton *skeleton = CONTROL_SKELETON (object);
13269 
13270   GList      *connections, *l;
13271   GVariant   *signal_variant;
13272   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
13273 
13274   signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
13275                    arg_bus_name));
13276   for (l = connections; l != NULL; l = l->next)
13277     {
13278       GDBusConnection *connection = l->data;
13279       g_dbus_connection_emit_signal (connection,
13280         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Control", "Heartbeat",
13281         signal_variant, NULL);
13282     }
13283   g_variant_unref (signal_variant);
13284   g_list_free_full (connections, g_object_unref);
13285 }
13286 
13287 static void
13288 _control_on_signal_goto_system_state (
13289     Control *object,
13290     const gchar *arg_state_name)
13291 {
13292   ControlSkeleton *skeleton = CONTROL_SKELETON (object);
13293 
13294   GList      *connections, *l;
13295   GVariant   *signal_variant;
13296   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
13297 
13298   signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
13299                    arg_state_name));
13300   for (l = connections; l != NULL; l = l->next)
13301     {
13302       GDBusConnection *connection = l->data;
13303       g_dbus_connection_emit_signal (connection,
13304         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Control", "GotoSystemState",
13305         signal_variant, NULL);
13306     }
13307   g_variant_unref (signal_variant);
13308   g_list_free_full (connections, g_object_unref);
13309 }
13310 
13311 static void
13312 _control_on_signal_started (
13313     Control *object)
13314 {
13315   ControlSkeleton *skeleton = CONTROL_SKELETON (object);
13316 
13317   GList      *connections, *l;
13318   GVariant   *signal_variant;
13319   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
13320 
13321   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
13322   for (l = connections; l != NULL; l = l->next)
13323     {
13324       GDBusConnection *connection = l->data;
13325       g_dbus_connection_emit_signal (connection,
13326         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Control", "Started",
13327         signal_variant, NULL);
13328     }
13329   g_variant_unref (signal_variant);
13330   g_list_free_full (connections, g_object_unref);
13331 }
13332 
13333 static void control_skeleton_iface_init (ControlIface *iface);
13334 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
13335 G_DEFINE_TYPE_WITH_CODE (ControlSkeleton, control_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
13336                          G_ADD_PRIVATE (ControlSkeleton)
13337                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL, control_skeleton_iface_init));
13338 
13339 #else
13340 G_DEFINE_TYPE_WITH_CODE (ControlSkeleton, control_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
13341                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL, control_skeleton_iface_init));
13342 
13343 #endif
13344 static void
13345 control_skeleton_finalize (GObject *object)
13346 {
13347   ControlSkeleton *skeleton = CONTROL_SKELETON (object);
13348   guint n;
13349   for (n = 0; n < 2; n++)
13350     g_value_unset (&skeleton->priv->properties[n]);
13351   g_free (skeleton->priv->properties);
13352   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
13353   if (skeleton->priv->changed_properties_idle_source != NULL)
13354     g_source_destroy (skeleton->priv->changed_properties_idle_source);
13355   g_main_context_unref (skeleton->priv->context);
13356   g_mutex_clear (&skeleton->priv->lock);
13357   G_OBJECT_CLASS (control_skeleton_parent_class)->finalize (object);
13358 }
13359 
13360 static void
13361 control_skeleton_get_property (GObject      *object,
13362   guint         prop_id,
13363   GValue       *value,
13364   GParamSpec   *pspec G_GNUC_UNUSED)
13365 {
13366   ControlSkeleton *skeleton = CONTROL_SKELETON (object);
13367   g_assert (prop_id != 0 && prop_id - 1 < 2);
13368   g_mutex_lock (&skeleton->priv->lock);
13369   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
13370   g_mutex_unlock (&skeleton->priv->lock);
13371 }
13372 
13373 static gboolean
13374 _control_emit_changed (gpointer user_data)
13375 {
13376   ControlSkeleton *skeleton = CONTROL_SKELETON (user_data);
13377   GList *l;
13378   GVariantBuilder builder;
13379   GVariantBuilder invalidated_builder;
13380   guint num_changes;
13381 
13382   g_mutex_lock (&skeleton->priv->lock);
13383   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
13384   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
13385   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
13386     {
13387       ChangedProperty *cp = l->data;
13388       GVariant *variant;
13389       const GValue *cur_value;
13390 
13391       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
13392       if (!_g_value_equal (cur_value, &cp->orig_value))
13393         {
13394           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
13395           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
13396           g_variant_unref (variant);
13397           num_changes++;
13398         }
13399     }
13400   if (num_changes > 0)
13401     {
13402       GList *connections, *ll;
13403       GVariant *signal_variant;
13404       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.Control",
13405                                            &builder, &invalidated_builder));
13406       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
13407       for (ll = connections; ll != NULL; ll = ll->next)
13408         {
13409           GDBusConnection *connection = ll->data;
13410 
13411           g_dbus_connection_emit_signal (connection,
13412                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
13413                                          "org.freedesktop.DBus.Properties",
13414                                          "PropertiesChanged",
13415                                          signal_variant,
13416                                          NULL);
13417         }
13418       g_variant_unref (signal_variant);
13419       g_list_free_full (connections, g_object_unref);
13420     }
13421   else
13422     {
13423       g_variant_builder_clear (&builder);
13424       g_variant_builder_clear (&invalidated_builder);
13425     }
13426   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
13427   skeleton->priv->changed_properties = NULL;
13428   skeleton->priv->changed_properties_idle_source = NULL;
13429   g_mutex_unlock (&skeleton->priv->lock);
13430   return FALSE;
13431 }
13432 
13433 static void
13434 _control_schedule_emit_changed (ControlSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
13435 {
13436   ChangedProperty *cp;
13437   GList *l;
13438   cp = NULL;
13439   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
13440     {
13441       ChangedProperty *i_cp = l->data;
13442       if (i_cp->info == info)
13443         {
13444           cp = i_cp;
13445           break;
13446         }
13447     }
13448   if (cp == NULL)
13449     {
13450       cp = g_new0 (ChangedProperty, 1);
13451       cp->prop_id = prop_id;
13452       cp->info = info;
13453       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
13454       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
13455       g_value_copy (orig_value, &cp->orig_value);
13456     }
13457 }
13458 
13459 static void
13460 control_skeleton_notify (GObject      *object,
13461   GParamSpec *pspec G_GNUC_UNUSED)
13462 {
13463   ControlSkeleton *skeleton = CONTROL_SKELETON (object);
13464   g_mutex_lock (&skeleton->priv->lock);
13465   if (skeleton->priv->changed_properties != NULL &&
13466       skeleton->priv->changed_properties_idle_source == NULL)
13467     {
13468       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
13469       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
13470       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
13471       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
13472       g_source_unref (skeleton->priv->changed_properties_idle_source);
13473     }
13474   g_mutex_unlock (&skeleton->priv->lock);
13475 }
13476 
13477 static void
13478 control_skeleton_set_property (GObject      *object,
13479   guint         prop_id,
13480   const GValue *value,
13481   GParamSpec   *pspec)
13482 {
13483   ControlSkeleton *skeleton = CONTROL_SKELETON (object);
13484   g_assert (prop_id != 0 && prop_id - 1 < 2);
13485   g_mutex_lock (&skeleton->priv->lock);
13486   g_object_freeze_notify (object);
13487   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
13488     {
13489       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
13490         _control_schedule_emit_changed (skeleton, _control_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
13491       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
13492       g_object_notify_by_pspec (object, pspec);
13493     }
13494   g_mutex_unlock (&skeleton->priv->lock);
13495   g_object_thaw_notify (object);
13496 }
13497 
13498 static void
13499 control_skeleton_init (ControlSkeleton *skeleton)
13500 {
13501 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
13502   skeleton->priv = control_skeleton_get_instance_private (skeleton);
13503 #else
13504   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_CONTROL_SKELETON, ControlSkeletonPrivate);
13505 #endif
13506 
13507   g_mutex_init (&skeleton->priv->lock);
13508   skeleton->priv->context = g_main_context_ref_thread_default ();
13509   skeleton->priv->properties = g_new0 (GValue, 2);
13510   g_value_init (&skeleton->priv->properties[0], G_TYPE_INT);
13511   g_value_init (&skeleton->priv->properties[1], G_TYPE_INT);
13512 }
13513 
13514 static gint
13515 control_skeleton_get_poll_interval (Control *object)
13516 {
13517   ControlSkeleton *skeleton = CONTROL_SKELETON (object);
13518   gint value;
13519   g_mutex_lock (&skeleton->priv->lock);
13520   value = g_value_get_int (&(skeleton->priv->properties[0]));
13521   g_mutex_unlock (&skeleton->priv->lock);
13522   return value;
13523 }
13524 
13525 static gint
13526 control_skeleton_get_heatbeat (Control *object)
13527 {
13528   ControlSkeleton *skeleton = CONTROL_SKELETON (object);
13529   gint value;
13530   g_mutex_lock (&skeleton->priv->lock);
13531   value = g_value_get_int (&(skeleton->priv->properties[1]));
13532   g_mutex_unlock (&skeleton->priv->lock);
13533   return value;
13534 }
13535 
13536 static void
13537 control_skeleton_class_init (ControlSkeletonClass *klass)
13538 {
13539   GObjectClass *gobject_class;
13540   GDBusInterfaceSkeletonClass *skeleton_class;
13541 
13542   gobject_class = G_OBJECT_CLASS (klass);
13543   gobject_class->finalize = control_skeleton_finalize;
13544   gobject_class->get_property = control_skeleton_get_property;
13545   gobject_class->set_property = control_skeleton_set_property;
13546   gobject_class->notify       = control_skeleton_notify;
13547 
13548 
13549   control_override_properties (gobject_class, 1);
13550 
13551   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
13552   skeleton_class->get_info = control_skeleton_dbus_interface_get_info;
13553   skeleton_class->get_properties = control_skeleton_dbus_interface_get_properties;
13554   skeleton_class->flush = control_skeleton_dbus_interface_flush;
13555   skeleton_class->get_vtable = control_skeleton_dbus_interface_get_vtable;
13556 
13557 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
13558   g_type_class_add_private (klass, sizeof (ControlSkeletonPrivate));
13559 #endif
13560 }
13561 
13562 static void
13563 control_skeleton_iface_init (ControlIface *iface)
13564 {
13565   iface->heartbeat = _control_on_signal_heartbeat;
13566   iface->goto_system_state = _control_on_signal_goto_system_state;
13567   iface->started = _control_on_signal_started;
13568   iface->get_poll_interval = control_skeleton_get_poll_interval;
13569   iface->get_heatbeat = control_skeleton_get_heatbeat;
13570 }
13571 
13572 /**
13573  * control_skeleton_new:
13574  *
13575  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Control.top_of_page">org.openbmc.Control</link>.
13576  *
13577  * Returns: (transfer full) (type ControlSkeleton): The skeleton object.
13578  */
13579 Control *
13580 control_skeleton_new (void)
13581 {
13582   return CONTROL (g_object_new (TYPE_CONTROL_SKELETON, NULL));
13583 }
13584 
13585 /* ------------------------------------------------------------------------
13586  * Code for interface org.openbmc.control.Bmc
13587  * ------------------------------------------------------------------------
13588  */
13589 
13590 /**
13591  * SECTION:ControlBmc
13592  * @title: ControlBmc
13593  * @short_description: Generated C code for the org.openbmc.control.Bmc D-Bus interface
13594  *
13595  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link> D-Bus interface in C.
13596  */
13597 
13598 /* ---- Introspection data for org.openbmc.control.Bmc ---- */
13599 
13600 static const _ExtendedGDBusMethodInfo _control_bmc_method_info_cold_reset =
13601 {
13602   {
13603     -1,
13604     (gchar *) "coldReset",
13605     NULL,
13606     NULL,
13607     NULL
13608   },
13609   "handle-cold-reset",
13610   FALSE
13611 };
13612 
13613 static const _ExtendedGDBusMethodInfo _control_bmc_method_info_warm_reset =
13614 {
13615   {
13616     -1,
13617     (gchar *) "warmReset",
13618     NULL,
13619     NULL,
13620     NULL
13621   },
13622   "handle-warm-reset",
13623   FALSE
13624 };
13625 
13626 static const _ExtendedGDBusMethodInfo * const _control_bmc_method_info_pointers[] =
13627 {
13628   &_control_bmc_method_info_cold_reset,
13629   &_control_bmc_method_info_warm_reset,
13630   NULL
13631 };
13632 
13633 static const _ExtendedGDBusInterfaceInfo _control_bmc_interface_info =
13634 {
13635   {
13636     -1,
13637     (gchar *) "org.openbmc.control.Bmc",
13638     (GDBusMethodInfo **) &_control_bmc_method_info_pointers,
13639     NULL,
13640     NULL,
13641     NULL
13642   },
13643   "control-bmc",
13644 };
13645 
13646 
13647 /**
13648  * control_bmc_interface_info:
13649  *
13650  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link> D-Bus interface.
13651  *
13652  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
13653  */
13654 GDBusInterfaceInfo *
13655 control_bmc_interface_info (void)
13656 {
13657   return (GDBusInterfaceInfo *) &_control_bmc_interface_info.parent_struct;
13658 }
13659 
13660 /**
13661  * control_bmc_override_properties:
13662  * @klass: The class structure for a #GObject<!-- -->-derived class.
13663  * @property_id_begin: The property id to assign to the first overridden property.
13664  *
13665  * Overrides all #GObject properties in the #ControlBmc interface for a concrete class.
13666  * The properties are overridden in the order they are defined.
13667  *
13668  * Returns: The last property id.
13669  */
13670 guint
13671 control_bmc_override_properties (GObjectClass *klass, guint property_id_begin)
13672 {
13673   return property_id_begin - 1;
13674 }
13675 
13676 
13677 
13678 /**
13679  * ControlBmc:
13680  *
13681  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link>.
13682  */
13683 
13684 /**
13685  * ControlBmcIface:
13686  * @parent_iface: The parent interface.
13687  * @handle_cold_reset: Handler for the #ControlBmc::handle-cold-reset signal.
13688  * @handle_warm_reset: Handler for the #ControlBmc::handle-warm-reset signal.
13689  *
13690  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link>.
13691  */
13692 
13693 typedef ControlBmcIface ControlBmcInterface;
13694 G_DEFINE_INTERFACE (ControlBmc, control_bmc, G_TYPE_OBJECT);
13695 
13696 static void
13697 control_bmc_default_init (ControlBmcIface *iface)
13698 {
13699   /* GObject signals for incoming D-Bus method calls: */
13700   /**
13701    * ControlBmc::handle-cold-reset:
13702    * @object: A #ControlBmc.
13703    * @invocation: A #GDBusMethodInvocation.
13704    *
13705    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method.
13706    *
13707    * 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 control_bmc_complete_cold_reset() 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.
13708    *
13709    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
13710    */
13711   g_signal_new ("handle-cold-reset",
13712     G_TYPE_FROM_INTERFACE (iface),
13713     G_SIGNAL_RUN_LAST,
13714     G_STRUCT_OFFSET (ControlBmcIface, handle_cold_reset),
13715     g_signal_accumulator_true_handled,
13716     NULL,
13717     g_cclosure_marshal_generic,
13718     G_TYPE_BOOLEAN,
13719     1,
13720     G_TYPE_DBUS_METHOD_INVOCATION);
13721 
13722   /**
13723    * ControlBmc::handle-warm-reset:
13724    * @object: A #ControlBmc.
13725    * @invocation: A #GDBusMethodInvocation.
13726    *
13727    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-control-Bmc.warmReset">warmReset()</link> D-Bus method.
13728    *
13729    * 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 control_bmc_complete_warm_reset() 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.
13730    *
13731    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
13732    */
13733   g_signal_new ("handle-warm-reset",
13734     G_TYPE_FROM_INTERFACE (iface),
13735     G_SIGNAL_RUN_LAST,
13736     G_STRUCT_OFFSET (ControlBmcIface, handle_warm_reset),
13737     g_signal_accumulator_true_handled,
13738     NULL,
13739     g_cclosure_marshal_generic,
13740     G_TYPE_BOOLEAN,
13741     1,
13742     G_TYPE_DBUS_METHOD_INVOCATION);
13743 
13744 }
13745 
13746 /**
13747  * control_bmc_call_cold_reset:
13748  * @proxy: A #ControlBmcProxy.
13749  * @cancellable: (allow-none): A #GCancellable or %NULL.
13750  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
13751  * @user_data: User data to pass to @callback.
13752  *
13753  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method on @proxy.
13754  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
13755  * You can then call control_bmc_call_cold_reset_finish() to get the result of the operation.
13756  *
13757  * See control_bmc_call_cold_reset_sync() for the synchronous, blocking version of this method.
13758  */
13759 void
13760 control_bmc_call_cold_reset (
13761     ControlBmc *proxy,
13762     GCancellable *cancellable,
13763     GAsyncReadyCallback callback,
13764     gpointer user_data)
13765 {
13766   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
13767     "coldReset",
13768     g_variant_new ("()"),
13769     G_DBUS_CALL_FLAGS_NONE,
13770     -1,
13771     cancellable,
13772     callback,
13773     user_data);
13774 }
13775 
13776 /**
13777  * control_bmc_call_cold_reset_finish:
13778  * @proxy: A #ControlBmcProxy.
13779  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_bmc_call_cold_reset().
13780  * @error: Return location for error or %NULL.
13781  *
13782  * Finishes an operation started with control_bmc_call_cold_reset().
13783  *
13784  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
13785  */
13786 gboolean
13787 control_bmc_call_cold_reset_finish (
13788     ControlBmc *proxy,
13789     GAsyncResult *res,
13790     GError **error)
13791 {
13792   GVariant *_ret;
13793   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
13794   if (_ret == NULL)
13795     goto _out;
13796   g_variant_get (_ret,
13797                  "()");
13798   g_variant_unref (_ret);
13799 _out:
13800   return _ret != NULL;
13801 }
13802 
13803 /**
13804  * control_bmc_call_cold_reset_sync:
13805  * @proxy: A #ControlBmcProxy.
13806  * @cancellable: (allow-none): A #GCancellable or %NULL.
13807  * @error: Return location for error or %NULL.
13808  *
13809  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
13810  *
13811  * See control_bmc_call_cold_reset() for the asynchronous version of this method.
13812  *
13813  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
13814  */
13815 gboolean
13816 control_bmc_call_cold_reset_sync (
13817     ControlBmc *proxy,
13818     GCancellable *cancellable,
13819     GError **error)
13820 {
13821   GVariant *_ret;
13822   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
13823     "coldReset",
13824     g_variant_new ("()"),
13825     G_DBUS_CALL_FLAGS_NONE,
13826     -1,
13827     cancellable,
13828     error);
13829   if (_ret == NULL)
13830     goto _out;
13831   g_variant_get (_ret,
13832                  "()");
13833   g_variant_unref (_ret);
13834 _out:
13835   return _ret != NULL;
13836 }
13837 
13838 /**
13839  * control_bmc_call_warm_reset:
13840  * @proxy: A #ControlBmcProxy.
13841  * @cancellable: (allow-none): A #GCancellable or %NULL.
13842  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
13843  * @user_data: User data to pass to @callback.
13844  *
13845  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Bmc.warmReset">warmReset()</link> D-Bus method on @proxy.
13846  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
13847  * You can then call control_bmc_call_warm_reset_finish() to get the result of the operation.
13848  *
13849  * See control_bmc_call_warm_reset_sync() for the synchronous, blocking version of this method.
13850  */
13851 void
13852 control_bmc_call_warm_reset (
13853     ControlBmc *proxy,
13854     GCancellable *cancellable,
13855     GAsyncReadyCallback callback,
13856     gpointer user_data)
13857 {
13858   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
13859     "warmReset",
13860     g_variant_new ("()"),
13861     G_DBUS_CALL_FLAGS_NONE,
13862     -1,
13863     cancellable,
13864     callback,
13865     user_data);
13866 }
13867 
13868 /**
13869  * control_bmc_call_warm_reset_finish:
13870  * @proxy: A #ControlBmcProxy.
13871  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_bmc_call_warm_reset().
13872  * @error: Return location for error or %NULL.
13873  *
13874  * Finishes an operation started with control_bmc_call_warm_reset().
13875  *
13876  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
13877  */
13878 gboolean
13879 control_bmc_call_warm_reset_finish (
13880     ControlBmc *proxy,
13881     GAsyncResult *res,
13882     GError **error)
13883 {
13884   GVariant *_ret;
13885   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
13886   if (_ret == NULL)
13887     goto _out;
13888   g_variant_get (_ret,
13889                  "()");
13890   g_variant_unref (_ret);
13891 _out:
13892   return _ret != NULL;
13893 }
13894 
13895 /**
13896  * control_bmc_call_warm_reset_sync:
13897  * @proxy: A #ControlBmcProxy.
13898  * @cancellable: (allow-none): A #GCancellable or %NULL.
13899  * @error: Return location for error or %NULL.
13900  *
13901  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Bmc.warmReset">warmReset()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
13902  *
13903  * See control_bmc_call_warm_reset() for the asynchronous version of this method.
13904  *
13905  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
13906  */
13907 gboolean
13908 control_bmc_call_warm_reset_sync (
13909     ControlBmc *proxy,
13910     GCancellable *cancellable,
13911     GError **error)
13912 {
13913   GVariant *_ret;
13914   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
13915     "warmReset",
13916     g_variant_new ("()"),
13917     G_DBUS_CALL_FLAGS_NONE,
13918     -1,
13919     cancellable,
13920     error);
13921   if (_ret == NULL)
13922     goto _out;
13923   g_variant_get (_ret,
13924                  "()");
13925   g_variant_unref (_ret);
13926 _out:
13927   return _ret != NULL;
13928 }
13929 
13930 /**
13931  * control_bmc_complete_cold_reset:
13932  * @object: A #ControlBmc.
13933  * @invocation: (transfer full): A #GDBusMethodInvocation.
13934  *
13935  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> 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.
13936  *
13937  * This method will free @invocation, you cannot use it afterwards.
13938  */
13939 void
13940 control_bmc_complete_cold_reset (
13941     ControlBmc *object,
13942     GDBusMethodInvocation *invocation)
13943 {
13944   g_dbus_method_invocation_return_value (invocation,
13945     g_variant_new ("()"));
13946 }
13947 
13948 /**
13949  * control_bmc_complete_warm_reset:
13950  * @object: A #ControlBmc.
13951  * @invocation: (transfer full): A #GDBusMethodInvocation.
13952  *
13953  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-control-Bmc.warmReset">warmReset()</link> 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.
13954  *
13955  * This method will free @invocation, you cannot use it afterwards.
13956  */
13957 void
13958 control_bmc_complete_warm_reset (
13959     ControlBmc *object,
13960     GDBusMethodInvocation *invocation)
13961 {
13962   g_dbus_method_invocation_return_value (invocation,
13963     g_variant_new ("()"));
13964 }
13965 
13966 /* ------------------------------------------------------------------------ */
13967 
13968 /**
13969  * ControlBmcProxy:
13970  *
13971  * The #ControlBmcProxy structure contains only private data and should only be accessed using the provided API.
13972  */
13973 
13974 /**
13975  * ControlBmcProxyClass:
13976  * @parent_class: The parent class.
13977  *
13978  * Class structure for #ControlBmcProxy.
13979  */
13980 
13981 struct _ControlBmcProxyPrivate
13982 {
13983   GData *qdata;
13984 };
13985 
13986 static void control_bmc_proxy_iface_init (ControlBmcIface *iface);
13987 
13988 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
13989 G_DEFINE_TYPE_WITH_CODE (ControlBmcProxy, control_bmc_proxy, G_TYPE_DBUS_PROXY,
13990                          G_ADD_PRIVATE (ControlBmcProxy)
13991                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_BMC, control_bmc_proxy_iface_init));
13992 
13993 #else
13994 G_DEFINE_TYPE_WITH_CODE (ControlBmcProxy, control_bmc_proxy, G_TYPE_DBUS_PROXY,
13995                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_BMC, control_bmc_proxy_iface_init));
13996 
13997 #endif
13998 static void
13999 control_bmc_proxy_finalize (GObject *object)
14000 {
14001   ControlBmcProxy *proxy = CONTROL_BMC_PROXY (object);
14002   g_datalist_clear (&proxy->priv->qdata);
14003   G_OBJECT_CLASS (control_bmc_proxy_parent_class)->finalize (object);
14004 }
14005 
14006 static void
14007 control_bmc_proxy_get_property (GObject      *object,
14008   guint         prop_id,
14009   GValue       *value,
14010   GParamSpec   *pspec G_GNUC_UNUSED)
14011 {
14012 }
14013 
14014 static void
14015 control_bmc_proxy_set_property (GObject      *object,
14016   guint         prop_id,
14017   const GValue *value,
14018   GParamSpec   *pspec G_GNUC_UNUSED)
14019 {
14020 }
14021 
14022 static void
14023 control_bmc_proxy_g_signal (GDBusProxy *proxy,
14024   const gchar *sender_name G_GNUC_UNUSED,
14025   const gchar *signal_name,
14026   GVariant *parameters)
14027 {
14028   _ExtendedGDBusSignalInfo *info;
14029   GVariantIter iter;
14030   GVariant *child;
14031   GValue *paramv;
14032   guint num_params;
14033   guint n;
14034   guint signal_id;
14035   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_control_bmc_interface_info.parent_struct, signal_name);
14036   if (info == NULL)
14037     return;
14038   num_params = g_variant_n_children (parameters);
14039   paramv = g_new0 (GValue, num_params + 1);
14040   g_value_init (&paramv[0], TYPE_CONTROL_BMC);
14041   g_value_set_object (&paramv[0], proxy);
14042   g_variant_iter_init (&iter, parameters);
14043   n = 1;
14044   while ((child = g_variant_iter_next_value (&iter)) != NULL)
14045     {
14046       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
14047       if (arg_info->use_gvariant)
14048         {
14049           g_value_init (&paramv[n], G_TYPE_VARIANT);
14050           g_value_set_variant (&paramv[n], child);
14051           n++;
14052         }
14053       else
14054         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
14055       g_variant_unref (child);
14056     }
14057   signal_id = g_signal_lookup (info->signal_name, TYPE_CONTROL_BMC);
14058   g_signal_emitv (paramv, signal_id, 0, NULL);
14059   for (n = 0; n < num_params + 1; n++)
14060     g_value_unset (&paramv[n]);
14061   g_free (paramv);
14062 }
14063 
14064 static void
14065 control_bmc_proxy_g_properties_changed (GDBusProxy *_proxy,
14066   GVariant *changed_properties,
14067   const gchar *const *invalidated_properties)
14068 {
14069   ControlBmcProxy *proxy = CONTROL_BMC_PROXY (_proxy);
14070   guint n;
14071   const gchar *key;
14072   GVariantIter *iter;
14073   _ExtendedGDBusPropertyInfo *info;
14074   g_variant_get (changed_properties, "a{sv}", &iter);
14075   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
14076     {
14077       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_bmc_interface_info.parent_struct, key);
14078       g_datalist_remove_data (&proxy->priv->qdata, key);
14079       if (info != NULL)
14080         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
14081     }
14082   g_variant_iter_free (iter);
14083   for (n = 0; invalidated_properties[n] != NULL; n++)
14084     {
14085       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_bmc_interface_info.parent_struct, invalidated_properties[n]);
14086       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
14087       if (info != NULL)
14088         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
14089     }
14090 }
14091 
14092 static void
14093 control_bmc_proxy_init (ControlBmcProxy *proxy)
14094 {
14095 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
14096   proxy->priv = control_bmc_proxy_get_instance_private (proxy);
14097 #else
14098   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_CONTROL_BMC_PROXY, ControlBmcProxyPrivate);
14099 #endif
14100 
14101   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), control_bmc_interface_info ());
14102 }
14103 
14104 static void
14105 control_bmc_proxy_class_init (ControlBmcProxyClass *klass)
14106 {
14107   GObjectClass *gobject_class;
14108   GDBusProxyClass *proxy_class;
14109 
14110   gobject_class = G_OBJECT_CLASS (klass);
14111   gobject_class->finalize     = control_bmc_proxy_finalize;
14112   gobject_class->get_property = control_bmc_proxy_get_property;
14113   gobject_class->set_property = control_bmc_proxy_set_property;
14114 
14115   proxy_class = G_DBUS_PROXY_CLASS (klass);
14116   proxy_class->g_signal = control_bmc_proxy_g_signal;
14117   proxy_class->g_properties_changed = control_bmc_proxy_g_properties_changed;
14118 
14119 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
14120   g_type_class_add_private (klass, sizeof (ControlBmcProxyPrivate));
14121 #endif
14122 }
14123 
14124 static void
14125 control_bmc_proxy_iface_init (ControlBmcIface *iface)
14126 {
14127 }
14128 
14129 /**
14130  * control_bmc_proxy_new:
14131  * @connection: A #GDBusConnection.
14132  * @flags: Flags from the #GDBusProxyFlags enumeration.
14133  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
14134  * @object_path: An object path.
14135  * @cancellable: (allow-none): A #GCancellable or %NULL.
14136  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
14137  * @user_data: User data to pass to @callback.
14138  *
14139  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link>. See g_dbus_proxy_new() for more details.
14140  *
14141  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
14142  * You can then call control_bmc_proxy_new_finish() to get the result of the operation.
14143  *
14144  * See control_bmc_proxy_new_sync() for the synchronous, blocking version of this constructor.
14145  */
14146 void
14147 control_bmc_proxy_new (
14148     GDBusConnection     *connection,
14149     GDBusProxyFlags      flags,
14150     const gchar         *name,
14151     const gchar         *object_path,
14152     GCancellable        *cancellable,
14153     GAsyncReadyCallback  callback,
14154     gpointer             user_data)
14155 {
14156   g_async_initable_new_async (TYPE_CONTROL_BMC_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.openbmc.control.Bmc", NULL);
14157 }
14158 
14159 /**
14160  * control_bmc_proxy_new_finish:
14161  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_bmc_proxy_new().
14162  * @error: Return location for error or %NULL
14163  *
14164  * Finishes an operation started with control_bmc_proxy_new().
14165  *
14166  * Returns: (transfer full) (type ControlBmcProxy): The constructed proxy object or %NULL if @error is set.
14167  */
14168 ControlBmc *
14169 control_bmc_proxy_new_finish (
14170     GAsyncResult        *res,
14171     GError             **error)
14172 {
14173   GObject *ret;
14174   GObject *source_object;
14175   source_object = g_async_result_get_source_object (res);
14176   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
14177   g_object_unref (source_object);
14178   if (ret != NULL)
14179     return CONTROL_BMC (ret);
14180   else
14181     return NULL;
14182 }
14183 
14184 /**
14185  * control_bmc_proxy_new_sync:
14186  * @connection: A #GDBusConnection.
14187  * @flags: Flags from the #GDBusProxyFlags enumeration.
14188  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
14189  * @object_path: An object path.
14190  * @cancellable: (allow-none): A #GCancellable or %NULL.
14191  * @error: Return location for error or %NULL
14192  *
14193  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link>. See g_dbus_proxy_new_sync() for more details.
14194  *
14195  * The calling thread is blocked until a reply is received.
14196  *
14197  * See control_bmc_proxy_new() for the asynchronous version of this constructor.
14198  *
14199  * Returns: (transfer full) (type ControlBmcProxy): The constructed proxy object or %NULL if @error is set.
14200  */
14201 ControlBmc *
14202 control_bmc_proxy_new_sync (
14203     GDBusConnection     *connection,
14204     GDBusProxyFlags      flags,
14205     const gchar         *name,
14206     const gchar         *object_path,
14207     GCancellable        *cancellable,
14208     GError             **error)
14209 {
14210   GInitable *ret;
14211   ret = g_initable_new (TYPE_CONTROL_BMC_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.control.Bmc", NULL);
14212   if (ret != NULL)
14213     return CONTROL_BMC (ret);
14214   else
14215     return NULL;
14216 }
14217 
14218 
14219 /**
14220  * control_bmc_proxy_new_for_bus:
14221  * @bus_type: A #GBusType.
14222  * @flags: Flags from the #GDBusProxyFlags enumeration.
14223  * @name: A bus name (well-known or unique).
14224  * @object_path: An object path.
14225  * @cancellable: (allow-none): A #GCancellable or %NULL.
14226  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
14227  * @user_data: User data to pass to @callback.
14228  *
14229  * Like control_bmc_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
14230  *
14231  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
14232  * You can then call control_bmc_proxy_new_for_bus_finish() to get the result of the operation.
14233  *
14234  * See control_bmc_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
14235  */
14236 void
14237 control_bmc_proxy_new_for_bus (
14238     GBusType             bus_type,
14239     GDBusProxyFlags      flags,
14240     const gchar         *name,
14241     const gchar         *object_path,
14242     GCancellable        *cancellable,
14243     GAsyncReadyCallback  callback,
14244     gpointer             user_data)
14245 {
14246   g_async_initable_new_async (TYPE_CONTROL_BMC_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.openbmc.control.Bmc", NULL);
14247 }
14248 
14249 /**
14250  * control_bmc_proxy_new_for_bus_finish:
14251  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_bmc_proxy_new_for_bus().
14252  * @error: Return location for error or %NULL
14253  *
14254  * Finishes an operation started with control_bmc_proxy_new_for_bus().
14255  *
14256  * Returns: (transfer full) (type ControlBmcProxy): The constructed proxy object or %NULL if @error is set.
14257  */
14258 ControlBmc *
14259 control_bmc_proxy_new_for_bus_finish (
14260     GAsyncResult        *res,
14261     GError             **error)
14262 {
14263   GObject *ret;
14264   GObject *source_object;
14265   source_object = g_async_result_get_source_object (res);
14266   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
14267   g_object_unref (source_object);
14268   if (ret != NULL)
14269     return CONTROL_BMC (ret);
14270   else
14271     return NULL;
14272 }
14273 
14274 /**
14275  * control_bmc_proxy_new_for_bus_sync:
14276  * @bus_type: A #GBusType.
14277  * @flags: Flags from the #GDBusProxyFlags enumeration.
14278  * @name: A bus name (well-known or unique).
14279  * @object_path: An object path.
14280  * @cancellable: (allow-none): A #GCancellable or %NULL.
14281  * @error: Return location for error or %NULL
14282  *
14283  * Like control_bmc_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
14284  *
14285  * The calling thread is blocked until a reply is received.
14286  *
14287  * See control_bmc_proxy_new_for_bus() for the asynchronous version of this constructor.
14288  *
14289  * Returns: (transfer full) (type ControlBmcProxy): The constructed proxy object or %NULL if @error is set.
14290  */
14291 ControlBmc *
14292 control_bmc_proxy_new_for_bus_sync (
14293     GBusType             bus_type,
14294     GDBusProxyFlags      flags,
14295     const gchar         *name,
14296     const gchar         *object_path,
14297     GCancellable        *cancellable,
14298     GError             **error)
14299 {
14300   GInitable *ret;
14301   ret = g_initable_new (TYPE_CONTROL_BMC_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.control.Bmc", NULL);
14302   if (ret != NULL)
14303     return CONTROL_BMC (ret);
14304   else
14305     return NULL;
14306 }
14307 
14308 
14309 /* ------------------------------------------------------------------------ */
14310 
14311 /**
14312  * ControlBmcSkeleton:
14313  *
14314  * The #ControlBmcSkeleton structure contains only private data and should only be accessed using the provided API.
14315  */
14316 
14317 /**
14318  * ControlBmcSkeletonClass:
14319  * @parent_class: The parent class.
14320  *
14321  * Class structure for #ControlBmcSkeleton.
14322  */
14323 
14324 struct _ControlBmcSkeletonPrivate
14325 {
14326   GValue *properties;
14327   GList *changed_properties;
14328   GSource *changed_properties_idle_source;
14329   GMainContext *context;
14330   GMutex lock;
14331 };
14332 
14333 static void
14334 _control_bmc_skeleton_handle_method_call (
14335   GDBusConnection *connection G_GNUC_UNUSED,
14336   const gchar *sender G_GNUC_UNUSED,
14337   const gchar *object_path G_GNUC_UNUSED,
14338   const gchar *interface_name,
14339   const gchar *method_name,
14340   GVariant *parameters,
14341   GDBusMethodInvocation *invocation,
14342   gpointer user_data)
14343 {
14344   ControlBmcSkeleton *skeleton = CONTROL_BMC_SKELETON (user_data);
14345   _ExtendedGDBusMethodInfo *info;
14346   GVariantIter iter;
14347   GVariant *child;
14348   GValue *paramv;
14349   guint num_params;
14350   guint num_extra;
14351   guint n;
14352   guint signal_id;
14353   GValue return_value = G_VALUE_INIT;
14354   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
14355   g_assert (info != NULL);
14356   num_params = g_variant_n_children (parameters);
14357   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
14358   n = 0;
14359   g_value_init (&paramv[n], TYPE_CONTROL_BMC);
14360   g_value_set_object (&paramv[n++], skeleton);
14361   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
14362   g_value_set_object (&paramv[n++], invocation);
14363   if (info->pass_fdlist)
14364     {
14365 #ifdef G_OS_UNIX
14366       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
14367       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
14368 #else
14369       g_assert_not_reached ();
14370 #endif
14371     }
14372   g_variant_iter_init (&iter, parameters);
14373   while ((child = g_variant_iter_next_value (&iter)) != NULL)
14374     {
14375       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
14376       if (arg_info->use_gvariant)
14377         {
14378           g_value_init (&paramv[n], G_TYPE_VARIANT);
14379           g_value_set_variant (&paramv[n], child);
14380           n++;
14381         }
14382       else
14383         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
14384       g_variant_unref (child);
14385     }
14386   signal_id = g_signal_lookup (info->signal_name, TYPE_CONTROL_BMC);
14387   g_value_init (&return_value, G_TYPE_BOOLEAN);
14388   g_signal_emitv (paramv, signal_id, 0, &return_value);
14389   if (!g_value_get_boolean (&return_value))
14390     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);
14391   g_value_unset (&return_value);
14392   for (n = 0; n < num_params + num_extra; n++)
14393     g_value_unset (&paramv[n]);
14394   g_free (paramv);
14395 }
14396 
14397 static GVariant *
14398 _control_bmc_skeleton_handle_get_property (
14399   GDBusConnection *connection G_GNUC_UNUSED,
14400   const gchar *sender G_GNUC_UNUSED,
14401   const gchar *object_path G_GNUC_UNUSED,
14402   const gchar *interface_name G_GNUC_UNUSED,
14403   const gchar *property_name,
14404   GError **error,
14405   gpointer user_data)
14406 {
14407   ControlBmcSkeleton *skeleton = CONTROL_BMC_SKELETON (user_data);
14408   GValue value = G_VALUE_INIT;
14409   GParamSpec *pspec;
14410   _ExtendedGDBusPropertyInfo *info;
14411   GVariant *ret;
14412   ret = NULL;
14413   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_bmc_interface_info.parent_struct, property_name);
14414   g_assert (info != NULL);
14415   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
14416   if (pspec == NULL)
14417     {
14418       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
14419     }
14420   else
14421     {
14422       g_value_init (&value, pspec->value_type);
14423       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
14424       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
14425       g_value_unset (&value);
14426     }
14427   return ret;
14428 }
14429 
14430 static gboolean
14431 _control_bmc_skeleton_handle_set_property (
14432   GDBusConnection *connection G_GNUC_UNUSED,
14433   const gchar *sender G_GNUC_UNUSED,
14434   const gchar *object_path G_GNUC_UNUSED,
14435   const gchar *interface_name G_GNUC_UNUSED,
14436   const gchar *property_name,
14437   GVariant *variant,
14438   GError **error,
14439   gpointer user_data)
14440 {
14441   ControlBmcSkeleton *skeleton = CONTROL_BMC_SKELETON (user_data);
14442   GValue value = G_VALUE_INIT;
14443   GParamSpec *pspec;
14444   _ExtendedGDBusPropertyInfo *info;
14445   gboolean ret;
14446   ret = FALSE;
14447   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_bmc_interface_info.parent_struct, property_name);
14448   g_assert (info != NULL);
14449   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
14450   if (pspec == NULL)
14451     {
14452       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
14453     }
14454   else
14455     {
14456       if (info->use_gvariant)
14457         g_value_set_variant (&value, variant);
14458       else
14459         g_dbus_gvariant_to_gvalue (variant, &value);
14460       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
14461       g_value_unset (&value);
14462       ret = TRUE;
14463     }
14464   return ret;
14465 }
14466 
14467 static const GDBusInterfaceVTable _control_bmc_skeleton_vtable =
14468 {
14469   _control_bmc_skeleton_handle_method_call,
14470   _control_bmc_skeleton_handle_get_property,
14471   _control_bmc_skeleton_handle_set_property,
14472   {NULL}
14473 };
14474 
14475 static GDBusInterfaceInfo *
14476 control_bmc_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
14477 {
14478   return control_bmc_interface_info ();
14479 }
14480 
14481 static GDBusInterfaceVTable *
14482 control_bmc_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
14483 {
14484   return (GDBusInterfaceVTable *) &_control_bmc_skeleton_vtable;
14485 }
14486 
14487 static GVariant *
14488 control_bmc_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
14489 {
14490   ControlBmcSkeleton *skeleton = CONTROL_BMC_SKELETON (_skeleton);
14491 
14492   GVariantBuilder builder;
14493   guint n;
14494   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
14495   if (_control_bmc_interface_info.parent_struct.properties == NULL)
14496     goto out;
14497   for (n = 0; _control_bmc_interface_info.parent_struct.properties[n] != NULL; n++)
14498     {
14499       GDBusPropertyInfo *info = _control_bmc_interface_info.parent_struct.properties[n];
14500       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
14501         {
14502           GVariant *value;
14503           value = _control_bmc_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.openbmc.control.Bmc", info->name, NULL, skeleton);
14504           if (value != NULL)
14505             {
14506               g_variant_take_ref (value);
14507               g_variant_builder_add (&builder, "{sv}", info->name, value);
14508               g_variant_unref (value);
14509             }
14510         }
14511     }
14512 out:
14513   return g_variant_builder_end (&builder);
14514 }
14515 
14516 static void
14517 control_bmc_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
14518 {
14519 }
14520 
14521 static void control_bmc_skeleton_iface_init (ControlBmcIface *iface);
14522 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
14523 G_DEFINE_TYPE_WITH_CODE (ControlBmcSkeleton, control_bmc_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
14524                          G_ADD_PRIVATE (ControlBmcSkeleton)
14525                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_BMC, control_bmc_skeleton_iface_init));
14526 
14527 #else
14528 G_DEFINE_TYPE_WITH_CODE (ControlBmcSkeleton, control_bmc_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
14529                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_BMC, control_bmc_skeleton_iface_init));
14530 
14531 #endif
14532 static void
14533 control_bmc_skeleton_finalize (GObject *object)
14534 {
14535   ControlBmcSkeleton *skeleton = CONTROL_BMC_SKELETON (object);
14536   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
14537   if (skeleton->priv->changed_properties_idle_source != NULL)
14538     g_source_destroy (skeleton->priv->changed_properties_idle_source);
14539   g_main_context_unref (skeleton->priv->context);
14540   g_mutex_clear (&skeleton->priv->lock);
14541   G_OBJECT_CLASS (control_bmc_skeleton_parent_class)->finalize (object);
14542 }
14543 
14544 static void
14545 control_bmc_skeleton_init (ControlBmcSkeleton *skeleton)
14546 {
14547 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
14548   skeleton->priv = control_bmc_skeleton_get_instance_private (skeleton);
14549 #else
14550   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_CONTROL_BMC_SKELETON, ControlBmcSkeletonPrivate);
14551 #endif
14552 
14553   g_mutex_init (&skeleton->priv->lock);
14554   skeleton->priv->context = g_main_context_ref_thread_default ();
14555 }
14556 
14557 static void
14558 control_bmc_skeleton_class_init (ControlBmcSkeletonClass *klass)
14559 {
14560   GObjectClass *gobject_class;
14561   GDBusInterfaceSkeletonClass *skeleton_class;
14562 
14563   gobject_class = G_OBJECT_CLASS (klass);
14564   gobject_class->finalize = control_bmc_skeleton_finalize;
14565 
14566   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
14567   skeleton_class->get_info = control_bmc_skeleton_dbus_interface_get_info;
14568   skeleton_class->get_properties = control_bmc_skeleton_dbus_interface_get_properties;
14569   skeleton_class->flush = control_bmc_skeleton_dbus_interface_flush;
14570   skeleton_class->get_vtable = control_bmc_skeleton_dbus_interface_get_vtable;
14571 
14572 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
14573   g_type_class_add_private (klass, sizeof (ControlBmcSkeletonPrivate));
14574 #endif
14575 }
14576 
14577 static void
14578 control_bmc_skeleton_iface_init (ControlBmcIface *iface)
14579 {
14580 }
14581 
14582 /**
14583  * control_bmc_skeleton_new:
14584  *
14585  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link>.
14586  *
14587  * Returns: (transfer full) (type ControlBmcSkeleton): The skeleton object.
14588  */
14589 ControlBmc *
14590 control_bmc_skeleton_new (void)
14591 {
14592   return CONTROL_BMC (g_object_new (TYPE_CONTROL_BMC_SKELETON, NULL));
14593 }
14594 
14595 /* ------------------------------------------------------------------------
14596  * Code for interface org.openbmc.control.Host
14597  * ------------------------------------------------------------------------
14598  */
14599 
14600 /**
14601  * SECTION:ControlHost
14602  * @title: ControlHost
14603  * @short_description: Generated C code for the org.openbmc.control.Host D-Bus interface
14604  *
14605  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-control-Host.top_of_page">org.openbmc.control.Host</link> D-Bus interface in C.
14606  */
14607 
14608 /* ---- Introspection data for org.openbmc.control.Host ---- */
14609 
14610 static const _ExtendedGDBusMethodInfo _control_host_method_info_boot =
14611 {
14612   {
14613     -1,
14614     (gchar *) "boot",
14615     NULL,
14616     NULL,
14617     NULL
14618   },
14619   "handle-boot",
14620   FALSE
14621 };
14622 
14623 static const _ExtendedGDBusMethodInfo _control_host_method_info_shutdown =
14624 {
14625   {
14626     -1,
14627     (gchar *) "shutdown",
14628     NULL,
14629     NULL,
14630     NULL
14631   },
14632   "handle-shutdown",
14633   FALSE
14634 };
14635 
14636 static const _ExtendedGDBusMethodInfo _control_host_method_info_reboot =
14637 {
14638   {
14639     -1,
14640     (gchar *) "reboot",
14641     NULL,
14642     NULL,
14643     NULL
14644   },
14645   "handle-reboot",
14646   FALSE
14647 };
14648 
14649 static const _ExtendedGDBusMethodInfo * const _control_host_method_info_pointers[] =
14650 {
14651   &_control_host_method_info_boot,
14652   &_control_host_method_info_shutdown,
14653   &_control_host_method_info_reboot,
14654   NULL
14655 };
14656 
14657 static const _ExtendedGDBusSignalInfo _control_host_signal_info_booted =
14658 {
14659   {
14660     -1,
14661     (gchar *) "Booted",
14662     NULL,
14663     NULL
14664   },
14665   "booted"
14666 };
14667 
14668 static const _ExtendedGDBusSignalInfo * const _control_host_signal_info_pointers[] =
14669 {
14670   &_control_host_signal_info_booted,
14671   NULL
14672 };
14673 
14674 static const _ExtendedGDBusPropertyInfo _control_host_property_info_debug_mode =
14675 {
14676   {
14677     -1,
14678     (gchar *) "debug_mode",
14679     (gchar *) "i",
14680     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
14681     NULL
14682   },
14683   "debug-mode",
14684   FALSE
14685 };
14686 
14687 static const _ExtendedGDBusPropertyInfo _control_host_property_info_flash_side =
14688 {
14689   {
14690     -1,
14691     (gchar *) "flash_side",
14692     (gchar *) "s",
14693     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
14694     NULL
14695   },
14696   "flash-side",
14697   FALSE
14698 };
14699 
14700 static const _ExtendedGDBusPropertyInfo * const _control_host_property_info_pointers[] =
14701 {
14702   &_control_host_property_info_debug_mode,
14703   &_control_host_property_info_flash_side,
14704   NULL
14705 };
14706 
14707 static const _ExtendedGDBusInterfaceInfo _control_host_interface_info =
14708 {
14709   {
14710     -1,
14711     (gchar *) "org.openbmc.control.Host",
14712     (GDBusMethodInfo **) &_control_host_method_info_pointers,
14713     (GDBusSignalInfo **) &_control_host_signal_info_pointers,
14714     (GDBusPropertyInfo **) &_control_host_property_info_pointers,
14715     NULL
14716   },
14717   "control-host",
14718 };
14719 
14720 
14721 /**
14722  * control_host_interface_info:
14723  *
14724  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-control-Host.top_of_page">org.openbmc.control.Host</link> D-Bus interface.
14725  *
14726  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
14727  */
14728 GDBusInterfaceInfo *
14729 control_host_interface_info (void)
14730 {
14731   return (GDBusInterfaceInfo *) &_control_host_interface_info.parent_struct;
14732 }
14733 
14734 /**
14735  * control_host_override_properties:
14736  * @klass: The class structure for a #GObject<!-- -->-derived class.
14737  * @property_id_begin: The property id to assign to the first overridden property.
14738  *
14739  * Overrides all #GObject properties in the #ControlHost interface for a concrete class.
14740  * The properties are overridden in the order they are defined.
14741  *
14742  * Returns: The last property id.
14743  */
14744 guint
14745 control_host_override_properties (GObjectClass *klass, guint property_id_begin)
14746 {
14747   g_object_class_override_property (klass, property_id_begin++, "debug-mode");
14748   g_object_class_override_property (klass, property_id_begin++, "flash-side");
14749   return property_id_begin - 1;
14750 }
14751 
14752 
14753 
14754 /**
14755  * ControlHost:
14756  *
14757  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Host.top_of_page">org.openbmc.control.Host</link>.
14758  */
14759 
14760 /**
14761  * ControlHostIface:
14762  * @parent_iface: The parent interface.
14763  * @handle_boot: Handler for the #ControlHost::handle-boot signal.
14764  * @handle_reboot: Handler for the #ControlHost::handle-reboot signal.
14765  * @handle_shutdown: Handler for the #ControlHost::handle-shutdown signal.
14766  * @get_debug_mode: Getter for the #ControlHost:debug-mode property.
14767  * @get_flash_side: Getter for the #ControlHost:flash-side property.
14768  * @booted: Handler for the #ControlHost::booted signal.
14769  *
14770  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Host.top_of_page">org.openbmc.control.Host</link>.
14771  */
14772 
14773 typedef ControlHostIface ControlHostInterface;
14774 G_DEFINE_INTERFACE (ControlHost, control_host, G_TYPE_OBJECT);
14775 
14776 static void
14777 control_host_default_init (ControlHostIface *iface)
14778 {
14779   /* GObject signals for incoming D-Bus method calls: */
14780   /**
14781    * ControlHost::handle-boot:
14782    * @object: A #ControlHost.
14783    * @invocation: A #GDBusMethodInvocation.
14784    *
14785    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-control-Host.boot">boot()</link> D-Bus method.
14786    *
14787    * 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 control_host_complete_boot() 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.
14788    *
14789    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
14790    */
14791   g_signal_new ("handle-boot",
14792     G_TYPE_FROM_INTERFACE (iface),
14793     G_SIGNAL_RUN_LAST,
14794     G_STRUCT_OFFSET (ControlHostIface, handle_boot),
14795     g_signal_accumulator_true_handled,
14796     NULL,
14797     g_cclosure_marshal_generic,
14798     G_TYPE_BOOLEAN,
14799     1,
14800     G_TYPE_DBUS_METHOD_INVOCATION);
14801 
14802   /**
14803    * ControlHost::handle-shutdown:
14804    * @object: A #ControlHost.
14805    * @invocation: A #GDBusMethodInvocation.
14806    *
14807    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-control-Host.shutdown">shutdown()</link> D-Bus method.
14808    *
14809    * 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 control_host_complete_shutdown() 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.
14810    *
14811    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
14812    */
14813   g_signal_new ("handle-shutdown",
14814     G_TYPE_FROM_INTERFACE (iface),
14815     G_SIGNAL_RUN_LAST,
14816     G_STRUCT_OFFSET (ControlHostIface, handle_shutdown),
14817     g_signal_accumulator_true_handled,
14818     NULL,
14819     g_cclosure_marshal_generic,
14820     G_TYPE_BOOLEAN,
14821     1,
14822     G_TYPE_DBUS_METHOD_INVOCATION);
14823 
14824   /**
14825    * ControlHost::handle-reboot:
14826    * @object: A #ControlHost.
14827    * @invocation: A #GDBusMethodInvocation.
14828    *
14829    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-control-Host.reboot">reboot()</link> D-Bus method.
14830    *
14831    * 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 control_host_complete_reboot() 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.
14832    *
14833    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
14834    */
14835   g_signal_new ("handle-reboot",
14836     G_TYPE_FROM_INTERFACE (iface),
14837     G_SIGNAL_RUN_LAST,
14838     G_STRUCT_OFFSET (ControlHostIface, handle_reboot),
14839     g_signal_accumulator_true_handled,
14840     NULL,
14841     g_cclosure_marshal_generic,
14842     G_TYPE_BOOLEAN,
14843     1,
14844     G_TYPE_DBUS_METHOD_INVOCATION);
14845 
14846   /* GObject signals for received D-Bus signals: */
14847   /**
14848    * ControlHost::booted:
14849    * @object: A #ControlHost.
14850    *
14851    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-control-Host.Booted">"Booted"</link> is received.
14852    *
14853    * 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.
14854    */
14855   g_signal_new ("booted",
14856     G_TYPE_FROM_INTERFACE (iface),
14857     G_SIGNAL_RUN_LAST,
14858     G_STRUCT_OFFSET (ControlHostIface, booted),
14859     NULL,
14860     NULL,
14861     g_cclosure_marshal_generic,
14862     G_TYPE_NONE,
14863     0);
14864 
14865   /* GObject properties for D-Bus properties: */
14866   /**
14867    * ControlHost:debug-mode:
14868    *
14869    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-control-Host.debug_mode">"debug_mode"</link>.
14870    *
14871    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
14872    */
14873   g_object_interface_install_property (iface,
14874     g_param_spec_int ("debug-mode", "debug_mode", "debug_mode", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
14875   /**
14876    * ControlHost:flash-side:
14877    *
14878    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-control-Host.flash_side">"flash_side"</link>.
14879    *
14880    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
14881    */
14882   g_object_interface_install_property (iface,
14883     g_param_spec_string ("flash-side", "flash_side", "flash_side", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
14884 }
14885 
14886 /**
14887  * control_host_get_debug_mode: (skip)
14888  * @object: A #ControlHost.
14889  *
14890  * Gets the value of the <link linkend="gdbus-property-org-openbmc-control-Host.debug_mode">"debug_mode"</link> D-Bus property.
14891  *
14892  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
14893  *
14894  * Returns: The property value.
14895  */
14896 gint
14897 control_host_get_debug_mode (ControlHost *object)
14898 {
14899   return CONTROL_HOST_GET_IFACE (object)->get_debug_mode (object);
14900 }
14901 
14902 /**
14903  * control_host_set_debug_mode: (skip)
14904  * @object: A #ControlHost.
14905  * @value: The value to set.
14906  *
14907  * Sets the <link linkend="gdbus-property-org-openbmc-control-Host.debug_mode">"debug_mode"</link> D-Bus property to @value.
14908  *
14909  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
14910  */
14911 void
14912 control_host_set_debug_mode (ControlHost *object, gint value)
14913 {
14914   g_object_set (G_OBJECT (object), "debug-mode", value, NULL);
14915 }
14916 
14917 /**
14918  * control_host_get_flash_side: (skip)
14919  * @object: A #ControlHost.
14920  *
14921  * Gets the value of the <link linkend="gdbus-property-org-openbmc-control-Host.flash_side">"flash_side"</link> D-Bus property.
14922  *
14923  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
14924  *
14925  * <warning>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 control_host_dup_flash_side() if on another thread.</warning>
14926  *
14927  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
14928  */
14929 const gchar *
14930 control_host_get_flash_side (ControlHost *object)
14931 {
14932   return CONTROL_HOST_GET_IFACE (object)->get_flash_side (object);
14933 }
14934 
14935 /**
14936  * control_host_dup_flash_side: (skip)
14937  * @object: A #ControlHost.
14938  *
14939  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-control-Host.flash_side">"flash_side"</link> D-Bus property.
14940  *
14941  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
14942  *
14943  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
14944  */
14945 gchar *
14946 control_host_dup_flash_side (ControlHost *object)
14947 {
14948   gchar *value;
14949   g_object_get (G_OBJECT (object), "flash-side", &value, NULL);
14950   return value;
14951 }
14952 
14953 /**
14954  * control_host_set_flash_side: (skip)
14955  * @object: A #ControlHost.
14956  * @value: The value to set.
14957  *
14958  * Sets the <link linkend="gdbus-property-org-openbmc-control-Host.flash_side">"flash_side"</link> D-Bus property to @value.
14959  *
14960  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
14961  */
14962 void
14963 control_host_set_flash_side (ControlHost *object, const gchar *value)
14964 {
14965   g_object_set (G_OBJECT (object), "flash-side", value, NULL);
14966 }
14967 
14968 /**
14969  * control_host_emit_booted:
14970  * @object: A #ControlHost.
14971  *
14972  * Emits the <link linkend="gdbus-signal-org-openbmc-control-Host.Booted">"Booted"</link> D-Bus signal.
14973  */
14974 void
14975 control_host_emit_booted (
14976     ControlHost *object)
14977 {
14978   g_signal_emit_by_name (object, "booted");
14979 }
14980 
14981 /**
14982  * control_host_call_boot:
14983  * @proxy: A #ControlHostProxy.
14984  * @cancellable: (allow-none): A #GCancellable or %NULL.
14985  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
14986  * @user_data: User data to pass to @callback.
14987  *
14988  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Host.boot">boot()</link> D-Bus method on @proxy.
14989  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
14990  * You can then call control_host_call_boot_finish() to get the result of the operation.
14991  *
14992  * See control_host_call_boot_sync() for the synchronous, blocking version of this method.
14993  */
14994 void
14995 control_host_call_boot (
14996     ControlHost *proxy,
14997     GCancellable *cancellable,
14998     GAsyncReadyCallback callback,
14999     gpointer user_data)
15000 {
15001   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
15002     "boot",
15003     g_variant_new ("()"),
15004     G_DBUS_CALL_FLAGS_NONE,
15005     -1,
15006     cancellable,
15007     callback,
15008     user_data);
15009 }
15010 
15011 /**
15012  * control_host_call_boot_finish:
15013  * @proxy: A #ControlHostProxy.
15014  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_host_call_boot().
15015  * @error: Return location for error or %NULL.
15016  *
15017  * Finishes an operation started with control_host_call_boot().
15018  *
15019  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
15020  */
15021 gboolean
15022 control_host_call_boot_finish (
15023     ControlHost *proxy,
15024     GAsyncResult *res,
15025     GError **error)
15026 {
15027   GVariant *_ret;
15028   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
15029   if (_ret == NULL)
15030     goto _out;
15031   g_variant_get (_ret,
15032                  "()");
15033   g_variant_unref (_ret);
15034 _out:
15035   return _ret != NULL;
15036 }
15037 
15038 /**
15039  * control_host_call_boot_sync:
15040  * @proxy: A #ControlHostProxy.
15041  * @cancellable: (allow-none): A #GCancellable or %NULL.
15042  * @error: Return location for error or %NULL.
15043  *
15044  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Host.boot">boot()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
15045  *
15046  * See control_host_call_boot() for the asynchronous version of this method.
15047  *
15048  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
15049  */
15050 gboolean
15051 control_host_call_boot_sync (
15052     ControlHost *proxy,
15053     GCancellable *cancellable,
15054     GError **error)
15055 {
15056   GVariant *_ret;
15057   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
15058     "boot",
15059     g_variant_new ("()"),
15060     G_DBUS_CALL_FLAGS_NONE,
15061     -1,
15062     cancellable,
15063     error);
15064   if (_ret == NULL)
15065     goto _out;
15066   g_variant_get (_ret,
15067                  "()");
15068   g_variant_unref (_ret);
15069 _out:
15070   return _ret != NULL;
15071 }
15072 
15073 /**
15074  * control_host_call_shutdown:
15075  * @proxy: A #ControlHostProxy.
15076  * @cancellable: (allow-none): A #GCancellable or %NULL.
15077  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
15078  * @user_data: User data to pass to @callback.
15079  *
15080  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Host.shutdown">shutdown()</link> D-Bus method on @proxy.
15081  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
15082  * You can then call control_host_call_shutdown_finish() to get the result of the operation.
15083  *
15084  * See control_host_call_shutdown_sync() for the synchronous, blocking version of this method.
15085  */
15086 void
15087 control_host_call_shutdown (
15088     ControlHost *proxy,
15089     GCancellable *cancellable,
15090     GAsyncReadyCallback callback,
15091     gpointer user_data)
15092 {
15093   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
15094     "shutdown",
15095     g_variant_new ("()"),
15096     G_DBUS_CALL_FLAGS_NONE,
15097     -1,
15098     cancellable,
15099     callback,
15100     user_data);
15101 }
15102 
15103 /**
15104  * control_host_call_shutdown_finish:
15105  * @proxy: A #ControlHostProxy.
15106  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_host_call_shutdown().
15107  * @error: Return location for error or %NULL.
15108  *
15109  * Finishes an operation started with control_host_call_shutdown().
15110  *
15111  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
15112  */
15113 gboolean
15114 control_host_call_shutdown_finish (
15115     ControlHost *proxy,
15116     GAsyncResult *res,
15117     GError **error)
15118 {
15119   GVariant *_ret;
15120   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
15121   if (_ret == NULL)
15122     goto _out;
15123   g_variant_get (_ret,
15124                  "()");
15125   g_variant_unref (_ret);
15126 _out:
15127   return _ret != NULL;
15128 }
15129 
15130 /**
15131  * control_host_call_shutdown_sync:
15132  * @proxy: A #ControlHostProxy.
15133  * @cancellable: (allow-none): A #GCancellable or %NULL.
15134  * @error: Return location for error or %NULL.
15135  *
15136  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Host.shutdown">shutdown()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
15137  *
15138  * See control_host_call_shutdown() for the asynchronous version of this method.
15139  *
15140  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
15141  */
15142 gboolean
15143 control_host_call_shutdown_sync (
15144     ControlHost *proxy,
15145     GCancellable *cancellable,
15146     GError **error)
15147 {
15148   GVariant *_ret;
15149   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
15150     "shutdown",
15151     g_variant_new ("()"),
15152     G_DBUS_CALL_FLAGS_NONE,
15153     -1,
15154     cancellable,
15155     error);
15156   if (_ret == NULL)
15157     goto _out;
15158   g_variant_get (_ret,
15159                  "()");
15160   g_variant_unref (_ret);
15161 _out:
15162   return _ret != NULL;
15163 }
15164 
15165 /**
15166  * control_host_call_reboot:
15167  * @proxy: A #ControlHostProxy.
15168  * @cancellable: (allow-none): A #GCancellable or %NULL.
15169  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
15170  * @user_data: User data to pass to @callback.
15171  *
15172  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Host.reboot">reboot()</link> D-Bus method on @proxy.
15173  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
15174  * You can then call control_host_call_reboot_finish() to get the result of the operation.
15175  *
15176  * See control_host_call_reboot_sync() for the synchronous, blocking version of this method.
15177  */
15178 void
15179 control_host_call_reboot (
15180     ControlHost *proxy,
15181     GCancellable *cancellable,
15182     GAsyncReadyCallback callback,
15183     gpointer user_data)
15184 {
15185   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
15186     "reboot",
15187     g_variant_new ("()"),
15188     G_DBUS_CALL_FLAGS_NONE,
15189     -1,
15190     cancellable,
15191     callback,
15192     user_data);
15193 }
15194 
15195 /**
15196  * control_host_call_reboot_finish:
15197  * @proxy: A #ControlHostProxy.
15198  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_host_call_reboot().
15199  * @error: Return location for error or %NULL.
15200  *
15201  * Finishes an operation started with control_host_call_reboot().
15202  *
15203  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
15204  */
15205 gboolean
15206 control_host_call_reboot_finish (
15207     ControlHost *proxy,
15208     GAsyncResult *res,
15209     GError **error)
15210 {
15211   GVariant *_ret;
15212   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
15213   if (_ret == NULL)
15214     goto _out;
15215   g_variant_get (_ret,
15216                  "()");
15217   g_variant_unref (_ret);
15218 _out:
15219   return _ret != NULL;
15220 }
15221 
15222 /**
15223  * control_host_call_reboot_sync:
15224  * @proxy: A #ControlHostProxy.
15225  * @cancellable: (allow-none): A #GCancellable or %NULL.
15226  * @error: Return location for error or %NULL.
15227  *
15228  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Host.reboot">reboot()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
15229  *
15230  * See control_host_call_reboot() for the asynchronous version of this method.
15231  *
15232  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
15233  */
15234 gboolean
15235 control_host_call_reboot_sync (
15236     ControlHost *proxy,
15237     GCancellable *cancellable,
15238     GError **error)
15239 {
15240   GVariant *_ret;
15241   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
15242     "reboot",
15243     g_variant_new ("()"),
15244     G_DBUS_CALL_FLAGS_NONE,
15245     -1,
15246     cancellable,
15247     error);
15248   if (_ret == NULL)
15249     goto _out;
15250   g_variant_get (_ret,
15251                  "()");
15252   g_variant_unref (_ret);
15253 _out:
15254   return _ret != NULL;
15255 }
15256 
15257 /**
15258  * control_host_complete_boot:
15259  * @object: A #ControlHost.
15260  * @invocation: (transfer full): A #GDBusMethodInvocation.
15261  *
15262  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-control-Host.boot">boot()</link> 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.
15263  *
15264  * This method will free @invocation, you cannot use it afterwards.
15265  */
15266 void
15267 control_host_complete_boot (
15268     ControlHost *object,
15269     GDBusMethodInvocation *invocation)
15270 {
15271   g_dbus_method_invocation_return_value (invocation,
15272     g_variant_new ("()"));
15273 }
15274 
15275 /**
15276  * control_host_complete_shutdown:
15277  * @object: A #ControlHost.
15278  * @invocation: (transfer full): A #GDBusMethodInvocation.
15279  *
15280  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-control-Host.shutdown">shutdown()</link> 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.
15281  *
15282  * This method will free @invocation, you cannot use it afterwards.
15283  */
15284 void
15285 control_host_complete_shutdown (
15286     ControlHost *object,
15287     GDBusMethodInvocation *invocation)
15288 {
15289   g_dbus_method_invocation_return_value (invocation,
15290     g_variant_new ("()"));
15291 }
15292 
15293 /**
15294  * control_host_complete_reboot:
15295  * @object: A #ControlHost.
15296  * @invocation: (transfer full): A #GDBusMethodInvocation.
15297  *
15298  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-control-Host.reboot">reboot()</link> 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.
15299  *
15300  * This method will free @invocation, you cannot use it afterwards.
15301  */
15302 void
15303 control_host_complete_reboot (
15304     ControlHost *object,
15305     GDBusMethodInvocation *invocation)
15306 {
15307   g_dbus_method_invocation_return_value (invocation,
15308     g_variant_new ("()"));
15309 }
15310 
15311 /* ------------------------------------------------------------------------ */
15312 
15313 /**
15314  * ControlHostProxy:
15315  *
15316  * The #ControlHostProxy structure contains only private data and should only be accessed using the provided API.
15317  */
15318 
15319 /**
15320  * ControlHostProxyClass:
15321  * @parent_class: The parent class.
15322  *
15323  * Class structure for #ControlHostProxy.
15324  */
15325 
15326 struct _ControlHostProxyPrivate
15327 {
15328   GData *qdata;
15329 };
15330 
15331 static void control_host_proxy_iface_init (ControlHostIface *iface);
15332 
15333 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
15334 G_DEFINE_TYPE_WITH_CODE (ControlHostProxy, control_host_proxy, G_TYPE_DBUS_PROXY,
15335                          G_ADD_PRIVATE (ControlHostProxy)
15336                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_HOST, control_host_proxy_iface_init));
15337 
15338 #else
15339 G_DEFINE_TYPE_WITH_CODE (ControlHostProxy, control_host_proxy, G_TYPE_DBUS_PROXY,
15340                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_HOST, control_host_proxy_iface_init));
15341 
15342 #endif
15343 static void
15344 control_host_proxy_finalize (GObject *object)
15345 {
15346   ControlHostProxy *proxy = CONTROL_HOST_PROXY (object);
15347   g_datalist_clear (&proxy->priv->qdata);
15348   G_OBJECT_CLASS (control_host_proxy_parent_class)->finalize (object);
15349 }
15350 
15351 static void
15352 control_host_proxy_get_property (GObject      *object,
15353   guint         prop_id,
15354   GValue       *value,
15355   GParamSpec   *pspec G_GNUC_UNUSED)
15356 {
15357   const _ExtendedGDBusPropertyInfo *info;
15358   GVariant *variant;
15359   g_assert (prop_id != 0 && prop_id - 1 < 2);
15360   info = _control_host_property_info_pointers[prop_id - 1];
15361   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
15362   if (info->use_gvariant)
15363     {
15364       g_value_set_variant (value, variant);
15365     }
15366   else
15367     {
15368       if (variant != NULL)
15369         g_dbus_gvariant_to_gvalue (variant, value);
15370     }
15371   if (variant != NULL)
15372     g_variant_unref (variant);
15373 }
15374 
15375 static void
15376 control_host_proxy_set_property_cb (GDBusProxy *proxy,
15377   GAsyncResult *res,
15378   gpointer      user_data)
15379 {
15380   const _ExtendedGDBusPropertyInfo *info = user_data;
15381   GError *error;
15382   GVariant *_ret;
15383   error = NULL;
15384   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
15385   if (!_ret)
15386     {
15387       g_warning ("Error setting property '%s' on interface org.openbmc.control.Host: %s (%s, %d)",
15388                  info->parent_struct.name,
15389                  error->message, g_quark_to_string (error->domain), error->code);
15390       g_error_free (error);
15391     }
15392   else
15393     {
15394       g_variant_unref (_ret);
15395     }
15396 }
15397 
15398 static void
15399 control_host_proxy_set_property (GObject      *object,
15400   guint         prop_id,
15401   const GValue *value,
15402   GParamSpec   *pspec G_GNUC_UNUSED)
15403 {
15404   const _ExtendedGDBusPropertyInfo *info;
15405   GVariant *variant;
15406   g_assert (prop_id != 0 && prop_id - 1 < 2);
15407   info = _control_host_property_info_pointers[prop_id - 1];
15408   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
15409   g_dbus_proxy_call (G_DBUS_PROXY (object),
15410     "org.freedesktop.DBus.Properties.Set",
15411     g_variant_new ("(ssv)", "org.openbmc.control.Host", info->parent_struct.name, variant),
15412     G_DBUS_CALL_FLAGS_NONE,
15413     -1,
15414     NULL, (GAsyncReadyCallback) control_host_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
15415   g_variant_unref (variant);
15416 }
15417 
15418 static void
15419 control_host_proxy_g_signal (GDBusProxy *proxy,
15420   const gchar *sender_name G_GNUC_UNUSED,
15421   const gchar *signal_name,
15422   GVariant *parameters)
15423 {
15424   _ExtendedGDBusSignalInfo *info;
15425   GVariantIter iter;
15426   GVariant *child;
15427   GValue *paramv;
15428   guint num_params;
15429   guint n;
15430   guint signal_id;
15431   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_control_host_interface_info.parent_struct, signal_name);
15432   if (info == NULL)
15433     return;
15434   num_params = g_variant_n_children (parameters);
15435   paramv = g_new0 (GValue, num_params + 1);
15436   g_value_init (&paramv[0], TYPE_CONTROL_HOST);
15437   g_value_set_object (&paramv[0], proxy);
15438   g_variant_iter_init (&iter, parameters);
15439   n = 1;
15440   while ((child = g_variant_iter_next_value (&iter)) != NULL)
15441     {
15442       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
15443       if (arg_info->use_gvariant)
15444         {
15445           g_value_init (&paramv[n], G_TYPE_VARIANT);
15446           g_value_set_variant (&paramv[n], child);
15447           n++;
15448         }
15449       else
15450         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
15451       g_variant_unref (child);
15452     }
15453   signal_id = g_signal_lookup (info->signal_name, TYPE_CONTROL_HOST);
15454   g_signal_emitv (paramv, signal_id, 0, NULL);
15455   for (n = 0; n < num_params + 1; n++)
15456     g_value_unset (&paramv[n]);
15457   g_free (paramv);
15458 }
15459 
15460 static void
15461 control_host_proxy_g_properties_changed (GDBusProxy *_proxy,
15462   GVariant *changed_properties,
15463   const gchar *const *invalidated_properties)
15464 {
15465   ControlHostProxy *proxy = CONTROL_HOST_PROXY (_proxy);
15466   guint n;
15467   const gchar *key;
15468   GVariantIter *iter;
15469   _ExtendedGDBusPropertyInfo *info;
15470   g_variant_get (changed_properties, "a{sv}", &iter);
15471   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
15472     {
15473       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_host_interface_info.parent_struct, key);
15474       g_datalist_remove_data (&proxy->priv->qdata, key);
15475       if (info != NULL)
15476         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
15477     }
15478   g_variant_iter_free (iter);
15479   for (n = 0; invalidated_properties[n] != NULL; n++)
15480     {
15481       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_host_interface_info.parent_struct, invalidated_properties[n]);
15482       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
15483       if (info != NULL)
15484         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
15485     }
15486 }
15487 
15488 static gint
15489 control_host_proxy_get_debug_mode (ControlHost *object)
15490 {
15491   ControlHostProxy *proxy = CONTROL_HOST_PROXY (object);
15492   GVariant *variant;
15493   gint value = 0;
15494   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "debug_mode");
15495   if (variant != NULL)
15496     {
15497       value = g_variant_get_int32 (variant);
15498       g_variant_unref (variant);
15499     }
15500   return value;
15501 }
15502 
15503 static const gchar *
15504 control_host_proxy_get_flash_side (ControlHost *object)
15505 {
15506   ControlHostProxy *proxy = CONTROL_HOST_PROXY (object);
15507   GVariant *variant;
15508   const gchar *value = NULL;
15509   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "flash_side");
15510   if (variant != NULL)
15511     {
15512       value = g_variant_get_string (variant, NULL);
15513       g_variant_unref (variant);
15514     }
15515   return value;
15516 }
15517 
15518 static void
15519 control_host_proxy_init (ControlHostProxy *proxy)
15520 {
15521 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
15522   proxy->priv = control_host_proxy_get_instance_private (proxy);
15523 #else
15524   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_CONTROL_HOST_PROXY, ControlHostProxyPrivate);
15525 #endif
15526 
15527   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), control_host_interface_info ());
15528 }
15529 
15530 static void
15531 control_host_proxy_class_init (ControlHostProxyClass *klass)
15532 {
15533   GObjectClass *gobject_class;
15534   GDBusProxyClass *proxy_class;
15535 
15536   gobject_class = G_OBJECT_CLASS (klass);
15537   gobject_class->finalize     = control_host_proxy_finalize;
15538   gobject_class->get_property = control_host_proxy_get_property;
15539   gobject_class->set_property = control_host_proxy_set_property;
15540 
15541   proxy_class = G_DBUS_PROXY_CLASS (klass);
15542   proxy_class->g_signal = control_host_proxy_g_signal;
15543   proxy_class->g_properties_changed = control_host_proxy_g_properties_changed;
15544 
15545   control_host_override_properties (gobject_class, 1);
15546 
15547 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
15548   g_type_class_add_private (klass, sizeof (ControlHostProxyPrivate));
15549 #endif
15550 }
15551 
15552 static void
15553 control_host_proxy_iface_init (ControlHostIface *iface)
15554 {
15555   iface->get_debug_mode = control_host_proxy_get_debug_mode;
15556   iface->get_flash_side = control_host_proxy_get_flash_side;
15557 }
15558 
15559 /**
15560  * control_host_proxy_new:
15561  * @connection: A #GDBusConnection.
15562  * @flags: Flags from the #GDBusProxyFlags enumeration.
15563  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
15564  * @object_path: An object path.
15565  * @cancellable: (allow-none): A #GCancellable or %NULL.
15566  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
15567  * @user_data: User data to pass to @callback.
15568  *
15569  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Host.top_of_page">org.openbmc.control.Host</link>. See g_dbus_proxy_new() for more details.
15570  *
15571  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
15572  * You can then call control_host_proxy_new_finish() to get the result of the operation.
15573  *
15574  * See control_host_proxy_new_sync() for the synchronous, blocking version of this constructor.
15575  */
15576 void
15577 control_host_proxy_new (
15578     GDBusConnection     *connection,
15579     GDBusProxyFlags      flags,
15580     const gchar         *name,
15581     const gchar         *object_path,
15582     GCancellable        *cancellable,
15583     GAsyncReadyCallback  callback,
15584     gpointer             user_data)
15585 {
15586   g_async_initable_new_async (TYPE_CONTROL_HOST_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.openbmc.control.Host", NULL);
15587 }
15588 
15589 /**
15590  * control_host_proxy_new_finish:
15591  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_host_proxy_new().
15592  * @error: Return location for error or %NULL
15593  *
15594  * Finishes an operation started with control_host_proxy_new().
15595  *
15596  * Returns: (transfer full) (type ControlHostProxy): The constructed proxy object or %NULL if @error is set.
15597  */
15598 ControlHost *
15599 control_host_proxy_new_finish (
15600     GAsyncResult        *res,
15601     GError             **error)
15602 {
15603   GObject *ret;
15604   GObject *source_object;
15605   source_object = g_async_result_get_source_object (res);
15606   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
15607   g_object_unref (source_object);
15608   if (ret != NULL)
15609     return CONTROL_HOST (ret);
15610   else
15611     return NULL;
15612 }
15613 
15614 /**
15615  * control_host_proxy_new_sync:
15616  * @connection: A #GDBusConnection.
15617  * @flags: Flags from the #GDBusProxyFlags enumeration.
15618  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
15619  * @object_path: An object path.
15620  * @cancellable: (allow-none): A #GCancellable or %NULL.
15621  * @error: Return location for error or %NULL
15622  *
15623  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Host.top_of_page">org.openbmc.control.Host</link>. See g_dbus_proxy_new_sync() for more details.
15624  *
15625  * The calling thread is blocked until a reply is received.
15626  *
15627  * See control_host_proxy_new() for the asynchronous version of this constructor.
15628  *
15629  * Returns: (transfer full) (type ControlHostProxy): The constructed proxy object or %NULL if @error is set.
15630  */
15631 ControlHost *
15632 control_host_proxy_new_sync (
15633     GDBusConnection     *connection,
15634     GDBusProxyFlags      flags,
15635     const gchar         *name,
15636     const gchar         *object_path,
15637     GCancellable        *cancellable,
15638     GError             **error)
15639 {
15640   GInitable *ret;
15641   ret = g_initable_new (TYPE_CONTROL_HOST_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.control.Host", NULL);
15642   if (ret != NULL)
15643     return CONTROL_HOST (ret);
15644   else
15645     return NULL;
15646 }
15647 
15648 
15649 /**
15650  * control_host_proxy_new_for_bus:
15651  * @bus_type: A #GBusType.
15652  * @flags: Flags from the #GDBusProxyFlags enumeration.
15653  * @name: A bus name (well-known or unique).
15654  * @object_path: An object path.
15655  * @cancellable: (allow-none): A #GCancellable or %NULL.
15656  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
15657  * @user_data: User data to pass to @callback.
15658  *
15659  * Like control_host_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
15660  *
15661  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
15662  * You can then call control_host_proxy_new_for_bus_finish() to get the result of the operation.
15663  *
15664  * See control_host_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
15665  */
15666 void
15667 control_host_proxy_new_for_bus (
15668     GBusType             bus_type,
15669     GDBusProxyFlags      flags,
15670     const gchar         *name,
15671     const gchar         *object_path,
15672     GCancellable        *cancellable,
15673     GAsyncReadyCallback  callback,
15674     gpointer             user_data)
15675 {
15676   g_async_initable_new_async (TYPE_CONTROL_HOST_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.openbmc.control.Host", NULL);
15677 }
15678 
15679 /**
15680  * control_host_proxy_new_for_bus_finish:
15681  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_host_proxy_new_for_bus().
15682  * @error: Return location for error or %NULL
15683  *
15684  * Finishes an operation started with control_host_proxy_new_for_bus().
15685  *
15686  * Returns: (transfer full) (type ControlHostProxy): The constructed proxy object or %NULL if @error is set.
15687  */
15688 ControlHost *
15689 control_host_proxy_new_for_bus_finish (
15690     GAsyncResult        *res,
15691     GError             **error)
15692 {
15693   GObject *ret;
15694   GObject *source_object;
15695   source_object = g_async_result_get_source_object (res);
15696   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
15697   g_object_unref (source_object);
15698   if (ret != NULL)
15699     return CONTROL_HOST (ret);
15700   else
15701     return NULL;
15702 }
15703 
15704 /**
15705  * control_host_proxy_new_for_bus_sync:
15706  * @bus_type: A #GBusType.
15707  * @flags: Flags from the #GDBusProxyFlags enumeration.
15708  * @name: A bus name (well-known or unique).
15709  * @object_path: An object path.
15710  * @cancellable: (allow-none): A #GCancellable or %NULL.
15711  * @error: Return location for error or %NULL
15712  *
15713  * Like control_host_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
15714  *
15715  * The calling thread is blocked until a reply is received.
15716  *
15717  * See control_host_proxy_new_for_bus() for the asynchronous version of this constructor.
15718  *
15719  * Returns: (transfer full) (type ControlHostProxy): The constructed proxy object or %NULL if @error is set.
15720  */
15721 ControlHost *
15722 control_host_proxy_new_for_bus_sync (
15723     GBusType             bus_type,
15724     GDBusProxyFlags      flags,
15725     const gchar         *name,
15726     const gchar         *object_path,
15727     GCancellable        *cancellable,
15728     GError             **error)
15729 {
15730   GInitable *ret;
15731   ret = g_initable_new (TYPE_CONTROL_HOST_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.control.Host", NULL);
15732   if (ret != NULL)
15733     return CONTROL_HOST (ret);
15734   else
15735     return NULL;
15736 }
15737 
15738 
15739 /* ------------------------------------------------------------------------ */
15740 
15741 /**
15742  * ControlHostSkeleton:
15743  *
15744  * The #ControlHostSkeleton structure contains only private data and should only be accessed using the provided API.
15745  */
15746 
15747 /**
15748  * ControlHostSkeletonClass:
15749  * @parent_class: The parent class.
15750  *
15751  * Class structure for #ControlHostSkeleton.
15752  */
15753 
15754 struct _ControlHostSkeletonPrivate
15755 {
15756   GValue *properties;
15757   GList *changed_properties;
15758   GSource *changed_properties_idle_source;
15759   GMainContext *context;
15760   GMutex lock;
15761 };
15762 
15763 static void
15764 _control_host_skeleton_handle_method_call (
15765   GDBusConnection *connection G_GNUC_UNUSED,
15766   const gchar *sender G_GNUC_UNUSED,
15767   const gchar *object_path G_GNUC_UNUSED,
15768   const gchar *interface_name,
15769   const gchar *method_name,
15770   GVariant *parameters,
15771   GDBusMethodInvocation *invocation,
15772   gpointer user_data)
15773 {
15774   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (user_data);
15775   _ExtendedGDBusMethodInfo *info;
15776   GVariantIter iter;
15777   GVariant *child;
15778   GValue *paramv;
15779   guint num_params;
15780   guint num_extra;
15781   guint n;
15782   guint signal_id;
15783   GValue return_value = G_VALUE_INIT;
15784   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
15785   g_assert (info != NULL);
15786   num_params = g_variant_n_children (parameters);
15787   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
15788   n = 0;
15789   g_value_init (&paramv[n], TYPE_CONTROL_HOST);
15790   g_value_set_object (&paramv[n++], skeleton);
15791   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
15792   g_value_set_object (&paramv[n++], invocation);
15793   if (info->pass_fdlist)
15794     {
15795 #ifdef G_OS_UNIX
15796       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
15797       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
15798 #else
15799       g_assert_not_reached ();
15800 #endif
15801     }
15802   g_variant_iter_init (&iter, parameters);
15803   while ((child = g_variant_iter_next_value (&iter)) != NULL)
15804     {
15805       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
15806       if (arg_info->use_gvariant)
15807         {
15808           g_value_init (&paramv[n], G_TYPE_VARIANT);
15809           g_value_set_variant (&paramv[n], child);
15810           n++;
15811         }
15812       else
15813         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
15814       g_variant_unref (child);
15815     }
15816   signal_id = g_signal_lookup (info->signal_name, TYPE_CONTROL_HOST);
15817   g_value_init (&return_value, G_TYPE_BOOLEAN);
15818   g_signal_emitv (paramv, signal_id, 0, &return_value);
15819   if (!g_value_get_boolean (&return_value))
15820     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);
15821   g_value_unset (&return_value);
15822   for (n = 0; n < num_params + num_extra; n++)
15823     g_value_unset (&paramv[n]);
15824   g_free (paramv);
15825 }
15826 
15827 static GVariant *
15828 _control_host_skeleton_handle_get_property (
15829   GDBusConnection *connection G_GNUC_UNUSED,
15830   const gchar *sender G_GNUC_UNUSED,
15831   const gchar *object_path G_GNUC_UNUSED,
15832   const gchar *interface_name G_GNUC_UNUSED,
15833   const gchar *property_name,
15834   GError **error,
15835   gpointer user_data)
15836 {
15837   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (user_data);
15838   GValue value = G_VALUE_INIT;
15839   GParamSpec *pspec;
15840   _ExtendedGDBusPropertyInfo *info;
15841   GVariant *ret;
15842   ret = NULL;
15843   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_host_interface_info.parent_struct, property_name);
15844   g_assert (info != NULL);
15845   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
15846   if (pspec == NULL)
15847     {
15848       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
15849     }
15850   else
15851     {
15852       g_value_init (&value, pspec->value_type);
15853       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
15854       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
15855       g_value_unset (&value);
15856     }
15857   return ret;
15858 }
15859 
15860 static gboolean
15861 _control_host_skeleton_handle_set_property (
15862   GDBusConnection *connection G_GNUC_UNUSED,
15863   const gchar *sender G_GNUC_UNUSED,
15864   const gchar *object_path G_GNUC_UNUSED,
15865   const gchar *interface_name G_GNUC_UNUSED,
15866   const gchar *property_name,
15867   GVariant *variant,
15868   GError **error,
15869   gpointer user_data)
15870 {
15871   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (user_data);
15872   GValue value = G_VALUE_INIT;
15873   GParamSpec *pspec;
15874   _ExtendedGDBusPropertyInfo *info;
15875   gboolean ret;
15876   ret = FALSE;
15877   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_host_interface_info.parent_struct, property_name);
15878   g_assert (info != NULL);
15879   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
15880   if (pspec == NULL)
15881     {
15882       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
15883     }
15884   else
15885     {
15886       if (info->use_gvariant)
15887         g_value_set_variant (&value, variant);
15888       else
15889         g_dbus_gvariant_to_gvalue (variant, &value);
15890       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
15891       g_value_unset (&value);
15892       ret = TRUE;
15893     }
15894   return ret;
15895 }
15896 
15897 static const GDBusInterfaceVTable _control_host_skeleton_vtable =
15898 {
15899   _control_host_skeleton_handle_method_call,
15900   _control_host_skeleton_handle_get_property,
15901   _control_host_skeleton_handle_set_property,
15902   {NULL}
15903 };
15904 
15905 static GDBusInterfaceInfo *
15906 control_host_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
15907 {
15908   return control_host_interface_info ();
15909 }
15910 
15911 static GDBusInterfaceVTable *
15912 control_host_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
15913 {
15914   return (GDBusInterfaceVTable *) &_control_host_skeleton_vtable;
15915 }
15916 
15917 static GVariant *
15918 control_host_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
15919 {
15920   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (_skeleton);
15921 
15922   GVariantBuilder builder;
15923   guint n;
15924   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
15925   if (_control_host_interface_info.parent_struct.properties == NULL)
15926     goto out;
15927   for (n = 0; _control_host_interface_info.parent_struct.properties[n] != NULL; n++)
15928     {
15929       GDBusPropertyInfo *info = _control_host_interface_info.parent_struct.properties[n];
15930       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
15931         {
15932           GVariant *value;
15933           value = _control_host_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.openbmc.control.Host", info->name, NULL, skeleton);
15934           if (value != NULL)
15935             {
15936               g_variant_take_ref (value);
15937               g_variant_builder_add (&builder, "{sv}", info->name, value);
15938               g_variant_unref (value);
15939             }
15940         }
15941     }
15942 out:
15943   return g_variant_builder_end (&builder);
15944 }
15945 
15946 static gboolean _control_host_emit_changed (gpointer user_data);
15947 
15948 static void
15949 control_host_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
15950 {
15951   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (_skeleton);
15952   gboolean emit_changed = FALSE;
15953 
15954   g_mutex_lock (&skeleton->priv->lock);
15955   if (skeleton->priv->changed_properties_idle_source != NULL)
15956     {
15957       g_source_destroy (skeleton->priv->changed_properties_idle_source);
15958       skeleton->priv->changed_properties_idle_source = NULL;
15959       emit_changed = TRUE;
15960     }
15961   g_mutex_unlock (&skeleton->priv->lock);
15962 
15963   if (emit_changed)
15964     _control_host_emit_changed (skeleton);
15965 }
15966 
15967 static void
15968 _control_host_on_signal_booted (
15969     ControlHost *object)
15970 {
15971   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (object);
15972 
15973   GList      *connections, *l;
15974   GVariant   *signal_variant;
15975   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
15976 
15977   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
15978   for (l = connections; l != NULL; l = l->next)
15979     {
15980       GDBusConnection *connection = l->data;
15981       g_dbus_connection_emit_signal (connection,
15982         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.control.Host", "Booted",
15983         signal_variant, NULL);
15984     }
15985   g_variant_unref (signal_variant);
15986   g_list_free_full (connections, g_object_unref);
15987 }
15988 
15989 static void control_host_skeleton_iface_init (ControlHostIface *iface);
15990 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
15991 G_DEFINE_TYPE_WITH_CODE (ControlHostSkeleton, control_host_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
15992                          G_ADD_PRIVATE (ControlHostSkeleton)
15993                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_HOST, control_host_skeleton_iface_init));
15994 
15995 #else
15996 G_DEFINE_TYPE_WITH_CODE (ControlHostSkeleton, control_host_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
15997                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_HOST, control_host_skeleton_iface_init));
15998 
15999 #endif
16000 static void
16001 control_host_skeleton_finalize (GObject *object)
16002 {
16003   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (object);
16004   guint n;
16005   for (n = 0; n < 2; n++)
16006     g_value_unset (&skeleton->priv->properties[n]);
16007   g_free (skeleton->priv->properties);
16008   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
16009   if (skeleton->priv->changed_properties_idle_source != NULL)
16010     g_source_destroy (skeleton->priv->changed_properties_idle_source);
16011   g_main_context_unref (skeleton->priv->context);
16012   g_mutex_clear (&skeleton->priv->lock);
16013   G_OBJECT_CLASS (control_host_skeleton_parent_class)->finalize (object);
16014 }
16015 
16016 static void
16017 control_host_skeleton_get_property (GObject      *object,
16018   guint         prop_id,
16019   GValue       *value,
16020   GParamSpec   *pspec G_GNUC_UNUSED)
16021 {
16022   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (object);
16023   g_assert (prop_id != 0 && prop_id - 1 < 2);
16024   g_mutex_lock (&skeleton->priv->lock);
16025   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
16026   g_mutex_unlock (&skeleton->priv->lock);
16027 }
16028 
16029 static gboolean
16030 _control_host_emit_changed (gpointer user_data)
16031 {
16032   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (user_data);
16033   GList *l;
16034   GVariantBuilder builder;
16035   GVariantBuilder invalidated_builder;
16036   guint num_changes;
16037 
16038   g_mutex_lock (&skeleton->priv->lock);
16039   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
16040   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
16041   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
16042     {
16043       ChangedProperty *cp = l->data;
16044       GVariant *variant;
16045       const GValue *cur_value;
16046 
16047       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
16048       if (!_g_value_equal (cur_value, &cp->orig_value))
16049         {
16050           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
16051           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
16052           g_variant_unref (variant);
16053           num_changes++;
16054         }
16055     }
16056   if (num_changes > 0)
16057     {
16058       GList *connections, *ll;
16059       GVariant *signal_variant;
16060       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.control.Host",
16061                                            &builder, &invalidated_builder));
16062       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
16063       for (ll = connections; ll != NULL; ll = ll->next)
16064         {
16065           GDBusConnection *connection = ll->data;
16066 
16067           g_dbus_connection_emit_signal (connection,
16068                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
16069                                          "org.freedesktop.DBus.Properties",
16070                                          "PropertiesChanged",
16071                                          signal_variant,
16072                                          NULL);
16073         }
16074       g_variant_unref (signal_variant);
16075       g_list_free_full (connections, g_object_unref);
16076     }
16077   else
16078     {
16079       g_variant_builder_clear (&builder);
16080       g_variant_builder_clear (&invalidated_builder);
16081     }
16082   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
16083   skeleton->priv->changed_properties = NULL;
16084   skeleton->priv->changed_properties_idle_source = NULL;
16085   g_mutex_unlock (&skeleton->priv->lock);
16086   return FALSE;
16087 }
16088 
16089 static void
16090 _control_host_schedule_emit_changed (ControlHostSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
16091 {
16092   ChangedProperty *cp;
16093   GList *l;
16094   cp = NULL;
16095   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
16096     {
16097       ChangedProperty *i_cp = l->data;
16098       if (i_cp->info == info)
16099         {
16100           cp = i_cp;
16101           break;
16102         }
16103     }
16104   if (cp == NULL)
16105     {
16106       cp = g_new0 (ChangedProperty, 1);
16107       cp->prop_id = prop_id;
16108       cp->info = info;
16109       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
16110       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
16111       g_value_copy (orig_value, &cp->orig_value);
16112     }
16113 }
16114 
16115 static void
16116 control_host_skeleton_notify (GObject      *object,
16117   GParamSpec *pspec G_GNUC_UNUSED)
16118 {
16119   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (object);
16120   g_mutex_lock (&skeleton->priv->lock);
16121   if (skeleton->priv->changed_properties != NULL &&
16122       skeleton->priv->changed_properties_idle_source == NULL)
16123     {
16124       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
16125       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
16126       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_host_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
16127       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
16128       g_source_unref (skeleton->priv->changed_properties_idle_source);
16129     }
16130   g_mutex_unlock (&skeleton->priv->lock);
16131 }
16132 
16133 static void
16134 control_host_skeleton_set_property (GObject      *object,
16135   guint         prop_id,
16136   const GValue *value,
16137   GParamSpec   *pspec)
16138 {
16139   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (object);
16140   g_assert (prop_id != 0 && prop_id - 1 < 2);
16141   g_mutex_lock (&skeleton->priv->lock);
16142   g_object_freeze_notify (object);
16143   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
16144     {
16145       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
16146         _control_host_schedule_emit_changed (skeleton, _control_host_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
16147       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
16148       g_object_notify_by_pspec (object, pspec);
16149     }
16150   g_mutex_unlock (&skeleton->priv->lock);
16151   g_object_thaw_notify (object);
16152 }
16153 
16154 static void
16155 control_host_skeleton_init (ControlHostSkeleton *skeleton)
16156 {
16157 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
16158   skeleton->priv = control_host_skeleton_get_instance_private (skeleton);
16159 #else
16160   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_CONTROL_HOST_SKELETON, ControlHostSkeletonPrivate);
16161 #endif
16162 
16163   g_mutex_init (&skeleton->priv->lock);
16164   skeleton->priv->context = g_main_context_ref_thread_default ();
16165   skeleton->priv->properties = g_new0 (GValue, 2);
16166   g_value_init (&skeleton->priv->properties[0], G_TYPE_INT);
16167   g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING);
16168 }
16169 
16170 static gint
16171 control_host_skeleton_get_debug_mode (ControlHost *object)
16172 {
16173   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (object);
16174   gint value;
16175   g_mutex_lock (&skeleton->priv->lock);
16176   value = g_value_get_int (&(skeleton->priv->properties[0]));
16177   g_mutex_unlock (&skeleton->priv->lock);
16178   return value;
16179 }
16180 
16181 static const gchar *
16182 control_host_skeleton_get_flash_side (ControlHost *object)
16183 {
16184   ControlHostSkeleton *skeleton = CONTROL_HOST_SKELETON (object);
16185   const gchar *value;
16186   g_mutex_lock (&skeleton->priv->lock);
16187   value = g_value_get_string (&(skeleton->priv->properties[1]));
16188   g_mutex_unlock (&skeleton->priv->lock);
16189   return value;
16190 }
16191 
16192 static void
16193 control_host_skeleton_class_init (ControlHostSkeletonClass *klass)
16194 {
16195   GObjectClass *gobject_class;
16196   GDBusInterfaceSkeletonClass *skeleton_class;
16197 
16198   gobject_class = G_OBJECT_CLASS (klass);
16199   gobject_class->finalize = control_host_skeleton_finalize;
16200   gobject_class->get_property = control_host_skeleton_get_property;
16201   gobject_class->set_property = control_host_skeleton_set_property;
16202   gobject_class->notify       = control_host_skeleton_notify;
16203 
16204 
16205   control_host_override_properties (gobject_class, 1);
16206 
16207   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
16208   skeleton_class->get_info = control_host_skeleton_dbus_interface_get_info;
16209   skeleton_class->get_properties = control_host_skeleton_dbus_interface_get_properties;
16210   skeleton_class->flush = control_host_skeleton_dbus_interface_flush;
16211   skeleton_class->get_vtable = control_host_skeleton_dbus_interface_get_vtable;
16212 
16213 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
16214   g_type_class_add_private (klass, sizeof (ControlHostSkeletonPrivate));
16215 #endif
16216 }
16217 
16218 static void
16219 control_host_skeleton_iface_init (ControlHostIface *iface)
16220 {
16221   iface->booted = _control_host_on_signal_booted;
16222   iface->get_debug_mode = control_host_skeleton_get_debug_mode;
16223   iface->get_flash_side = control_host_skeleton_get_flash_side;
16224 }
16225 
16226 /**
16227  * control_host_skeleton_new:
16228  *
16229  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Host.top_of_page">org.openbmc.control.Host</link>.
16230  *
16231  * Returns: (transfer full) (type ControlHostSkeleton): The skeleton object.
16232  */
16233 ControlHost *
16234 control_host_skeleton_new (void)
16235 {
16236   return CONTROL_HOST (g_object_new (TYPE_CONTROL_HOST_SKELETON, NULL));
16237 }
16238 
16239 /* ------------------------------------------------------------------------
16240  * Code for interface org.openbmc.control.Power
16241  * ------------------------------------------------------------------------
16242  */
16243 
16244 /**
16245  * SECTION:ControlPower
16246  * @title: ControlPower
16247  * @short_description: Generated C code for the org.openbmc.control.Power D-Bus interface
16248  *
16249  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-control-Power.top_of_page">org.openbmc.control.Power</link> D-Bus interface in C.
16250  */
16251 
16252 /* ---- Introspection data for org.openbmc.control.Power ---- */
16253 
16254 static const _ExtendedGDBusArgInfo _control_power_method_info_set_power_state_IN_ARG_state =
16255 {
16256   {
16257     -1,
16258     (gchar *) "state",
16259     (gchar *) "i",
16260     NULL
16261   },
16262   FALSE
16263 };
16264 
16265 static const _ExtendedGDBusArgInfo * const _control_power_method_info_set_power_state_IN_ARG_pointers[] =
16266 {
16267   &_control_power_method_info_set_power_state_IN_ARG_state,
16268   NULL
16269 };
16270 
16271 static const _ExtendedGDBusMethodInfo _control_power_method_info_set_power_state =
16272 {
16273   {
16274     -1,
16275     (gchar *) "setPowerState",
16276     (GDBusArgInfo **) &_control_power_method_info_set_power_state_IN_ARG_pointers,
16277     NULL,
16278     NULL
16279   },
16280   "handle-set-power-state",
16281   FALSE
16282 };
16283 
16284 static const _ExtendedGDBusArgInfo _control_power_method_info_get_power_state_OUT_ARG_state =
16285 {
16286   {
16287     -1,
16288     (gchar *) "state",
16289     (gchar *) "i",
16290     NULL
16291   },
16292   FALSE
16293 };
16294 
16295 static const _ExtendedGDBusArgInfo * const _control_power_method_info_get_power_state_OUT_ARG_pointers[] =
16296 {
16297   &_control_power_method_info_get_power_state_OUT_ARG_state,
16298   NULL
16299 };
16300 
16301 static const _ExtendedGDBusMethodInfo _control_power_method_info_get_power_state =
16302 {
16303   {
16304     -1,
16305     (gchar *) "getPowerState",
16306     NULL,
16307     (GDBusArgInfo **) &_control_power_method_info_get_power_state_OUT_ARG_pointers,
16308     NULL
16309   },
16310   "handle-get-power-state",
16311   FALSE
16312 };
16313 
16314 static const _ExtendedGDBusMethodInfo * const _control_power_method_info_pointers[] =
16315 {
16316   &_control_power_method_info_set_power_state,
16317   &_control_power_method_info_get_power_state,
16318   NULL
16319 };
16320 
16321 static const _ExtendedGDBusSignalInfo _control_power_signal_info_power_good =
16322 {
16323   {
16324     -1,
16325     (gchar *) "PowerGood",
16326     NULL,
16327     NULL
16328   },
16329   "power-good"
16330 };
16331 
16332 static const _ExtendedGDBusSignalInfo _control_power_signal_info_power_lost =
16333 {
16334   {
16335     -1,
16336     (gchar *) "PowerLost",
16337     NULL,
16338     NULL
16339   },
16340   "power-lost"
16341 };
16342 
16343 static const _ExtendedGDBusSignalInfo * const _control_power_signal_info_pointers[] =
16344 {
16345   &_control_power_signal_info_power_good,
16346   &_control_power_signal_info_power_lost,
16347   NULL
16348 };
16349 
16350 static const _ExtendedGDBusPropertyInfo _control_power_property_info_pgood =
16351 {
16352   {
16353     -1,
16354     (gchar *) "pgood",
16355     (gchar *) "i",
16356     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
16357     NULL
16358   },
16359   "pgood",
16360   FALSE
16361 };
16362 
16363 static const _ExtendedGDBusPropertyInfo _control_power_property_info_state =
16364 {
16365   {
16366     -1,
16367     (gchar *) "state",
16368     (gchar *) "i",
16369     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
16370     NULL
16371   },
16372   "state",
16373   FALSE
16374 };
16375 
16376 static const _ExtendedGDBusPropertyInfo _control_power_property_info_pgood_timeout =
16377 {
16378   {
16379     -1,
16380     (gchar *) "pgood_timeout",
16381     (gchar *) "i",
16382     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
16383     NULL
16384   },
16385   "pgood-timeout",
16386   FALSE
16387 };
16388 
16389 static const _ExtendedGDBusPropertyInfo * const _control_power_property_info_pointers[] =
16390 {
16391   &_control_power_property_info_pgood,
16392   &_control_power_property_info_state,
16393   &_control_power_property_info_pgood_timeout,
16394   NULL
16395 };
16396 
16397 static const _ExtendedGDBusInterfaceInfo _control_power_interface_info =
16398 {
16399   {
16400     -1,
16401     (gchar *) "org.openbmc.control.Power",
16402     (GDBusMethodInfo **) &_control_power_method_info_pointers,
16403     (GDBusSignalInfo **) &_control_power_signal_info_pointers,
16404     (GDBusPropertyInfo **) &_control_power_property_info_pointers,
16405     NULL
16406   },
16407   "control-power",
16408 };
16409 
16410 
16411 /**
16412  * control_power_interface_info:
16413  *
16414  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-control-Power.top_of_page">org.openbmc.control.Power</link> D-Bus interface.
16415  *
16416  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
16417  */
16418 GDBusInterfaceInfo *
16419 control_power_interface_info (void)
16420 {
16421   return (GDBusInterfaceInfo *) &_control_power_interface_info.parent_struct;
16422 }
16423 
16424 /**
16425  * control_power_override_properties:
16426  * @klass: The class structure for a #GObject<!-- -->-derived class.
16427  * @property_id_begin: The property id to assign to the first overridden property.
16428  *
16429  * Overrides all #GObject properties in the #ControlPower interface for a concrete class.
16430  * The properties are overridden in the order they are defined.
16431  *
16432  * Returns: The last property id.
16433  */
16434 guint
16435 control_power_override_properties (GObjectClass *klass, guint property_id_begin)
16436 {
16437   g_object_class_override_property (klass, property_id_begin++, "pgood");
16438   g_object_class_override_property (klass, property_id_begin++, "state");
16439   g_object_class_override_property (klass, property_id_begin++, "pgood-timeout");
16440   return property_id_begin - 1;
16441 }
16442 
16443 
16444 
16445 /**
16446  * ControlPower:
16447  *
16448  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Power.top_of_page">org.openbmc.control.Power</link>.
16449  */
16450 
16451 /**
16452  * ControlPowerIface:
16453  * @parent_iface: The parent interface.
16454  * @handle_get_power_state: Handler for the #ControlPower::handle-get-power-state signal.
16455  * @handle_set_power_state: Handler for the #ControlPower::handle-set-power-state signal.
16456  * @get_pgood: Getter for the #ControlPower:pgood property.
16457  * @get_pgood_timeout: Getter for the #ControlPower:pgood-timeout property.
16458  * @get_state: Getter for the #ControlPower:state property.
16459  * @power_good: Handler for the #ControlPower::power-good signal.
16460  * @power_lost: Handler for the #ControlPower::power-lost signal.
16461  *
16462  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Power.top_of_page">org.openbmc.control.Power</link>.
16463  */
16464 
16465 typedef ControlPowerIface ControlPowerInterface;
16466 G_DEFINE_INTERFACE (ControlPower, control_power, G_TYPE_OBJECT);
16467 
16468 static void
16469 control_power_default_init (ControlPowerIface *iface)
16470 {
16471   /* GObject signals for incoming D-Bus method calls: */
16472   /**
16473    * ControlPower::handle-set-power-state:
16474    * @object: A #ControlPower.
16475    * @invocation: A #GDBusMethodInvocation.
16476    * @arg_state: Argument passed by remote caller.
16477    *
16478    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-control-Power.setPowerState">setPowerState()</link> D-Bus method.
16479    *
16480    * 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 control_power_complete_set_power_state() 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.
16481    *
16482    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
16483    */
16484   g_signal_new ("handle-set-power-state",
16485     G_TYPE_FROM_INTERFACE (iface),
16486     G_SIGNAL_RUN_LAST,
16487     G_STRUCT_OFFSET (ControlPowerIface, handle_set_power_state),
16488     g_signal_accumulator_true_handled,
16489     NULL,
16490     g_cclosure_marshal_generic,
16491     G_TYPE_BOOLEAN,
16492     2,
16493     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_INT);
16494 
16495   /**
16496    * ControlPower::handle-get-power-state:
16497    * @object: A #ControlPower.
16498    * @invocation: A #GDBusMethodInvocation.
16499    *
16500    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-control-Power.getPowerState">getPowerState()</link> D-Bus method.
16501    *
16502    * 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 control_power_complete_get_power_state() 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.
16503    *
16504    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
16505    */
16506   g_signal_new ("handle-get-power-state",
16507     G_TYPE_FROM_INTERFACE (iface),
16508     G_SIGNAL_RUN_LAST,
16509     G_STRUCT_OFFSET (ControlPowerIface, handle_get_power_state),
16510     g_signal_accumulator_true_handled,
16511     NULL,
16512     g_cclosure_marshal_generic,
16513     G_TYPE_BOOLEAN,
16514     1,
16515     G_TYPE_DBUS_METHOD_INVOCATION);
16516 
16517   /* GObject signals for received D-Bus signals: */
16518   /**
16519    * ControlPower::power-good:
16520    * @object: A #ControlPower.
16521    *
16522    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-control-Power.PowerGood">"PowerGood"</link> is received.
16523    *
16524    * 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.
16525    */
16526   g_signal_new ("power-good",
16527     G_TYPE_FROM_INTERFACE (iface),
16528     G_SIGNAL_RUN_LAST,
16529     G_STRUCT_OFFSET (ControlPowerIface, power_good),
16530     NULL,
16531     NULL,
16532     g_cclosure_marshal_generic,
16533     G_TYPE_NONE,
16534     0);
16535 
16536   /**
16537    * ControlPower::power-lost:
16538    * @object: A #ControlPower.
16539    *
16540    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-control-Power.PowerLost">"PowerLost"</link> is received.
16541    *
16542    * 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.
16543    */
16544   g_signal_new ("power-lost",
16545     G_TYPE_FROM_INTERFACE (iface),
16546     G_SIGNAL_RUN_LAST,
16547     G_STRUCT_OFFSET (ControlPowerIface, power_lost),
16548     NULL,
16549     NULL,
16550     g_cclosure_marshal_generic,
16551     G_TYPE_NONE,
16552     0);
16553 
16554   /* GObject properties for D-Bus properties: */
16555   /**
16556    * ControlPower:pgood:
16557    *
16558    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-control-Power.pgood">"pgood"</link>.
16559    *
16560    * 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.
16561    */
16562   g_object_interface_install_property (iface,
16563     g_param_spec_int ("pgood", "pgood", "pgood", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
16564   /**
16565    * ControlPower:state:
16566    *
16567    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-control-Power.state">"state"</link>.
16568    *
16569    * 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.
16570    */
16571   g_object_interface_install_property (iface,
16572     g_param_spec_int ("state", "state", "state", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
16573   /**
16574    * ControlPower:pgood-timeout:
16575    *
16576    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-control-Power.pgood_timeout">"pgood_timeout"</link>.
16577    *
16578    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
16579    */
16580   g_object_interface_install_property (iface,
16581     g_param_spec_int ("pgood-timeout", "pgood_timeout", "pgood_timeout", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
16582 }
16583 
16584 /**
16585  * control_power_get_pgood: (skip)
16586  * @object: A #ControlPower.
16587  *
16588  * Gets the value of the <link linkend="gdbus-property-org-openbmc-control-Power.pgood">"pgood"</link> D-Bus property.
16589  *
16590  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
16591  *
16592  * Returns: The property value.
16593  */
16594 gint
16595 control_power_get_pgood (ControlPower *object)
16596 {
16597   return CONTROL_POWER_GET_IFACE (object)->get_pgood (object);
16598 }
16599 
16600 /**
16601  * control_power_set_pgood: (skip)
16602  * @object: A #ControlPower.
16603  * @value: The value to set.
16604  *
16605  * Sets the <link linkend="gdbus-property-org-openbmc-control-Power.pgood">"pgood"</link> D-Bus property to @value.
16606  *
16607  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
16608  */
16609 void
16610 control_power_set_pgood (ControlPower *object, gint value)
16611 {
16612   g_object_set (G_OBJECT (object), "pgood", value, NULL);
16613 }
16614 
16615 /**
16616  * control_power_get_state: (skip)
16617  * @object: A #ControlPower.
16618  *
16619  * Gets the value of the <link linkend="gdbus-property-org-openbmc-control-Power.state">"state"</link> D-Bus property.
16620  *
16621  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
16622  *
16623  * Returns: The property value.
16624  */
16625 gint
16626 control_power_get_state (ControlPower *object)
16627 {
16628   return CONTROL_POWER_GET_IFACE (object)->get_state (object);
16629 }
16630 
16631 /**
16632  * control_power_set_state: (skip)
16633  * @object: A #ControlPower.
16634  * @value: The value to set.
16635  *
16636  * Sets the <link linkend="gdbus-property-org-openbmc-control-Power.state">"state"</link> D-Bus property to @value.
16637  *
16638  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
16639  */
16640 void
16641 control_power_set_state (ControlPower *object, gint value)
16642 {
16643   g_object_set (G_OBJECT (object), "state", value, NULL);
16644 }
16645 
16646 /**
16647  * control_power_get_pgood_timeout: (skip)
16648  * @object: A #ControlPower.
16649  *
16650  * Gets the value of the <link linkend="gdbus-property-org-openbmc-control-Power.pgood_timeout">"pgood_timeout"</link> D-Bus property.
16651  *
16652  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
16653  *
16654  * Returns: The property value.
16655  */
16656 gint
16657 control_power_get_pgood_timeout (ControlPower *object)
16658 {
16659   return CONTROL_POWER_GET_IFACE (object)->get_pgood_timeout (object);
16660 }
16661 
16662 /**
16663  * control_power_set_pgood_timeout: (skip)
16664  * @object: A #ControlPower.
16665  * @value: The value to set.
16666  *
16667  * Sets the <link linkend="gdbus-property-org-openbmc-control-Power.pgood_timeout">"pgood_timeout"</link> D-Bus property to @value.
16668  *
16669  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
16670  */
16671 void
16672 control_power_set_pgood_timeout (ControlPower *object, gint value)
16673 {
16674   g_object_set (G_OBJECT (object), "pgood-timeout", value, NULL);
16675 }
16676 
16677 /**
16678  * control_power_emit_power_good:
16679  * @object: A #ControlPower.
16680  *
16681  * Emits the <link linkend="gdbus-signal-org-openbmc-control-Power.PowerGood">"PowerGood"</link> D-Bus signal.
16682  */
16683 void
16684 control_power_emit_power_good (
16685     ControlPower *object)
16686 {
16687   g_signal_emit_by_name (object, "power-good");
16688 }
16689 
16690 /**
16691  * control_power_emit_power_lost:
16692  * @object: A #ControlPower.
16693  *
16694  * Emits the <link linkend="gdbus-signal-org-openbmc-control-Power.PowerLost">"PowerLost"</link> D-Bus signal.
16695  */
16696 void
16697 control_power_emit_power_lost (
16698     ControlPower *object)
16699 {
16700   g_signal_emit_by_name (object, "power-lost");
16701 }
16702 
16703 /**
16704  * control_power_call_set_power_state:
16705  * @proxy: A #ControlPowerProxy.
16706  * @arg_state: Argument to pass with the method invocation.
16707  * @cancellable: (allow-none): A #GCancellable or %NULL.
16708  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
16709  * @user_data: User data to pass to @callback.
16710  *
16711  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Power.setPowerState">setPowerState()</link> D-Bus method on @proxy.
16712  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
16713  * You can then call control_power_call_set_power_state_finish() to get the result of the operation.
16714  *
16715  * See control_power_call_set_power_state_sync() for the synchronous, blocking version of this method.
16716  */
16717 void
16718 control_power_call_set_power_state (
16719     ControlPower *proxy,
16720     gint arg_state,
16721     GCancellable *cancellable,
16722     GAsyncReadyCallback callback,
16723     gpointer user_data)
16724 {
16725   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
16726     "setPowerState",
16727     g_variant_new ("(i)",
16728                    arg_state),
16729     G_DBUS_CALL_FLAGS_NONE,
16730     -1,
16731     cancellable,
16732     callback,
16733     user_data);
16734 }
16735 
16736 /**
16737  * control_power_call_set_power_state_finish:
16738  * @proxy: A #ControlPowerProxy.
16739  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_power_call_set_power_state().
16740  * @error: Return location for error or %NULL.
16741  *
16742  * Finishes an operation started with control_power_call_set_power_state().
16743  *
16744  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
16745  */
16746 gboolean
16747 control_power_call_set_power_state_finish (
16748     ControlPower *proxy,
16749     GAsyncResult *res,
16750     GError **error)
16751 {
16752   GVariant *_ret;
16753   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
16754   if (_ret == NULL)
16755     goto _out;
16756   g_variant_get (_ret,
16757                  "()");
16758   g_variant_unref (_ret);
16759 _out:
16760   return _ret != NULL;
16761 }
16762 
16763 /**
16764  * control_power_call_set_power_state_sync:
16765  * @proxy: A #ControlPowerProxy.
16766  * @arg_state: Argument to pass with the method invocation.
16767  * @cancellable: (allow-none): A #GCancellable or %NULL.
16768  * @error: Return location for error or %NULL.
16769  *
16770  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Power.setPowerState">setPowerState()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
16771  *
16772  * See control_power_call_set_power_state() for the asynchronous version of this method.
16773  *
16774  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
16775  */
16776 gboolean
16777 control_power_call_set_power_state_sync (
16778     ControlPower *proxy,
16779     gint arg_state,
16780     GCancellable *cancellable,
16781     GError **error)
16782 {
16783   GVariant *_ret;
16784   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
16785     "setPowerState",
16786     g_variant_new ("(i)",
16787                    arg_state),
16788     G_DBUS_CALL_FLAGS_NONE,
16789     -1,
16790     cancellable,
16791     error);
16792   if (_ret == NULL)
16793     goto _out;
16794   g_variant_get (_ret,
16795                  "()");
16796   g_variant_unref (_ret);
16797 _out:
16798   return _ret != NULL;
16799 }
16800 
16801 /**
16802  * control_power_call_get_power_state:
16803  * @proxy: A #ControlPowerProxy.
16804  * @cancellable: (allow-none): A #GCancellable or %NULL.
16805  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
16806  * @user_data: User data to pass to @callback.
16807  *
16808  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Power.getPowerState">getPowerState()</link> D-Bus method on @proxy.
16809  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
16810  * You can then call control_power_call_get_power_state_finish() to get the result of the operation.
16811  *
16812  * See control_power_call_get_power_state_sync() for the synchronous, blocking version of this method.
16813  */
16814 void
16815 control_power_call_get_power_state (
16816     ControlPower *proxy,
16817     GCancellable *cancellable,
16818     GAsyncReadyCallback callback,
16819     gpointer user_data)
16820 {
16821   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
16822     "getPowerState",
16823     g_variant_new ("()"),
16824     G_DBUS_CALL_FLAGS_NONE,
16825     -1,
16826     cancellable,
16827     callback,
16828     user_data);
16829 }
16830 
16831 /**
16832  * control_power_call_get_power_state_finish:
16833  * @proxy: A #ControlPowerProxy.
16834  * @out_state: (out): Return location for return parameter or %NULL to ignore.
16835  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_power_call_get_power_state().
16836  * @error: Return location for error or %NULL.
16837  *
16838  * Finishes an operation started with control_power_call_get_power_state().
16839  *
16840  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
16841  */
16842 gboolean
16843 control_power_call_get_power_state_finish (
16844     ControlPower *proxy,
16845     gint *out_state,
16846     GAsyncResult *res,
16847     GError **error)
16848 {
16849   GVariant *_ret;
16850   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
16851   if (_ret == NULL)
16852     goto _out;
16853   g_variant_get (_ret,
16854                  "(i)",
16855                  out_state);
16856   g_variant_unref (_ret);
16857 _out:
16858   return _ret != NULL;
16859 }
16860 
16861 /**
16862  * control_power_call_get_power_state_sync:
16863  * @proxy: A #ControlPowerProxy.
16864  * @out_state: (out): Return location for return parameter or %NULL to ignore.
16865  * @cancellable: (allow-none): A #GCancellable or %NULL.
16866  * @error: Return location for error or %NULL.
16867  *
16868  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Power.getPowerState">getPowerState()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
16869  *
16870  * See control_power_call_get_power_state() for the asynchronous version of this method.
16871  *
16872  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
16873  */
16874 gboolean
16875 control_power_call_get_power_state_sync (
16876     ControlPower *proxy,
16877     gint *out_state,
16878     GCancellable *cancellable,
16879     GError **error)
16880 {
16881   GVariant *_ret;
16882   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
16883     "getPowerState",
16884     g_variant_new ("()"),
16885     G_DBUS_CALL_FLAGS_NONE,
16886     -1,
16887     cancellable,
16888     error);
16889   if (_ret == NULL)
16890     goto _out;
16891   g_variant_get (_ret,
16892                  "(i)",
16893                  out_state);
16894   g_variant_unref (_ret);
16895 _out:
16896   return _ret != NULL;
16897 }
16898 
16899 /**
16900  * control_power_complete_set_power_state:
16901  * @object: A #ControlPower.
16902  * @invocation: (transfer full): A #GDBusMethodInvocation.
16903  *
16904  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-control-Power.setPowerState">setPowerState()</link> 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.
16905  *
16906  * This method will free @invocation, you cannot use it afterwards.
16907  */
16908 void
16909 control_power_complete_set_power_state (
16910     ControlPower *object,
16911     GDBusMethodInvocation *invocation)
16912 {
16913   g_dbus_method_invocation_return_value (invocation,
16914     g_variant_new ("()"));
16915 }
16916 
16917 /**
16918  * control_power_complete_get_power_state:
16919  * @object: A #ControlPower.
16920  * @invocation: (transfer full): A #GDBusMethodInvocation.
16921  * @state: Parameter to return.
16922  *
16923  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-control-Power.getPowerState">getPowerState()</link> 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.
16924  *
16925  * This method will free @invocation, you cannot use it afterwards.
16926  */
16927 void
16928 control_power_complete_get_power_state (
16929     ControlPower *object,
16930     GDBusMethodInvocation *invocation,
16931     gint state)
16932 {
16933   g_dbus_method_invocation_return_value (invocation,
16934     g_variant_new ("(i)",
16935                    state));
16936 }
16937 
16938 /* ------------------------------------------------------------------------ */
16939 
16940 /**
16941  * ControlPowerProxy:
16942  *
16943  * The #ControlPowerProxy structure contains only private data and should only be accessed using the provided API.
16944  */
16945 
16946 /**
16947  * ControlPowerProxyClass:
16948  * @parent_class: The parent class.
16949  *
16950  * Class structure for #ControlPowerProxy.
16951  */
16952 
16953 struct _ControlPowerProxyPrivate
16954 {
16955   GData *qdata;
16956 };
16957 
16958 static void control_power_proxy_iface_init (ControlPowerIface *iface);
16959 
16960 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
16961 G_DEFINE_TYPE_WITH_CODE (ControlPowerProxy, control_power_proxy, G_TYPE_DBUS_PROXY,
16962                          G_ADD_PRIVATE (ControlPowerProxy)
16963                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_POWER, control_power_proxy_iface_init));
16964 
16965 #else
16966 G_DEFINE_TYPE_WITH_CODE (ControlPowerProxy, control_power_proxy, G_TYPE_DBUS_PROXY,
16967                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_POWER, control_power_proxy_iface_init));
16968 
16969 #endif
16970 static void
16971 control_power_proxy_finalize (GObject *object)
16972 {
16973   ControlPowerProxy *proxy = CONTROL_POWER_PROXY (object);
16974   g_datalist_clear (&proxy->priv->qdata);
16975   G_OBJECT_CLASS (control_power_proxy_parent_class)->finalize (object);
16976 }
16977 
16978 static void
16979 control_power_proxy_get_property (GObject      *object,
16980   guint         prop_id,
16981   GValue       *value,
16982   GParamSpec   *pspec G_GNUC_UNUSED)
16983 {
16984   const _ExtendedGDBusPropertyInfo *info;
16985   GVariant *variant;
16986   g_assert (prop_id != 0 && prop_id - 1 < 3);
16987   info = _control_power_property_info_pointers[prop_id - 1];
16988   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
16989   if (info->use_gvariant)
16990     {
16991       g_value_set_variant (value, variant);
16992     }
16993   else
16994     {
16995       if (variant != NULL)
16996         g_dbus_gvariant_to_gvalue (variant, value);
16997     }
16998   if (variant != NULL)
16999     g_variant_unref (variant);
17000 }
17001 
17002 static void
17003 control_power_proxy_set_property_cb (GDBusProxy *proxy,
17004   GAsyncResult *res,
17005   gpointer      user_data)
17006 {
17007   const _ExtendedGDBusPropertyInfo *info = user_data;
17008   GError *error;
17009   GVariant *_ret;
17010   error = NULL;
17011   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
17012   if (!_ret)
17013     {
17014       g_warning ("Error setting property '%s' on interface org.openbmc.control.Power: %s (%s, %d)",
17015                  info->parent_struct.name,
17016                  error->message, g_quark_to_string (error->domain), error->code);
17017       g_error_free (error);
17018     }
17019   else
17020     {
17021       g_variant_unref (_ret);
17022     }
17023 }
17024 
17025 static void
17026 control_power_proxy_set_property (GObject      *object,
17027   guint         prop_id,
17028   const GValue *value,
17029   GParamSpec   *pspec G_GNUC_UNUSED)
17030 {
17031   const _ExtendedGDBusPropertyInfo *info;
17032   GVariant *variant;
17033   g_assert (prop_id != 0 && prop_id - 1 < 3);
17034   info = _control_power_property_info_pointers[prop_id - 1];
17035   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
17036   g_dbus_proxy_call (G_DBUS_PROXY (object),
17037     "org.freedesktop.DBus.Properties.Set",
17038     g_variant_new ("(ssv)", "org.openbmc.control.Power", info->parent_struct.name, variant),
17039     G_DBUS_CALL_FLAGS_NONE,
17040     -1,
17041     NULL, (GAsyncReadyCallback) control_power_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
17042   g_variant_unref (variant);
17043 }
17044 
17045 static void
17046 control_power_proxy_g_signal (GDBusProxy *proxy,
17047   const gchar *sender_name G_GNUC_UNUSED,
17048   const gchar *signal_name,
17049   GVariant *parameters)
17050 {
17051   _ExtendedGDBusSignalInfo *info;
17052   GVariantIter iter;
17053   GVariant *child;
17054   GValue *paramv;
17055   guint num_params;
17056   guint n;
17057   guint signal_id;
17058   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_control_power_interface_info.parent_struct, signal_name);
17059   if (info == NULL)
17060     return;
17061   num_params = g_variant_n_children (parameters);
17062   paramv = g_new0 (GValue, num_params + 1);
17063   g_value_init (&paramv[0], TYPE_CONTROL_POWER);
17064   g_value_set_object (&paramv[0], proxy);
17065   g_variant_iter_init (&iter, parameters);
17066   n = 1;
17067   while ((child = g_variant_iter_next_value (&iter)) != NULL)
17068     {
17069       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
17070       if (arg_info->use_gvariant)
17071         {
17072           g_value_init (&paramv[n], G_TYPE_VARIANT);
17073           g_value_set_variant (&paramv[n], child);
17074           n++;
17075         }
17076       else
17077         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
17078       g_variant_unref (child);
17079     }
17080   signal_id = g_signal_lookup (info->signal_name, TYPE_CONTROL_POWER);
17081   g_signal_emitv (paramv, signal_id, 0, NULL);
17082   for (n = 0; n < num_params + 1; n++)
17083     g_value_unset (&paramv[n]);
17084   g_free (paramv);
17085 }
17086 
17087 static void
17088 control_power_proxy_g_properties_changed (GDBusProxy *_proxy,
17089   GVariant *changed_properties,
17090   const gchar *const *invalidated_properties)
17091 {
17092   ControlPowerProxy *proxy = CONTROL_POWER_PROXY (_proxy);
17093   guint n;
17094   const gchar *key;
17095   GVariantIter *iter;
17096   _ExtendedGDBusPropertyInfo *info;
17097   g_variant_get (changed_properties, "a{sv}", &iter);
17098   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
17099     {
17100       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_power_interface_info.parent_struct, key);
17101       g_datalist_remove_data (&proxy->priv->qdata, key);
17102       if (info != NULL)
17103         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
17104     }
17105   g_variant_iter_free (iter);
17106   for (n = 0; invalidated_properties[n] != NULL; n++)
17107     {
17108       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_power_interface_info.parent_struct, invalidated_properties[n]);
17109       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
17110       if (info != NULL)
17111         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
17112     }
17113 }
17114 
17115 static gint
17116 control_power_proxy_get_pgood (ControlPower *object)
17117 {
17118   ControlPowerProxy *proxy = CONTROL_POWER_PROXY (object);
17119   GVariant *variant;
17120   gint value = 0;
17121   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "pgood");
17122   if (variant != NULL)
17123     {
17124       value = g_variant_get_int32 (variant);
17125       g_variant_unref (variant);
17126     }
17127   return value;
17128 }
17129 
17130 static gint
17131 control_power_proxy_get_state (ControlPower *object)
17132 {
17133   ControlPowerProxy *proxy = CONTROL_POWER_PROXY (object);
17134   GVariant *variant;
17135   gint value = 0;
17136   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "state");
17137   if (variant != NULL)
17138     {
17139       value = g_variant_get_int32 (variant);
17140       g_variant_unref (variant);
17141     }
17142   return value;
17143 }
17144 
17145 static gint
17146 control_power_proxy_get_pgood_timeout (ControlPower *object)
17147 {
17148   ControlPowerProxy *proxy = CONTROL_POWER_PROXY (object);
17149   GVariant *variant;
17150   gint value = 0;
17151   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "pgood_timeout");
17152   if (variant != NULL)
17153     {
17154       value = g_variant_get_int32 (variant);
17155       g_variant_unref (variant);
17156     }
17157   return value;
17158 }
17159 
17160 static void
17161 control_power_proxy_init (ControlPowerProxy *proxy)
17162 {
17163 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
17164   proxy->priv = control_power_proxy_get_instance_private (proxy);
17165 #else
17166   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_CONTROL_POWER_PROXY, ControlPowerProxyPrivate);
17167 #endif
17168 
17169   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), control_power_interface_info ());
17170 }
17171 
17172 static void
17173 control_power_proxy_class_init (ControlPowerProxyClass *klass)
17174 {
17175   GObjectClass *gobject_class;
17176   GDBusProxyClass *proxy_class;
17177 
17178   gobject_class = G_OBJECT_CLASS (klass);
17179   gobject_class->finalize     = control_power_proxy_finalize;
17180   gobject_class->get_property = control_power_proxy_get_property;
17181   gobject_class->set_property = control_power_proxy_set_property;
17182 
17183   proxy_class = G_DBUS_PROXY_CLASS (klass);
17184   proxy_class->g_signal = control_power_proxy_g_signal;
17185   proxy_class->g_properties_changed = control_power_proxy_g_properties_changed;
17186 
17187   control_power_override_properties (gobject_class, 1);
17188 
17189 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
17190   g_type_class_add_private (klass, sizeof (ControlPowerProxyPrivate));
17191 #endif
17192 }
17193 
17194 static void
17195 control_power_proxy_iface_init (ControlPowerIface *iface)
17196 {
17197   iface->get_pgood = control_power_proxy_get_pgood;
17198   iface->get_state = control_power_proxy_get_state;
17199   iface->get_pgood_timeout = control_power_proxy_get_pgood_timeout;
17200 }
17201 
17202 /**
17203  * control_power_proxy_new:
17204  * @connection: A #GDBusConnection.
17205  * @flags: Flags from the #GDBusProxyFlags enumeration.
17206  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
17207  * @object_path: An object path.
17208  * @cancellable: (allow-none): A #GCancellable or %NULL.
17209  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
17210  * @user_data: User data to pass to @callback.
17211  *
17212  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Power.top_of_page">org.openbmc.control.Power</link>. See g_dbus_proxy_new() for more details.
17213  *
17214  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
17215  * You can then call control_power_proxy_new_finish() to get the result of the operation.
17216  *
17217  * See control_power_proxy_new_sync() for the synchronous, blocking version of this constructor.
17218  */
17219 void
17220 control_power_proxy_new (
17221     GDBusConnection     *connection,
17222     GDBusProxyFlags      flags,
17223     const gchar         *name,
17224     const gchar         *object_path,
17225     GCancellable        *cancellable,
17226     GAsyncReadyCallback  callback,
17227     gpointer             user_data)
17228 {
17229   g_async_initable_new_async (TYPE_CONTROL_POWER_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.openbmc.control.Power", NULL);
17230 }
17231 
17232 /**
17233  * control_power_proxy_new_finish:
17234  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_power_proxy_new().
17235  * @error: Return location for error or %NULL
17236  *
17237  * Finishes an operation started with control_power_proxy_new().
17238  *
17239  * Returns: (transfer full) (type ControlPowerProxy): The constructed proxy object or %NULL if @error is set.
17240  */
17241 ControlPower *
17242 control_power_proxy_new_finish (
17243     GAsyncResult        *res,
17244     GError             **error)
17245 {
17246   GObject *ret;
17247   GObject *source_object;
17248   source_object = g_async_result_get_source_object (res);
17249   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
17250   g_object_unref (source_object);
17251   if (ret != NULL)
17252     return CONTROL_POWER (ret);
17253   else
17254     return NULL;
17255 }
17256 
17257 /**
17258  * control_power_proxy_new_sync:
17259  * @connection: A #GDBusConnection.
17260  * @flags: Flags from the #GDBusProxyFlags enumeration.
17261  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
17262  * @object_path: An object path.
17263  * @cancellable: (allow-none): A #GCancellable or %NULL.
17264  * @error: Return location for error or %NULL
17265  *
17266  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Power.top_of_page">org.openbmc.control.Power</link>. See g_dbus_proxy_new_sync() for more details.
17267  *
17268  * The calling thread is blocked until a reply is received.
17269  *
17270  * See control_power_proxy_new() for the asynchronous version of this constructor.
17271  *
17272  * Returns: (transfer full) (type ControlPowerProxy): The constructed proxy object or %NULL if @error is set.
17273  */
17274 ControlPower *
17275 control_power_proxy_new_sync (
17276     GDBusConnection     *connection,
17277     GDBusProxyFlags      flags,
17278     const gchar         *name,
17279     const gchar         *object_path,
17280     GCancellable        *cancellable,
17281     GError             **error)
17282 {
17283   GInitable *ret;
17284   ret = g_initable_new (TYPE_CONTROL_POWER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.control.Power", NULL);
17285   if (ret != NULL)
17286     return CONTROL_POWER (ret);
17287   else
17288     return NULL;
17289 }
17290 
17291 
17292 /**
17293  * control_power_proxy_new_for_bus:
17294  * @bus_type: A #GBusType.
17295  * @flags: Flags from the #GDBusProxyFlags enumeration.
17296  * @name: A bus name (well-known or unique).
17297  * @object_path: An object path.
17298  * @cancellable: (allow-none): A #GCancellable or %NULL.
17299  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
17300  * @user_data: User data to pass to @callback.
17301  *
17302  * Like control_power_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
17303  *
17304  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
17305  * You can then call control_power_proxy_new_for_bus_finish() to get the result of the operation.
17306  *
17307  * See control_power_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
17308  */
17309 void
17310 control_power_proxy_new_for_bus (
17311     GBusType             bus_type,
17312     GDBusProxyFlags      flags,
17313     const gchar         *name,
17314     const gchar         *object_path,
17315     GCancellable        *cancellable,
17316     GAsyncReadyCallback  callback,
17317     gpointer             user_data)
17318 {
17319   g_async_initable_new_async (TYPE_CONTROL_POWER_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.openbmc.control.Power", NULL);
17320 }
17321 
17322 /**
17323  * control_power_proxy_new_for_bus_finish:
17324  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_power_proxy_new_for_bus().
17325  * @error: Return location for error or %NULL
17326  *
17327  * Finishes an operation started with control_power_proxy_new_for_bus().
17328  *
17329  * Returns: (transfer full) (type ControlPowerProxy): The constructed proxy object or %NULL if @error is set.
17330  */
17331 ControlPower *
17332 control_power_proxy_new_for_bus_finish (
17333     GAsyncResult        *res,
17334     GError             **error)
17335 {
17336   GObject *ret;
17337   GObject *source_object;
17338   source_object = g_async_result_get_source_object (res);
17339   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
17340   g_object_unref (source_object);
17341   if (ret != NULL)
17342     return CONTROL_POWER (ret);
17343   else
17344     return NULL;
17345 }
17346 
17347 /**
17348  * control_power_proxy_new_for_bus_sync:
17349  * @bus_type: A #GBusType.
17350  * @flags: Flags from the #GDBusProxyFlags enumeration.
17351  * @name: A bus name (well-known or unique).
17352  * @object_path: An object path.
17353  * @cancellable: (allow-none): A #GCancellable or %NULL.
17354  * @error: Return location for error or %NULL
17355  *
17356  * Like control_power_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
17357  *
17358  * The calling thread is blocked until a reply is received.
17359  *
17360  * See control_power_proxy_new_for_bus() for the asynchronous version of this constructor.
17361  *
17362  * Returns: (transfer full) (type ControlPowerProxy): The constructed proxy object or %NULL if @error is set.
17363  */
17364 ControlPower *
17365 control_power_proxy_new_for_bus_sync (
17366     GBusType             bus_type,
17367     GDBusProxyFlags      flags,
17368     const gchar         *name,
17369     const gchar         *object_path,
17370     GCancellable        *cancellable,
17371     GError             **error)
17372 {
17373   GInitable *ret;
17374   ret = g_initable_new (TYPE_CONTROL_POWER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.control.Power", NULL);
17375   if (ret != NULL)
17376     return CONTROL_POWER (ret);
17377   else
17378     return NULL;
17379 }
17380 
17381 
17382 /* ------------------------------------------------------------------------ */
17383 
17384 /**
17385  * ControlPowerSkeleton:
17386  *
17387  * The #ControlPowerSkeleton structure contains only private data and should only be accessed using the provided API.
17388  */
17389 
17390 /**
17391  * ControlPowerSkeletonClass:
17392  * @parent_class: The parent class.
17393  *
17394  * Class structure for #ControlPowerSkeleton.
17395  */
17396 
17397 struct _ControlPowerSkeletonPrivate
17398 {
17399   GValue *properties;
17400   GList *changed_properties;
17401   GSource *changed_properties_idle_source;
17402   GMainContext *context;
17403   GMutex lock;
17404 };
17405 
17406 static void
17407 _control_power_skeleton_handle_method_call (
17408   GDBusConnection *connection G_GNUC_UNUSED,
17409   const gchar *sender G_GNUC_UNUSED,
17410   const gchar *object_path G_GNUC_UNUSED,
17411   const gchar *interface_name,
17412   const gchar *method_name,
17413   GVariant *parameters,
17414   GDBusMethodInvocation *invocation,
17415   gpointer user_data)
17416 {
17417   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (user_data);
17418   _ExtendedGDBusMethodInfo *info;
17419   GVariantIter iter;
17420   GVariant *child;
17421   GValue *paramv;
17422   guint num_params;
17423   guint num_extra;
17424   guint n;
17425   guint signal_id;
17426   GValue return_value = G_VALUE_INIT;
17427   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
17428   g_assert (info != NULL);
17429   num_params = g_variant_n_children (parameters);
17430   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
17431   n = 0;
17432   g_value_init (&paramv[n], TYPE_CONTROL_POWER);
17433   g_value_set_object (&paramv[n++], skeleton);
17434   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
17435   g_value_set_object (&paramv[n++], invocation);
17436   if (info->pass_fdlist)
17437     {
17438 #ifdef G_OS_UNIX
17439       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
17440       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
17441 #else
17442       g_assert_not_reached ();
17443 #endif
17444     }
17445   g_variant_iter_init (&iter, parameters);
17446   while ((child = g_variant_iter_next_value (&iter)) != NULL)
17447     {
17448       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
17449       if (arg_info->use_gvariant)
17450         {
17451           g_value_init (&paramv[n], G_TYPE_VARIANT);
17452           g_value_set_variant (&paramv[n], child);
17453           n++;
17454         }
17455       else
17456         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
17457       g_variant_unref (child);
17458     }
17459   signal_id = g_signal_lookup (info->signal_name, TYPE_CONTROL_POWER);
17460   g_value_init (&return_value, G_TYPE_BOOLEAN);
17461   g_signal_emitv (paramv, signal_id, 0, &return_value);
17462   if (!g_value_get_boolean (&return_value))
17463     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);
17464   g_value_unset (&return_value);
17465   for (n = 0; n < num_params + num_extra; n++)
17466     g_value_unset (&paramv[n]);
17467   g_free (paramv);
17468 }
17469 
17470 static GVariant *
17471 _control_power_skeleton_handle_get_property (
17472   GDBusConnection *connection G_GNUC_UNUSED,
17473   const gchar *sender G_GNUC_UNUSED,
17474   const gchar *object_path G_GNUC_UNUSED,
17475   const gchar *interface_name G_GNUC_UNUSED,
17476   const gchar *property_name,
17477   GError **error,
17478   gpointer user_data)
17479 {
17480   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (user_data);
17481   GValue value = G_VALUE_INIT;
17482   GParamSpec *pspec;
17483   _ExtendedGDBusPropertyInfo *info;
17484   GVariant *ret;
17485   ret = NULL;
17486   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_power_interface_info.parent_struct, property_name);
17487   g_assert (info != NULL);
17488   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
17489   if (pspec == NULL)
17490     {
17491       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
17492     }
17493   else
17494     {
17495       g_value_init (&value, pspec->value_type);
17496       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
17497       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
17498       g_value_unset (&value);
17499     }
17500   return ret;
17501 }
17502 
17503 static gboolean
17504 _control_power_skeleton_handle_set_property (
17505   GDBusConnection *connection G_GNUC_UNUSED,
17506   const gchar *sender G_GNUC_UNUSED,
17507   const gchar *object_path G_GNUC_UNUSED,
17508   const gchar *interface_name G_GNUC_UNUSED,
17509   const gchar *property_name,
17510   GVariant *variant,
17511   GError **error,
17512   gpointer user_data)
17513 {
17514   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (user_data);
17515   GValue value = G_VALUE_INIT;
17516   GParamSpec *pspec;
17517   _ExtendedGDBusPropertyInfo *info;
17518   gboolean ret;
17519   ret = FALSE;
17520   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_power_interface_info.parent_struct, property_name);
17521   g_assert (info != NULL);
17522   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
17523   if (pspec == NULL)
17524     {
17525       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
17526     }
17527   else
17528     {
17529       if (info->use_gvariant)
17530         g_value_set_variant (&value, variant);
17531       else
17532         g_dbus_gvariant_to_gvalue (variant, &value);
17533       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
17534       g_value_unset (&value);
17535       ret = TRUE;
17536     }
17537   return ret;
17538 }
17539 
17540 static const GDBusInterfaceVTable _control_power_skeleton_vtable =
17541 {
17542   _control_power_skeleton_handle_method_call,
17543   _control_power_skeleton_handle_get_property,
17544   _control_power_skeleton_handle_set_property,
17545   {NULL}
17546 };
17547 
17548 static GDBusInterfaceInfo *
17549 control_power_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
17550 {
17551   return control_power_interface_info ();
17552 }
17553 
17554 static GDBusInterfaceVTable *
17555 control_power_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
17556 {
17557   return (GDBusInterfaceVTable *) &_control_power_skeleton_vtable;
17558 }
17559 
17560 static GVariant *
17561 control_power_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
17562 {
17563   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (_skeleton);
17564 
17565   GVariantBuilder builder;
17566   guint n;
17567   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
17568   if (_control_power_interface_info.parent_struct.properties == NULL)
17569     goto out;
17570   for (n = 0; _control_power_interface_info.parent_struct.properties[n] != NULL; n++)
17571     {
17572       GDBusPropertyInfo *info = _control_power_interface_info.parent_struct.properties[n];
17573       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
17574         {
17575           GVariant *value;
17576           value = _control_power_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.openbmc.control.Power", info->name, NULL, skeleton);
17577           if (value != NULL)
17578             {
17579               g_variant_take_ref (value);
17580               g_variant_builder_add (&builder, "{sv}", info->name, value);
17581               g_variant_unref (value);
17582             }
17583         }
17584     }
17585 out:
17586   return g_variant_builder_end (&builder);
17587 }
17588 
17589 static gboolean _control_power_emit_changed (gpointer user_data);
17590 
17591 static void
17592 control_power_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
17593 {
17594   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (_skeleton);
17595   gboolean emit_changed = FALSE;
17596 
17597   g_mutex_lock (&skeleton->priv->lock);
17598   if (skeleton->priv->changed_properties_idle_source != NULL)
17599     {
17600       g_source_destroy (skeleton->priv->changed_properties_idle_source);
17601       skeleton->priv->changed_properties_idle_source = NULL;
17602       emit_changed = TRUE;
17603     }
17604   g_mutex_unlock (&skeleton->priv->lock);
17605 
17606   if (emit_changed)
17607     _control_power_emit_changed (skeleton);
17608 }
17609 
17610 static void
17611 _control_power_on_signal_power_good (
17612     ControlPower *object)
17613 {
17614   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (object);
17615 
17616   GList      *connections, *l;
17617   GVariant   *signal_variant;
17618   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
17619 
17620   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
17621   for (l = connections; l != NULL; l = l->next)
17622     {
17623       GDBusConnection *connection = l->data;
17624       g_dbus_connection_emit_signal (connection,
17625         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.control.Power", "PowerGood",
17626         signal_variant, NULL);
17627     }
17628   g_variant_unref (signal_variant);
17629   g_list_free_full (connections, g_object_unref);
17630 }
17631 
17632 static void
17633 _control_power_on_signal_power_lost (
17634     ControlPower *object)
17635 {
17636   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (object);
17637 
17638   GList      *connections, *l;
17639   GVariant   *signal_variant;
17640   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
17641 
17642   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
17643   for (l = connections; l != NULL; l = l->next)
17644     {
17645       GDBusConnection *connection = l->data;
17646       g_dbus_connection_emit_signal (connection,
17647         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.control.Power", "PowerLost",
17648         signal_variant, NULL);
17649     }
17650   g_variant_unref (signal_variant);
17651   g_list_free_full (connections, g_object_unref);
17652 }
17653 
17654 static void control_power_skeleton_iface_init (ControlPowerIface *iface);
17655 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
17656 G_DEFINE_TYPE_WITH_CODE (ControlPowerSkeleton, control_power_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
17657                          G_ADD_PRIVATE (ControlPowerSkeleton)
17658                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_POWER, control_power_skeleton_iface_init));
17659 
17660 #else
17661 G_DEFINE_TYPE_WITH_CODE (ControlPowerSkeleton, control_power_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
17662                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_POWER, control_power_skeleton_iface_init));
17663 
17664 #endif
17665 static void
17666 control_power_skeleton_finalize (GObject *object)
17667 {
17668   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (object);
17669   guint n;
17670   for (n = 0; n < 3; n++)
17671     g_value_unset (&skeleton->priv->properties[n]);
17672   g_free (skeleton->priv->properties);
17673   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
17674   if (skeleton->priv->changed_properties_idle_source != NULL)
17675     g_source_destroy (skeleton->priv->changed_properties_idle_source);
17676   g_main_context_unref (skeleton->priv->context);
17677   g_mutex_clear (&skeleton->priv->lock);
17678   G_OBJECT_CLASS (control_power_skeleton_parent_class)->finalize (object);
17679 }
17680 
17681 static void
17682 control_power_skeleton_get_property (GObject      *object,
17683   guint         prop_id,
17684   GValue       *value,
17685   GParamSpec   *pspec G_GNUC_UNUSED)
17686 {
17687   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (object);
17688   g_assert (prop_id != 0 && prop_id - 1 < 3);
17689   g_mutex_lock (&skeleton->priv->lock);
17690   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
17691   g_mutex_unlock (&skeleton->priv->lock);
17692 }
17693 
17694 static gboolean
17695 _control_power_emit_changed (gpointer user_data)
17696 {
17697   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (user_data);
17698   GList *l;
17699   GVariantBuilder builder;
17700   GVariantBuilder invalidated_builder;
17701   guint num_changes;
17702 
17703   g_mutex_lock (&skeleton->priv->lock);
17704   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
17705   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
17706   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
17707     {
17708       ChangedProperty *cp = l->data;
17709       GVariant *variant;
17710       const GValue *cur_value;
17711 
17712       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
17713       if (!_g_value_equal (cur_value, &cp->orig_value))
17714         {
17715           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
17716           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
17717           g_variant_unref (variant);
17718           num_changes++;
17719         }
17720     }
17721   if (num_changes > 0)
17722     {
17723       GList *connections, *ll;
17724       GVariant *signal_variant;
17725       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.control.Power",
17726                                            &builder, &invalidated_builder));
17727       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
17728       for (ll = connections; ll != NULL; ll = ll->next)
17729         {
17730           GDBusConnection *connection = ll->data;
17731 
17732           g_dbus_connection_emit_signal (connection,
17733                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
17734                                          "org.freedesktop.DBus.Properties",
17735                                          "PropertiesChanged",
17736                                          signal_variant,
17737                                          NULL);
17738         }
17739       g_variant_unref (signal_variant);
17740       g_list_free_full (connections, g_object_unref);
17741     }
17742   else
17743     {
17744       g_variant_builder_clear (&builder);
17745       g_variant_builder_clear (&invalidated_builder);
17746     }
17747   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
17748   skeleton->priv->changed_properties = NULL;
17749   skeleton->priv->changed_properties_idle_source = NULL;
17750   g_mutex_unlock (&skeleton->priv->lock);
17751   return FALSE;
17752 }
17753 
17754 static void
17755 _control_power_schedule_emit_changed (ControlPowerSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
17756 {
17757   ChangedProperty *cp;
17758   GList *l;
17759   cp = NULL;
17760   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
17761     {
17762       ChangedProperty *i_cp = l->data;
17763       if (i_cp->info == info)
17764         {
17765           cp = i_cp;
17766           break;
17767         }
17768     }
17769   if (cp == NULL)
17770     {
17771       cp = g_new0 (ChangedProperty, 1);
17772       cp->prop_id = prop_id;
17773       cp->info = info;
17774       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
17775       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
17776       g_value_copy (orig_value, &cp->orig_value);
17777     }
17778 }
17779 
17780 static void
17781 control_power_skeleton_notify (GObject      *object,
17782   GParamSpec *pspec G_GNUC_UNUSED)
17783 {
17784   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (object);
17785   g_mutex_lock (&skeleton->priv->lock);
17786   if (skeleton->priv->changed_properties != NULL &&
17787       skeleton->priv->changed_properties_idle_source == NULL)
17788     {
17789       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
17790       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
17791       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_power_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
17792       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
17793       g_source_unref (skeleton->priv->changed_properties_idle_source);
17794     }
17795   g_mutex_unlock (&skeleton->priv->lock);
17796 }
17797 
17798 static void
17799 control_power_skeleton_set_property (GObject      *object,
17800   guint         prop_id,
17801   const GValue *value,
17802   GParamSpec   *pspec)
17803 {
17804   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (object);
17805   g_assert (prop_id != 0 && prop_id - 1 < 3);
17806   g_mutex_lock (&skeleton->priv->lock);
17807   g_object_freeze_notify (object);
17808   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
17809     {
17810       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
17811         _control_power_schedule_emit_changed (skeleton, _control_power_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
17812       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
17813       g_object_notify_by_pspec (object, pspec);
17814     }
17815   g_mutex_unlock (&skeleton->priv->lock);
17816   g_object_thaw_notify (object);
17817 }
17818 
17819 static void
17820 control_power_skeleton_init (ControlPowerSkeleton *skeleton)
17821 {
17822 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
17823   skeleton->priv = control_power_skeleton_get_instance_private (skeleton);
17824 #else
17825   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_CONTROL_POWER_SKELETON, ControlPowerSkeletonPrivate);
17826 #endif
17827 
17828   g_mutex_init (&skeleton->priv->lock);
17829   skeleton->priv->context = g_main_context_ref_thread_default ();
17830   skeleton->priv->properties = g_new0 (GValue, 3);
17831   g_value_init (&skeleton->priv->properties[0], G_TYPE_INT);
17832   g_value_init (&skeleton->priv->properties[1], G_TYPE_INT);
17833   g_value_init (&skeleton->priv->properties[2], G_TYPE_INT);
17834 }
17835 
17836 static gint
17837 control_power_skeleton_get_pgood (ControlPower *object)
17838 {
17839   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (object);
17840   gint value;
17841   g_mutex_lock (&skeleton->priv->lock);
17842   value = g_value_get_int (&(skeleton->priv->properties[0]));
17843   g_mutex_unlock (&skeleton->priv->lock);
17844   return value;
17845 }
17846 
17847 static gint
17848 control_power_skeleton_get_state (ControlPower *object)
17849 {
17850   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (object);
17851   gint value;
17852   g_mutex_lock (&skeleton->priv->lock);
17853   value = g_value_get_int (&(skeleton->priv->properties[1]));
17854   g_mutex_unlock (&skeleton->priv->lock);
17855   return value;
17856 }
17857 
17858 static gint
17859 control_power_skeleton_get_pgood_timeout (ControlPower *object)
17860 {
17861   ControlPowerSkeleton *skeleton = CONTROL_POWER_SKELETON (object);
17862   gint value;
17863   g_mutex_lock (&skeleton->priv->lock);
17864   value = g_value_get_int (&(skeleton->priv->properties[2]));
17865   g_mutex_unlock (&skeleton->priv->lock);
17866   return value;
17867 }
17868 
17869 static void
17870 control_power_skeleton_class_init (ControlPowerSkeletonClass *klass)
17871 {
17872   GObjectClass *gobject_class;
17873   GDBusInterfaceSkeletonClass *skeleton_class;
17874 
17875   gobject_class = G_OBJECT_CLASS (klass);
17876   gobject_class->finalize = control_power_skeleton_finalize;
17877   gobject_class->get_property = control_power_skeleton_get_property;
17878   gobject_class->set_property = control_power_skeleton_set_property;
17879   gobject_class->notify       = control_power_skeleton_notify;
17880 
17881 
17882   control_power_override_properties (gobject_class, 1);
17883 
17884   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
17885   skeleton_class->get_info = control_power_skeleton_dbus_interface_get_info;
17886   skeleton_class->get_properties = control_power_skeleton_dbus_interface_get_properties;
17887   skeleton_class->flush = control_power_skeleton_dbus_interface_flush;
17888   skeleton_class->get_vtable = control_power_skeleton_dbus_interface_get_vtable;
17889 
17890 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
17891   g_type_class_add_private (klass, sizeof (ControlPowerSkeletonPrivate));
17892 #endif
17893 }
17894 
17895 static void
17896 control_power_skeleton_iface_init (ControlPowerIface *iface)
17897 {
17898   iface->power_good = _control_power_on_signal_power_good;
17899   iface->power_lost = _control_power_on_signal_power_lost;
17900   iface->get_pgood = control_power_skeleton_get_pgood;
17901   iface->get_state = control_power_skeleton_get_state;
17902   iface->get_pgood_timeout = control_power_skeleton_get_pgood_timeout;
17903 }
17904 
17905 /**
17906  * control_power_skeleton_new:
17907  *
17908  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Power.top_of_page">org.openbmc.control.Power</link>.
17909  *
17910  * Returns: (transfer full) (type ControlPowerSkeleton): The skeleton object.
17911  */
17912 ControlPower *
17913 control_power_skeleton_new (void)
17914 {
17915   return CONTROL_POWER (g_object_new (TYPE_CONTROL_POWER_SKELETON, NULL));
17916 }
17917 
17918 /* ------------------------------------------------------------------------
17919  * Code for interface org.openbmc.control.Checkstop
17920  * ------------------------------------------------------------------------
17921  */
17922 
17923 /**
17924  * SECTION:ControlCheckstop
17925  * @title: ControlCheckstop
17926  * @short_description: Generated C code for the org.openbmc.control.Checkstop D-Bus interface
17927  *
17928  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-control-Checkstop.top_of_page">org.openbmc.control.Checkstop</link> D-Bus interface in C.
17929  */
17930 
17931 /* ---- Introspection data for org.openbmc.control.Checkstop ---- */
17932 
17933 static const _ExtendedGDBusInterfaceInfo _control_checkstop_interface_info =
17934 {
17935   {
17936     -1,
17937     (gchar *) "org.openbmc.control.Checkstop",
17938     NULL,
17939     NULL,
17940     NULL,
17941     NULL
17942   },
17943   "control-checkstop",
17944 };
17945 
17946 
17947 /**
17948  * control_checkstop_interface_info:
17949  *
17950  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-control-Checkstop.top_of_page">org.openbmc.control.Checkstop</link> D-Bus interface.
17951  *
17952  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
17953  */
17954 GDBusInterfaceInfo *
17955 control_checkstop_interface_info (void)
17956 {
17957   return (GDBusInterfaceInfo *) &_control_checkstop_interface_info.parent_struct;
17958 }
17959 
17960 /**
17961  * control_checkstop_override_properties:
17962  * @klass: The class structure for a #GObject<!-- -->-derived class.
17963  * @property_id_begin: The property id to assign to the first overridden property.
17964  *
17965  * Overrides all #GObject properties in the #ControlCheckstop interface for a concrete class.
17966  * The properties are overridden in the order they are defined.
17967  *
17968  * Returns: The last property id.
17969  */
17970 guint
17971 control_checkstop_override_properties (GObjectClass *klass, guint property_id_begin)
17972 {
17973   return property_id_begin - 1;
17974 }
17975 
17976 
17977 
17978 /**
17979  * ControlCheckstop:
17980  *
17981  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Checkstop.top_of_page">org.openbmc.control.Checkstop</link>.
17982  */
17983 
17984 /**
17985  * ControlCheckstopIface:
17986  * @parent_iface: The parent interface.
17987  *
17988  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Checkstop.top_of_page">org.openbmc.control.Checkstop</link>.
17989  */
17990 
17991 typedef ControlCheckstopIface ControlCheckstopInterface;
17992 G_DEFINE_INTERFACE (ControlCheckstop, control_checkstop, G_TYPE_OBJECT);
17993 
17994 static void
17995 control_checkstop_default_init (ControlCheckstopIface *iface)
17996 {
17997 }
17998 
17999 /* ------------------------------------------------------------------------ */
18000 
18001 /**
18002  * ControlCheckstopProxy:
18003  *
18004  * The #ControlCheckstopProxy structure contains only private data and should only be accessed using the provided API.
18005  */
18006 
18007 /**
18008  * ControlCheckstopProxyClass:
18009  * @parent_class: The parent class.
18010  *
18011  * Class structure for #ControlCheckstopProxy.
18012  */
18013 
18014 struct _ControlCheckstopProxyPrivate
18015 {
18016   GData *qdata;
18017 };
18018 
18019 static void control_checkstop_proxy_iface_init (ControlCheckstopIface *iface);
18020 
18021 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
18022 G_DEFINE_TYPE_WITH_CODE (ControlCheckstopProxy, control_checkstop_proxy, G_TYPE_DBUS_PROXY,
18023                          G_ADD_PRIVATE (ControlCheckstopProxy)
18024                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_CHECKSTOP, control_checkstop_proxy_iface_init));
18025 
18026 #else
18027 G_DEFINE_TYPE_WITH_CODE (ControlCheckstopProxy, control_checkstop_proxy, G_TYPE_DBUS_PROXY,
18028                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_CHECKSTOP, control_checkstop_proxy_iface_init));
18029 
18030 #endif
18031 static void
18032 control_checkstop_proxy_finalize (GObject *object)
18033 {
18034   ControlCheckstopProxy *proxy = CONTROL_CHECKSTOP_PROXY (object);
18035   g_datalist_clear (&proxy->priv->qdata);
18036   G_OBJECT_CLASS (control_checkstop_proxy_parent_class)->finalize (object);
18037 }
18038 
18039 static void
18040 control_checkstop_proxy_get_property (GObject      *object,
18041   guint         prop_id,
18042   GValue       *value,
18043   GParamSpec   *pspec G_GNUC_UNUSED)
18044 {
18045 }
18046 
18047 static void
18048 control_checkstop_proxy_set_property (GObject      *object,
18049   guint         prop_id,
18050   const GValue *value,
18051   GParamSpec   *pspec G_GNUC_UNUSED)
18052 {
18053 }
18054 
18055 static void
18056 control_checkstop_proxy_g_signal (GDBusProxy *proxy,
18057   const gchar *sender_name G_GNUC_UNUSED,
18058   const gchar *signal_name,
18059   GVariant *parameters)
18060 {
18061   _ExtendedGDBusSignalInfo *info;
18062   GVariantIter iter;
18063   GVariant *child;
18064   GValue *paramv;
18065   guint num_params;
18066   guint n;
18067   guint signal_id;
18068   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_control_checkstop_interface_info.parent_struct, signal_name);
18069   if (info == NULL)
18070     return;
18071   num_params = g_variant_n_children (parameters);
18072   paramv = g_new0 (GValue, num_params + 1);
18073   g_value_init (&paramv[0], TYPE_CONTROL_CHECKSTOP);
18074   g_value_set_object (&paramv[0], proxy);
18075   g_variant_iter_init (&iter, parameters);
18076   n = 1;
18077   while ((child = g_variant_iter_next_value (&iter)) != NULL)
18078     {
18079       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
18080       if (arg_info->use_gvariant)
18081         {
18082           g_value_init (&paramv[n], G_TYPE_VARIANT);
18083           g_value_set_variant (&paramv[n], child);
18084           n++;
18085         }
18086       else
18087         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
18088       g_variant_unref (child);
18089     }
18090   signal_id = g_signal_lookup (info->signal_name, TYPE_CONTROL_CHECKSTOP);
18091   g_signal_emitv (paramv, signal_id, 0, NULL);
18092   for (n = 0; n < num_params + 1; n++)
18093     g_value_unset (&paramv[n]);
18094   g_free (paramv);
18095 }
18096 
18097 static void
18098 control_checkstop_proxy_g_properties_changed (GDBusProxy *_proxy,
18099   GVariant *changed_properties,
18100   const gchar *const *invalidated_properties)
18101 {
18102   ControlCheckstopProxy *proxy = CONTROL_CHECKSTOP_PROXY (_proxy);
18103   guint n;
18104   const gchar *key;
18105   GVariantIter *iter;
18106   _ExtendedGDBusPropertyInfo *info;
18107   g_variant_get (changed_properties, "a{sv}", &iter);
18108   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
18109     {
18110       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_checkstop_interface_info.parent_struct, key);
18111       g_datalist_remove_data (&proxy->priv->qdata, key);
18112       if (info != NULL)
18113         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
18114     }
18115   g_variant_iter_free (iter);
18116   for (n = 0; invalidated_properties[n] != NULL; n++)
18117     {
18118       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_checkstop_interface_info.parent_struct, invalidated_properties[n]);
18119       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
18120       if (info != NULL)
18121         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
18122     }
18123 }
18124 
18125 static void
18126 control_checkstop_proxy_init (ControlCheckstopProxy *proxy)
18127 {
18128 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
18129   proxy->priv = control_checkstop_proxy_get_instance_private (proxy);
18130 #else
18131   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_CONTROL_CHECKSTOP_PROXY, ControlCheckstopProxyPrivate);
18132 #endif
18133 
18134   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), control_checkstop_interface_info ());
18135 }
18136 
18137 static void
18138 control_checkstop_proxy_class_init (ControlCheckstopProxyClass *klass)
18139 {
18140   GObjectClass *gobject_class;
18141   GDBusProxyClass *proxy_class;
18142 
18143   gobject_class = G_OBJECT_CLASS (klass);
18144   gobject_class->finalize     = control_checkstop_proxy_finalize;
18145   gobject_class->get_property = control_checkstop_proxy_get_property;
18146   gobject_class->set_property = control_checkstop_proxy_set_property;
18147 
18148   proxy_class = G_DBUS_PROXY_CLASS (klass);
18149   proxy_class->g_signal = control_checkstop_proxy_g_signal;
18150   proxy_class->g_properties_changed = control_checkstop_proxy_g_properties_changed;
18151 
18152 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
18153   g_type_class_add_private (klass, sizeof (ControlCheckstopProxyPrivate));
18154 #endif
18155 }
18156 
18157 static void
18158 control_checkstop_proxy_iface_init (ControlCheckstopIface *iface)
18159 {
18160 }
18161 
18162 /**
18163  * control_checkstop_proxy_new:
18164  * @connection: A #GDBusConnection.
18165  * @flags: Flags from the #GDBusProxyFlags enumeration.
18166  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
18167  * @object_path: An object path.
18168  * @cancellable: (allow-none): A #GCancellable or %NULL.
18169  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
18170  * @user_data: User data to pass to @callback.
18171  *
18172  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Checkstop.top_of_page">org.openbmc.control.Checkstop</link>. See g_dbus_proxy_new() for more details.
18173  *
18174  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
18175  * You can then call control_checkstop_proxy_new_finish() to get the result of the operation.
18176  *
18177  * See control_checkstop_proxy_new_sync() for the synchronous, blocking version of this constructor.
18178  */
18179 void
18180 control_checkstop_proxy_new (
18181     GDBusConnection     *connection,
18182     GDBusProxyFlags      flags,
18183     const gchar         *name,
18184     const gchar         *object_path,
18185     GCancellable        *cancellable,
18186     GAsyncReadyCallback  callback,
18187     gpointer             user_data)
18188 {
18189   g_async_initable_new_async (TYPE_CONTROL_CHECKSTOP_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.openbmc.control.Checkstop", NULL);
18190 }
18191 
18192 /**
18193  * control_checkstop_proxy_new_finish:
18194  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_checkstop_proxy_new().
18195  * @error: Return location for error or %NULL
18196  *
18197  * Finishes an operation started with control_checkstop_proxy_new().
18198  *
18199  * Returns: (transfer full) (type ControlCheckstopProxy): The constructed proxy object or %NULL if @error is set.
18200  */
18201 ControlCheckstop *
18202 control_checkstop_proxy_new_finish (
18203     GAsyncResult        *res,
18204     GError             **error)
18205 {
18206   GObject *ret;
18207   GObject *source_object;
18208   source_object = g_async_result_get_source_object (res);
18209   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
18210   g_object_unref (source_object);
18211   if (ret != NULL)
18212     return CONTROL_CHECKSTOP (ret);
18213   else
18214     return NULL;
18215 }
18216 
18217 /**
18218  * control_checkstop_proxy_new_sync:
18219  * @connection: A #GDBusConnection.
18220  * @flags: Flags from the #GDBusProxyFlags enumeration.
18221  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
18222  * @object_path: An object path.
18223  * @cancellable: (allow-none): A #GCancellable or %NULL.
18224  * @error: Return location for error or %NULL
18225  *
18226  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Checkstop.top_of_page">org.openbmc.control.Checkstop</link>. See g_dbus_proxy_new_sync() for more details.
18227  *
18228  * The calling thread is blocked until a reply is received.
18229  *
18230  * See control_checkstop_proxy_new() for the asynchronous version of this constructor.
18231  *
18232  * Returns: (transfer full) (type ControlCheckstopProxy): The constructed proxy object or %NULL if @error is set.
18233  */
18234 ControlCheckstop *
18235 control_checkstop_proxy_new_sync (
18236     GDBusConnection     *connection,
18237     GDBusProxyFlags      flags,
18238     const gchar         *name,
18239     const gchar         *object_path,
18240     GCancellable        *cancellable,
18241     GError             **error)
18242 {
18243   GInitable *ret;
18244   ret = g_initable_new (TYPE_CONTROL_CHECKSTOP_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.control.Checkstop", NULL);
18245   if (ret != NULL)
18246     return CONTROL_CHECKSTOP (ret);
18247   else
18248     return NULL;
18249 }
18250 
18251 
18252 /**
18253  * control_checkstop_proxy_new_for_bus:
18254  * @bus_type: A #GBusType.
18255  * @flags: Flags from the #GDBusProxyFlags enumeration.
18256  * @name: A bus name (well-known or unique).
18257  * @object_path: An object path.
18258  * @cancellable: (allow-none): A #GCancellable or %NULL.
18259  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
18260  * @user_data: User data to pass to @callback.
18261  *
18262  * Like control_checkstop_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
18263  *
18264  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
18265  * You can then call control_checkstop_proxy_new_for_bus_finish() to get the result of the operation.
18266  *
18267  * See control_checkstop_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
18268  */
18269 void
18270 control_checkstop_proxy_new_for_bus (
18271     GBusType             bus_type,
18272     GDBusProxyFlags      flags,
18273     const gchar         *name,
18274     const gchar         *object_path,
18275     GCancellable        *cancellable,
18276     GAsyncReadyCallback  callback,
18277     gpointer             user_data)
18278 {
18279   g_async_initable_new_async (TYPE_CONTROL_CHECKSTOP_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.openbmc.control.Checkstop", NULL);
18280 }
18281 
18282 /**
18283  * control_checkstop_proxy_new_for_bus_finish:
18284  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_checkstop_proxy_new_for_bus().
18285  * @error: Return location for error or %NULL
18286  *
18287  * Finishes an operation started with control_checkstop_proxy_new_for_bus().
18288  *
18289  * Returns: (transfer full) (type ControlCheckstopProxy): The constructed proxy object or %NULL if @error is set.
18290  */
18291 ControlCheckstop *
18292 control_checkstop_proxy_new_for_bus_finish (
18293     GAsyncResult        *res,
18294     GError             **error)
18295 {
18296   GObject *ret;
18297   GObject *source_object;
18298   source_object = g_async_result_get_source_object (res);
18299   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
18300   g_object_unref (source_object);
18301   if (ret != NULL)
18302     return CONTROL_CHECKSTOP (ret);
18303   else
18304     return NULL;
18305 }
18306 
18307 /**
18308  * control_checkstop_proxy_new_for_bus_sync:
18309  * @bus_type: A #GBusType.
18310  * @flags: Flags from the #GDBusProxyFlags enumeration.
18311  * @name: A bus name (well-known or unique).
18312  * @object_path: An object path.
18313  * @cancellable: (allow-none): A #GCancellable or %NULL.
18314  * @error: Return location for error or %NULL
18315  *
18316  * Like control_checkstop_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
18317  *
18318  * The calling thread is blocked until a reply is received.
18319  *
18320  * See control_checkstop_proxy_new_for_bus() for the asynchronous version of this constructor.
18321  *
18322  * Returns: (transfer full) (type ControlCheckstopProxy): The constructed proxy object or %NULL if @error is set.
18323  */
18324 ControlCheckstop *
18325 control_checkstop_proxy_new_for_bus_sync (
18326     GBusType             bus_type,
18327     GDBusProxyFlags      flags,
18328     const gchar         *name,
18329     const gchar         *object_path,
18330     GCancellable        *cancellable,
18331     GError             **error)
18332 {
18333   GInitable *ret;
18334   ret = g_initable_new (TYPE_CONTROL_CHECKSTOP_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.control.Checkstop", NULL);
18335   if (ret != NULL)
18336     return CONTROL_CHECKSTOP (ret);
18337   else
18338     return NULL;
18339 }
18340 
18341 
18342 /* ------------------------------------------------------------------------ */
18343 
18344 /**
18345  * ControlCheckstopSkeleton:
18346  *
18347  * The #ControlCheckstopSkeleton structure contains only private data and should only be accessed using the provided API.
18348  */
18349 
18350 /**
18351  * ControlCheckstopSkeletonClass:
18352  * @parent_class: The parent class.
18353  *
18354  * Class structure for #ControlCheckstopSkeleton.
18355  */
18356 
18357 struct _ControlCheckstopSkeletonPrivate
18358 {
18359   GValue *properties;
18360   GList *changed_properties;
18361   GSource *changed_properties_idle_source;
18362   GMainContext *context;
18363   GMutex lock;
18364 };
18365 
18366 static void
18367 _control_checkstop_skeleton_handle_method_call (
18368   GDBusConnection *connection G_GNUC_UNUSED,
18369   const gchar *sender G_GNUC_UNUSED,
18370   const gchar *object_path G_GNUC_UNUSED,
18371   const gchar *interface_name,
18372   const gchar *method_name,
18373   GVariant *parameters,
18374   GDBusMethodInvocation *invocation,
18375   gpointer user_data)
18376 {
18377   ControlCheckstopSkeleton *skeleton = CONTROL_CHECKSTOP_SKELETON (user_data);
18378   _ExtendedGDBusMethodInfo *info;
18379   GVariantIter iter;
18380   GVariant *child;
18381   GValue *paramv;
18382   guint num_params;
18383   guint num_extra;
18384   guint n;
18385   guint signal_id;
18386   GValue return_value = G_VALUE_INIT;
18387   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
18388   g_assert (info != NULL);
18389   num_params = g_variant_n_children (parameters);
18390   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
18391   n = 0;
18392   g_value_init (&paramv[n], TYPE_CONTROL_CHECKSTOP);
18393   g_value_set_object (&paramv[n++], skeleton);
18394   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
18395   g_value_set_object (&paramv[n++], invocation);
18396   if (info->pass_fdlist)
18397     {
18398 #ifdef G_OS_UNIX
18399       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
18400       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
18401 #else
18402       g_assert_not_reached ();
18403 #endif
18404     }
18405   g_variant_iter_init (&iter, parameters);
18406   while ((child = g_variant_iter_next_value (&iter)) != NULL)
18407     {
18408       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
18409       if (arg_info->use_gvariant)
18410         {
18411           g_value_init (&paramv[n], G_TYPE_VARIANT);
18412           g_value_set_variant (&paramv[n], child);
18413           n++;
18414         }
18415       else
18416         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
18417       g_variant_unref (child);
18418     }
18419   signal_id = g_signal_lookup (info->signal_name, TYPE_CONTROL_CHECKSTOP);
18420   g_value_init (&return_value, G_TYPE_BOOLEAN);
18421   g_signal_emitv (paramv, signal_id, 0, &return_value);
18422   if (!g_value_get_boolean (&return_value))
18423     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);
18424   g_value_unset (&return_value);
18425   for (n = 0; n < num_params + num_extra; n++)
18426     g_value_unset (&paramv[n]);
18427   g_free (paramv);
18428 }
18429 
18430 static GVariant *
18431 _control_checkstop_skeleton_handle_get_property (
18432   GDBusConnection *connection G_GNUC_UNUSED,
18433   const gchar *sender G_GNUC_UNUSED,
18434   const gchar *object_path G_GNUC_UNUSED,
18435   const gchar *interface_name G_GNUC_UNUSED,
18436   const gchar *property_name,
18437   GError **error,
18438   gpointer user_data)
18439 {
18440   ControlCheckstopSkeleton *skeleton = CONTROL_CHECKSTOP_SKELETON (user_data);
18441   GValue value = G_VALUE_INIT;
18442   GParamSpec *pspec;
18443   _ExtendedGDBusPropertyInfo *info;
18444   GVariant *ret;
18445   ret = NULL;
18446   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_checkstop_interface_info.parent_struct, property_name);
18447   g_assert (info != NULL);
18448   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
18449   if (pspec == NULL)
18450     {
18451       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
18452     }
18453   else
18454     {
18455       g_value_init (&value, pspec->value_type);
18456       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
18457       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
18458       g_value_unset (&value);
18459     }
18460   return ret;
18461 }
18462 
18463 static gboolean
18464 _control_checkstop_skeleton_handle_set_property (
18465   GDBusConnection *connection G_GNUC_UNUSED,
18466   const gchar *sender G_GNUC_UNUSED,
18467   const gchar *object_path G_GNUC_UNUSED,
18468   const gchar *interface_name G_GNUC_UNUSED,
18469   const gchar *property_name,
18470   GVariant *variant,
18471   GError **error,
18472   gpointer user_data)
18473 {
18474   ControlCheckstopSkeleton *skeleton = CONTROL_CHECKSTOP_SKELETON (user_data);
18475   GValue value = G_VALUE_INIT;
18476   GParamSpec *pspec;
18477   _ExtendedGDBusPropertyInfo *info;
18478   gboolean ret;
18479   ret = FALSE;
18480   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_control_checkstop_interface_info.parent_struct, property_name);
18481   g_assert (info != NULL);
18482   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
18483   if (pspec == NULL)
18484     {
18485       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
18486     }
18487   else
18488     {
18489       if (info->use_gvariant)
18490         g_value_set_variant (&value, variant);
18491       else
18492         g_dbus_gvariant_to_gvalue (variant, &value);
18493       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
18494       g_value_unset (&value);
18495       ret = TRUE;
18496     }
18497   return ret;
18498 }
18499 
18500 static const GDBusInterfaceVTable _control_checkstop_skeleton_vtable =
18501 {
18502   _control_checkstop_skeleton_handle_method_call,
18503   _control_checkstop_skeleton_handle_get_property,
18504   _control_checkstop_skeleton_handle_set_property,
18505   {NULL}
18506 };
18507 
18508 static GDBusInterfaceInfo *
18509 control_checkstop_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
18510 {
18511   return control_checkstop_interface_info ();
18512 }
18513 
18514 static GDBusInterfaceVTable *
18515 control_checkstop_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
18516 {
18517   return (GDBusInterfaceVTable *) &_control_checkstop_skeleton_vtable;
18518 }
18519 
18520 static GVariant *
18521 control_checkstop_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
18522 {
18523   ControlCheckstopSkeleton *skeleton = CONTROL_CHECKSTOP_SKELETON (_skeleton);
18524 
18525   GVariantBuilder builder;
18526   guint n;
18527   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
18528   if (_control_checkstop_interface_info.parent_struct.properties == NULL)
18529     goto out;
18530   for (n = 0; _control_checkstop_interface_info.parent_struct.properties[n] != NULL; n++)
18531     {
18532       GDBusPropertyInfo *info = _control_checkstop_interface_info.parent_struct.properties[n];
18533       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
18534         {
18535           GVariant *value;
18536           value = _control_checkstop_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.openbmc.control.Checkstop", info->name, NULL, skeleton);
18537           if (value != NULL)
18538             {
18539               g_variant_take_ref (value);
18540               g_variant_builder_add (&builder, "{sv}", info->name, value);
18541               g_variant_unref (value);
18542             }
18543         }
18544     }
18545 out:
18546   return g_variant_builder_end (&builder);
18547 }
18548 
18549 static void
18550 control_checkstop_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
18551 {
18552 }
18553 
18554 static void control_checkstop_skeleton_iface_init (ControlCheckstopIface *iface);
18555 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
18556 G_DEFINE_TYPE_WITH_CODE (ControlCheckstopSkeleton, control_checkstop_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
18557                          G_ADD_PRIVATE (ControlCheckstopSkeleton)
18558                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_CHECKSTOP, control_checkstop_skeleton_iface_init));
18559 
18560 #else
18561 G_DEFINE_TYPE_WITH_CODE (ControlCheckstopSkeleton, control_checkstop_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
18562                          G_IMPLEMENT_INTERFACE (TYPE_CONTROL_CHECKSTOP, control_checkstop_skeleton_iface_init));
18563 
18564 #endif
18565 static void
18566 control_checkstop_skeleton_finalize (GObject *object)
18567 {
18568   ControlCheckstopSkeleton *skeleton = CONTROL_CHECKSTOP_SKELETON (object);
18569   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
18570   if (skeleton->priv->changed_properties_idle_source != NULL)
18571     g_source_destroy (skeleton->priv->changed_properties_idle_source);
18572   g_main_context_unref (skeleton->priv->context);
18573   g_mutex_clear (&skeleton->priv->lock);
18574   G_OBJECT_CLASS (control_checkstop_skeleton_parent_class)->finalize (object);
18575 }
18576 
18577 static void
18578 control_checkstop_skeleton_init (ControlCheckstopSkeleton *skeleton)
18579 {
18580 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
18581   skeleton->priv = control_checkstop_skeleton_get_instance_private (skeleton);
18582 #else
18583   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_CONTROL_CHECKSTOP_SKELETON, ControlCheckstopSkeletonPrivate);
18584 #endif
18585 
18586   g_mutex_init (&skeleton->priv->lock);
18587   skeleton->priv->context = g_main_context_ref_thread_default ();
18588 }
18589 
18590 static void
18591 control_checkstop_skeleton_class_init (ControlCheckstopSkeletonClass *klass)
18592 {
18593   GObjectClass *gobject_class;
18594   GDBusInterfaceSkeletonClass *skeleton_class;
18595 
18596   gobject_class = G_OBJECT_CLASS (klass);
18597   gobject_class->finalize = control_checkstop_skeleton_finalize;
18598 
18599   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
18600   skeleton_class->get_info = control_checkstop_skeleton_dbus_interface_get_info;
18601   skeleton_class->get_properties = control_checkstop_skeleton_dbus_interface_get_properties;
18602   skeleton_class->flush = control_checkstop_skeleton_dbus_interface_flush;
18603   skeleton_class->get_vtable = control_checkstop_skeleton_dbus_interface_get_vtable;
18604 
18605 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
18606   g_type_class_add_private (klass, sizeof (ControlCheckstopSkeletonPrivate));
18607 #endif
18608 }
18609 
18610 static void
18611 control_checkstop_skeleton_iface_init (ControlCheckstopIface *iface)
18612 {
18613 }
18614 
18615 /**
18616  * control_checkstop_skeleton_new:
18617  *
18618  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Checkstop.top_of_page">org.openbmc.control.Checkstop</link>.
18619  *
18620  * Returns: (transfer full) (type ControlCheckstopSkeleton): The skeleton object.
18621  */
18622 ControlCheckstop *
18623 control_checkstop_skeleton_new (void)
18624 {
18625   return CONTROL_CHECKSTOP (g_object_new (TYPE_CONTROL_CHECKSTOP_SKELETON, NULL));
18626 }
18627 
18628 /* ------------------------------------------------------------------------
18629  * Code for interface org.openbmc.Watchdog
18630  * ------------------------------------------------------------------------
18631  */
18632 
18633 /**
18634  * SECTION:Watchdog
18635  * @title: Watchdog
18636  * @short_description: Generated C code for the org.openbmc.Watchdog D-Bus interface
18637  *
18638  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-Watchdog.top_of_page">org.openbmc.Watchdog</link> D-Bus interface in C.
18639  */
18640 
18641 /* ---- Introspection data for org.openbmc.Watchdog ---- */
18642 
18643 static const _ExtendedGDBusMethodInfo _watchdog_method_info_start =
18644 {
18645   {
18646     -1,
18647     (gchar *) "start",
18648     NULL,
18649     NULL,
18650     NULL
18651   },
18652   "handle-start",
18653   FALSE
18654 };
18655 
18656 static const _ExtendedGDBusMethodInfo _watchdog_method_info_poke =
18657 {
18658   {
18659     -1,
18660     (gchar *) "poke",
18661     NULL,
18662     NULL,
18663     NULL
18664   },
18665   "handle-poke",
18666   FALSE
18667 };
18668 
18669 static const _ExtendedGDBusMethodInfo _watchdog_method_info_stop =
18670 {
18671   {
18672     -1,
18673     (gchar *) "stop",
18674     NULL,
18675     NULL,
18676     NULL
18677   },
18678   "handle-stop",
18679   FALSE
18680 };
18681 
18682 static const _ExtendedGDBusArgInfo _watchdog_method_info_set_IN_ARG_interval =
18683 {
18684   {
18685     -1,
18686     (gchar *) "interval",
18687     (gchar *) "i",
18688     NULL
18689   },
18690   FALSE
18691 };
18692 
18693 static const _ExtendedGDBusArgInfo * const _watchdog_method_info_set_IN_ARG_pointers[] =
18694 {
18695   &_watchdog_method_info_set_IN_ARG_interval,
18696   NULL
18697 };
18698 
18699 static const _ExtendedGDBusMethodInfo _watchdog_method_info_set =
18700 {
18701   {
18702     -1,
18703     (gchar *) "set",
18704     (GDBusArgInfo **) &_watchdog_method_info_set_IN_ARG_pointers,
18705     NULL,
18706     NULL
18707   },
18708   "handle-set",
18709   FALSE
18710 };
18711 
18712 static const _ExtendedGDBusMethodInfo * const _watchdog_method_info_pointers[] =
18713 {
18714   &_watchdog_method_info_start,
18715   &_watchdog_method_info_poke,
18716   &_watchdog_method_info_stop,
18717   &_watchdog_method_info_set,
18718   NULL
18719 };
18720 
18721 static const _ExtendedGDBusSignalInfo _watchdog_signal_info_watchdog_error =
18722 {
18723   {
18724     -1,
18725     (gchar *) "WatchdogError",
18726     NULL,
18727     NULL
18728   },
18729   "watchdog-error"
18730 };
18731 
18732 static const _ExtendedGDBusSignalInfo * const _watchdog_signal_info_pointers[] =
18733 {
18734   &_watchdog_signal_info_watchdog_error,
18735   NULL
18736 };
18737 
18738 static const _ExtendedGDBusPropertyInfo _watchdog_property_info_watchdog =
18739 {
18740   {
18741     -1,
18742     (gchar *) "watchdog",
18743     (gchar *) "i",
18744     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
18745     NULL
18746   },
18747   "watchdog",
18748   FALSE
18749 };
18750 
18751 static const _ExtendedGDBusPropertyInfo _watchdog_property_info_poll_interval =
18752 {
18753   {
18754     -1,
18755     (gchar *) "poll_interval",
18756     (gchar *) "i",
18757     G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
18758     NULL
18759   },
18760   "poll-interval",
18761   FALSE
18762 };
18763 
18764 static const _ExtendedGDBusPropertyInfo * const _watchdog_property_info_pointers[] =
18765 {
18766   &_watchdog_property_info_watchdog,
18767   &_watchdog_property_info_poll_interval,
18768   NULL
18769 };
18770 
18771 static const _ExtendedGDBusInterfaceInfo _watchdog_interface_info =
18772 {
18773   {
18774     -1,
18775     (gchar *) "org.openbmc.Watchdog",
18776     (GDBusMethodInfo **) &_watchdog_method_info_pointers,
18777     (GDBusSignalInfo **) &_watchdog_signal_info_pointers,
18778     (GDBusPropertyInfo **) &_watchdog_property_info_pointers,
18779     NULL
18780   },
18781   "watchdog",
18782 };
18783 
18784 
18785 /**
18786  * watchdog_interface_info:
18787  *
18788  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-Watchdog.top_of_page">org.openbmc.Watchdog</link> D-Bus interface.
18789  *
18790  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
18791  */
18792 GDBusInterfaceInfo *
18793 watchdog_interface_info (void)
18794 {
18795   return (GDBusInterfaceInfo *) &_watchdog_interface_info.parent_struct;
18796 }
18797 
18798 /**
18799  * watchdog_override_properties:
18800  * @klass: The class structure for a #GObject<!-- -->-derived class.
18801  * @property_id_begin: The property id to assign to the first overridden property.
18802  *
18803  * Overrides all #GObject properties in the #Watchdog interface for a concrete class.
18804  * The properties are overridden in the order they are defined.
18805  *
18806  * Returns: The last property id.
18807  */
18808 guint
18809 watchdog_override_properties (GObjectClass *klass, guint property_id_begin)
18810 {
18811   g_object_class_override_property (klass, property_id_begin++, "watchdog");
18812   g_object_class_override_property (klass, property_id_begin++, "poll-interval");
18813   return property_id_begin - 1;
18814 }
18815 
18816 
18817 
18818 /**
18819  * Watchdog:
18820  *
18821  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Watchdog.top_of_page">org.openbmc.Watchdog</link>.
18822  */
18823 
18824 /**
18825  * WatchdogIface:
18826  * @parent_iface: The parent interface.
18827  * @handle_poke: Handler for the #Watchdog::handle-poke signal.
18828  * @handle_set: Handler for the #Watchdog::handle-set signal.
18829  * @handle_start: Handler for the #Watchdog::handle-start signal.
18830  * @handle_stop: Handler for the #Watchdog::handle-stop signal.
18831  * @get_poll_interval: Getter for the #Watchdog:poll-interval property.
18832  * @get_watchdog: Getter for the #Watchdog:watchdog property.
18833  * @watchdog_error: Handler for the #Watchdog::watchdog-error signal.
18834  *
18835  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Watchdog.top_of_page">org.openbmc.Watchdog</link>.
18836  */
18837 
18838 typedef WatchdogIface WatchdogInterface;
18839 G_DEFINE_INTERFACE (Watchdog, watchdog, G_TYPE_OBJECT);
18840 
18841 static void
18842 watchdog_default_init (WatchdogIface *iface)
18843 {
18844   /* GObject signals for incoming D-Bus method calls: */
18845   /**
18846    * Watchdog::handle-start:
18847    * @object: A #Watchdog.
18848    * @invocation: A #GDBusMethodInvocation.
18849    *
18850    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Watchdog.start">start()</link> D-Bus method.
18851    *
18852    * 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 watchdog_complete_start() 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.
18853    *
18854    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
18855    */
18856   g_signal_new ("handle-start",
18857     G_TYPE_FROM_INTERFACE (iface),
18858     G_SIGNAL_RUN_LAST,
18859     G_STRUCT_OFFSET (WatchdogIface, handle_start),
18860     g_signal_accumulator_true_handled,
18861     NULL,
18862     g_cclosure_marshal_generic,
18863     G_TYPE_BOOLEAN,
18864     1,
18865     G_TYPE_DBUS_METHOD_INVOCATION);
18866 
18867   /**
18868    * Watchdog::handle-poke:
18869    * @object: A #Watchdog.
18870    * @invocation: A #GDBusMethodInvocation.
18871    *
18872    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Watchdog.poke">poke()</link> D-Bus method.
18873    *
18874    * 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 watchdog_complete_poke() 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.
18875    *
18876    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
18877    */
18878   g_signal_new ("handle-poke",
18879     G_TYPE_FROM_INTERFACE (iface),
18880     G_SIGNAL_RUN_LAST,
18881     G_STRUCT_OFFSET (WatchdogIface, handle_poke),
18882     g_signal_accumulator_true_handled,
18883     NULL,
18884     g_cclosure_marshal_generic,
18885     G_TYPE_BOOLEAN,
18886     1,
18887     G_TYPE_DBUS_METHOD_INVOCATION);
18888 
18889   /**
18890    * Watchdog::handle-stop:
18891    * @object: A #Watchdog.
18892    * @invocation: A #GDBusMethodInvocation.
18893    *
18894    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Watchdog.stop">stop()</link> D-Bus method.
18895    *
18896    * 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 watchdog_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.
18897    *
18898    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
18899    */
18900   g_signal_new ("handle-stop",
18901     G_TYPE_FROM_INTERFACE (iface),
18902     G_SIGNAL_RUN_LAST,
18903     G_STRUCT_OFFSET (WatchdogIface, handle_stop),
18904     g_signal_accumulator_true_handled,
18905     NULL,
18906     g_cclosure_marshal_generic,
18907     G_TYPE_BOOLEAN,
18908     1,
18909     G_TYPE_DBUS_METHOD_INVOCATION);
18910 
18911   /**
18912    * Watchdog::handle-set:
18913    * @object: A #Watchdog.
18914    * @invocation: A #GDBusMethodInvocation.
18915    * @arg_interval: Argument passed by remote caller.
18916    *
18917    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Watchdog.set">set()</link> D-Bus method.
18918    *
18919    * 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 watchdog_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.
18920    *
18921    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
18922    */
18923   g_signal_new ("handle-set",
18924     G_TYPE_FROM_INTERFACE (iface),
18925     G_SIGNAL_RUN_LAST,
18926     G_STRUCT_OFFSET (WatchdogIface, handle_set),
18927     g_signal_accumulator_true_handled,
18928     NULL,
18929     g_cclosure_marshal_generic,
18930     G_TYPE_BOOLEAN,
18931     2,
18932     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_INT);
18933 
18934   /* GObject signals for received D-Bus signals: */
18935   /**
18936    * Watchdog::watchdog-error:
18937    * @object: A #Watchdog.
18938    *
18939    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Watchdog.WatchdogError">"WatchdogError"</link> is received.
18940    *
18941    * 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.
18942    */
18943   g_signal_new ("watchdog-error",
18944     G_TYPE_FROM_INTERFACE (iface),
18945     G_SIGNAL_RUN_LAST,
18946     G_STRUCT_OFFSET (WatchdogIface, watchdog_error),
18947     NULL,
18948     NULL,
18949     g_cclosure_marshal_generic,
18950     G_TYPE_NONE,
18951     0);
18952 
18953   /* GObject properties for D-Bus properties: */
18954   /**
18955    * Watchdog:watchdog:
18956    *
18957    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Watchdog.watchdog">"watchdog"</link>.
18958    *
18959    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
18960    */
18961   g_object_interface_install_property (iface,
18962     g_param_spec_int ("watchdog", "watchdog", "watchdog", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
18963   /**
18964    * Watchdog:poll-interval:
18965    *
18966    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Watchdog.poll_interval">"poll_interval"</link>.
18967    *
18968    * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.
18969    */
18970   g_object_interface_install_property (iface,
18971     g_param_spec_int ("poll-interval", "poll_interval", "poll_interval", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
18972 }
18973 
18974 /**
18975  * watchdog_get_watchdog: (skip)
18976  * @object: A #Watchdog.
18977  *
18978  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Watchdog.watchdog">"watchdog"</link> D-Bus property.
18979  *
18980  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
18981  *
18982  * Returns: The property value.
18983  */
18984 gint
18985 watchdog_get_watchdog (Watchdog *object)
18986 {
18987   return WATCHDOG_GET_IFACE (object)->get_watchdog (object);
18988 }
18989 
18990 /**
18991  * watchdog_set_watchdog: (skip)
18992  * @object: A #Watchdog.
18993  * @value: The value to set.
18994  *
18995  * Sets the <link linkend="gdbus-property-org-openbmc-Watchdog.watchdog">"watchdog"</link> D-Bus property to @value.
18996  *
18997  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
18998  */
18999 void
19000 watchdog_set_watchdog (Watchdog *object, gint value)
19001 {
19002   g_object_set (G_OBJECT (object), "watchdog", value, NULL);
19003 }
19004 
19005 /**
19006  * watchdog_get_poll_interval: (skip)
19007  * @object: A #Watchdog.
19008  *
19009  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Watchdog.poll_interval">"poll_interval"</link> D-Bus property.
19010  *
19011  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
19012  *
19013  * Returns: The property value.
19014  */
19015 gint
19016 watchdog_get_poll_interval (Watchdog *object)
19017 {
19018   return WATCHDOG_GET_IFACE (object)->get_poll_interval (object);
19019 }
19020 
19021 /**
19022  * watchdog_set_poll_interval: (skip)
19023  * @object: A #Watchdog.
19024  * @value: The value to set.
19025  *
19026  * Sets the <link linkend="gdbus-property-org-openbmc-Watchdog.poll_interval">"poll_interval"</link> D-Bus property to @value.
19027  *
19028  * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.
19029  */
19030 void
19031 watchdog_set_poll_interval (Watchdog *object, gint value)
19032 {
19033   g_object_set (G_OBJECT (object), "poll-interval", value, NULL);
19034 }
19035 
19036 /**
19037  * watchdog_emit_watchdog_error:
19038  * @object: A #Watchdog.
19039  *
19040  * Emits the <link linkend="gdbus-signal-org-openbmc-Watchdog.WatchdogError">"WatchdogError"</link> D-Bus signal.
19041  */
19042 void
19043 watchdog_emit_watchdog_error (
19044     Watchdog *object)
19045 {
19046   g_signal_emit_by_name (object, "watchdog-error");
19047 }
19048 
19049 /**
19050  * watchdog_call_start:
19051  * @proxy: A #WatchdogProxy.
19052  * @cancellable: (allow-none): A #GCancellable or %NULL.
19053  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
19054  * @user_data: User data to pass to @callback.
19055  *
19056  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Watchdog.start">start()</link> D-Bus method on @proxy.
19057  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
19058  * You can then call watchdog_call_start_finish() to get the result of the operation.
19059  *
19060  * See watchdog_call_start_sync() for the synchronous, blocking version of this method.
19061  */
19062 void
19063 watchdog_call_start (
19064     Watchdog *proxy,
19065     GCancellable *cancellable,
19066     GAsyncReadyCallback callback,
19067     gpointer user_data)
19068 {
19069   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
19070     "start",
19071     g_variant_new ("()"),
19072     G_DBUS_CALL_FLAGS_NONE,
19073     -1,
19074     cancellable,
19075     callback,
19076     user_data);
19077 }
19078 
19079 /**
19080  * watchdog_call_start_finish:
19081  * @proxy: A #WatchdogProxy.
19082  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to watchdog_call_start().
19083  * @error: Return location for error or %NULL.
19084  *
19085  * Finishes an operation started with watchdog_call_start().
19086  *
19087  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
19088  */
19089 gboolean
19090 watchdog_call_start_finish (
19091     Watchdog *proxy,
19092     GAsyncResult *res,
19093     GError **error)
19094 {
19095   GVariant *_ret;
19096   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
19097   if (_ret == NULL)
19098     goto _out;
19099   g_variant_get (_ret,
19100                  "()");
19101   g_variant_unref (_ret);
19102 _out:
19103   return _ret != NULL;
19104 }
19105 
19106 /**
19107  * watchdog_call_start_sync:
19108  * @proxy: A #WatchdogProxy.
19109  * @cancellable: (allow-none): A #GCancellable or %NULL.
19110  * @error: Return location for error or %NULL.
19111  *
19112  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Watchdog.start">start()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
19113  *
19114  * See watchdog_call_start() for the asynchronous version of this method.
19115  *
19116  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
19117  */
19118 gboolean
19119 watchdog_call_start_sync (
19120     Watchdog *proxy,
19121     GCancellable *cancellable,
19122     GError **error)
19123 {
19124   GVariant *_ret;
19125   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
19126     "start",
19127     g_variant_new ("()"),
19128     G_DBUS_CALL_FLAGS_NONE,
19129     -1,
19130     cancellable,
19131     error);
19132   if (_ret == NULL)
19133     goto _out;
19134   g_variant_get (_ret,
19135                  "()");
19136   g_variant_unref (_ret);
19137 _out:
19138   return _ret != NULL;
19139 }
19140 
19141 /**
19142  * watchdog_call_poke:
19143  * @proxy: A #WatchdogProxy.
19144  * @cancellable: (allow-none): A #GCancellable or %NULL.
19145  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
19146  * @user_data: User data to pass to @callback.
19147  *
19148  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Watchdog.poke">poke()</link> D-Bus method on @proxy.
19149  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
19150  * You can then call watchdog_call_poke_finish() to get the result of the operation.
19151  *
19152  * See watchdog_call_poke_sync() for the synchronous, blocking version of this method.
19153  */
19154 void
19155 watchdog_call_poke (
19156     Watchdog *proxy,
19157     GCancellable *cancellable,
19158     GAsyncReadyCallback callback,
19159     gpointer user_data)
19160 {
19161   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
19162     "poke",
19163     g_variant_new ("()"),
19164     G_DBUS_CALL_FLAGS_NONE,
19165     -1,
19166     cancellable,
19167     callback,
19168     user_data);
19169 }
19170 
19171 /**
19172  * watchdog_call_poke_finish:
19173  * @proxy: A #WatchdogProxy.
19174  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to watchdog_call_poke().
19175  * @error: Return location for error or %NULL.
19176  *
19177  * Finishes an operation started with watchdog_call_poke().
19178  *
19179  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
19180  */
19181 gboolean
19182 watchdog_call_poke_finish (
19183     Watchdog *proxy,
19184     GAsyncResult *res,
19185     GError **error)
19186 {
19187   GVariant *_ret;
19188   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
19189   if (_ret == NULL)
19190     goto _out;
19191   g_variant_get (_ret,
19192                  "()");
19193   g_variant_unref (_ret);
19194 _out:
19195   return _ret != NULL;
19196 }
19197 
19198 /**
19199  * watchdog_call_poke_sync:
19200  * @proxy: A #WatchdogProxy.
19201  * @cancellable: (allow-none): A #GCancellable or %NULL.
19202  * @error: Return location for error or %NULL.
19203  *
19204  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Watchdog.poke">poke()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
19205  *
19206  * See watchdog_call_poke() for the asynchronous version of this method.
19207  *
19208  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
19209  */
19210 gboolean
19211 watchdog_call_poke_sync (
19212     Watchdog *proxy,
19213     GCancellable *cancellable,
19214     GError **error)
19215 {
19216   GVariant *_ret;
19217   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
19218     "poke",
19219     g_variant_new ("()"),
19220     G_DBUS_CALL_FLAGS_NONE,
19221     -1,
19222     cancellable,
19223     error);
19224   if (_ret == NULL)
19225     goto _out;
19226   g_variant_get (_ret,
19227                  "()");
19228   g_variant_unref (_ret);
19229 _out:
19230   return _ret != NULL;
19231 }
19232 
19233 /**
19234  * watchdog_call_stop:
19235  * @proxy: A #WatchdogProxy.
19236  * @cancellable: (allow-none): A #GCancellable or %NULL.
19237  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
19238  * @user_data: User data to pass to @callback.
19239  *
19240  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Watchdog.stop">stop()</link> D-Bus method on @proxy.
19241  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
19242  * You can then call watchdog_call_stop_finish() to get the result of the operation.
19243  *
19244  * See watchdog_call_stop_sync() for the synchronous, blocking version of this method.
19245  */
19246 void
19247 watchdog_call_stop (
19248     Watchdog *proxy,
19249     GCancellable *cancellable,
19250     GAsyncReadyCallback callback,
19251     gpointer user_data)
19252 {
19253   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
19254     "stop",
19255     g_variant_new ("()"),
19256     G_DBUS_CALL_FLAGS_NONE,
19257     -1,
19258     cancellable,
19259     callback,
19260     user_data);
19261 }
19262 
19263 /**
19264  * watchdog_call_stop_finish:
19265  * @proxy: A #WatchdogProxy.
19266  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to watchdog_call_stop().
19267  * @error: Return location for error or %NULL.
19268  *
19269  * Finishes an operation started with watchdog_call_stop().
19270  *
19271  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
19272  */
19273 gboolean
19274 watchdog_call_stop_finish (
19275     Watchdog *proxy,
19276     GAsyncResult *res,
19277     GError **error)
19278 {
19279   GVariant *_ret;
19280   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
19281   if (_ret == NULL)
19282     goto _out;
19283   g_variant_get (_ret,
19284                  "()");
19285   g_variant_unref (_ret);
19286 _out:
19287   return _ret != NULL;
19288 }
19289 
19290 /**
19291  * watchdog_call_stop_sync:
19292  * @proxy: A #WatchdogProxy.
19293  * @cancellable: (allow-none): A #GCancellable or %NULL.
19294  * @error: Return location for error or %NULL.
19295  *
19296  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Watchdog.stop">stop()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
19297  *
19298  * See watchdog_call_stop() for the asynchronous version of this method.
19299  *
19300  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
19301  */
19302 gboolean
19303 watchdog_call_stop_sync (
19304     Watchdog *proxy,
19305     GCancellable *cancellable,
19306     GError **error)
19307 {
19308   GVariant *_ret;
19309   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
19310     "stop",
19311     g_variant_new ("()"),
19312     G_DBUS_CALL_FLAGS_NONE,
19313     -1,
19314     cancellable,
19315     error);
19316   if (_ret == NULL)
19317     goto _out;
19318   g_variant_get (_ret,
19319                  "()");
19320   g_variant_unref (_ret);
19321 _out:
19322   return _ret != NULL;
19323 }
19324 
19325 /**
19326  * watchdog_call_set:
19327  * @proxy: A #WatchdogProxy.
19328  * @arg_interval: Argument to pass with the method invocation.
19329  * @cancellable: (allow-none): A #GCancellable or %NULL.
19330  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
19331  * @user_data: User data to pass to @callback.
19332  *
19333  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Watchdog.set">set()</link> D-Bus method on @proxy.
19334  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
19335  * You can then call watchdog_call_set_finish() to get the result of the operation.
19336  *
19337  * See watchdog_call_set_sync() for the synchronous, blocking version of this method.
19338  */
19339 void
19340 watchdog_call_set (
19341     Watchdog *proxy,
19342     gint arg_interval,
19343     GCancellable *cancellable,
19344     GAsyncReadyCallback callback,
19345     gpointer user_data)
19346 {
19347   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
19348     "set",
19349     g_variant_new ("(i)",
19350                    arg_interval),
19351     G_DBUS_CALL_FLAGS_NONE,
19352     -1,
19353     cancellable,
19354     callback,
19355     user_data);
19356 }
19357 
19358 /**
19359  * watchdog_call_set_finish:
19360  * @proxy: A #WatchdogProxy.
19361  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to watchdog_call_set().
19362  * @error: Return location for error or %NULL.
19363  *
19364  * Finishes an operation started with watchdog_call_set().
19365  *
19366  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
19367  */
19368 gboolean
19369 watchdog_call_set_finish (
19370     Watchdog *proxy,
19371     GAsyncResult *res,
19372     GError **error)
19373 {
19374   GVariant *_ret;
19375   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
19376   if (_ret == NULL)
19377     goto _out;
19378   g_variant_get (_ret,
19379                  "()");
19380   g_variant_unref (_ret);
19381 _out:
19382   return _ret != NULL;
19383 }
19384 
19385 /**
19386  * watchdog_call_set_sync:
19387  * @proxy: A #WatchdogProxy.
19388  * @arg_interval: Argument to pass with the method invocation.
19389  * @cancellable: (allow-none): A #GCancellable or %NULL.
19390  * @error: Return location for error or %NULL.
19391  *
19392  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Watchdog.set">set()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
19393  *
19394  * See watchdog_call_set() for the asynchronous version of this method.
19395  *
19396  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
19397  */
19398 gboolean
19399 watchdog_call_set_sync (
19400     Watchdog *proxy,
19401     gint arg_interval,
19402     GCancellable *cancellable,
19403     GError **error)
19404 {
19405   GVariant *_ret;
19406   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
19407     "set",
19408     g_variant_new ("(i)",
19409                    arg_interval),
19410     G_DBUS_CALL_FLAGS_NONE,
19411     -1,
19412     cancellable,
19413     error);
19414   if (_ret == NULL)
19415     goto _out;
19416   g_variant_get (_ret,
19417                  "()");
19418   g_variant_unref (_ret);
19419 _out:
19420   return _ret != NULL;
19421 }
19422 
19423 /**
19424  * watchdog_complete_start:
19425  * @object: A #Watchdog.
19426  * @invocation: (transfer full): A #GDBusMethodInvocation.
19427  *
19428  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Watchdog.start">start()</link> 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.
19429  *
19430  * This method will free @invocation, you cannot use it afterwards.
19431  */
19432 void
19433 watchdog_complete_start (
19434     Watchdog *object,
19435     GDBusMethodInvocation *invocation)
19436 {
19437   g_dbus_method_invocation_return_value (invocation,
19438     g_variant_new ("()"));
19439 }
19440 
19441 /**
19442  * watchdog_complete_poke:
19443  * @object: A #Watchdog.
19444  * @invocation: (transfer full): A #GDBusMethodInvocation.
19445  *
19446  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Watchdog.poke">poke()</link> 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.
19447  *
19448  * This method will free @invocation, you cannot use it afterwards.
19449  */
19450 void
19451 watchdog_complete_poke (
19452     Watchdog *object,
19453     GDBusMethodInvocation *invocation)
19454 {
19455   g_dbus_method_invocation_return_value (invocation,
19456     g_variant_new ("()"));
19457 }
19458 
19459 /**
19460  * watchdog_complete_stop:
19461  * @object: A #Watchdog.
19462  * @invocation: (transfer full): A #GDBusMethodInvocation.
19463  *
19464  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Watchdog.stop">stop()</link> 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.
19465  *
19466  * This method will free @invocation, you cannot use it afterwards.
19467  */
19468 void
19469 watchdog_complete_stop (
19470     Watchdog *object,
19471     GDBusMethodInvocation *invocation)
19472 {
19473   g_dbus_method_invocation_return_value (invocation,
19474     g_variant_new ("()"));
19475 }
19476 
19477 /**
19478  * watchdog_complete_set:
19479  * @object: A #Watchdog.
19480  * @invocation: (transfer full): A #GDBusMethodInvocation.
19481  *
19482  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Watchdog.set">set()</link> 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.
19483  *
19484  * This method will free @invocation, you cannot use it afterwards.
19485  */
19486 void
19487 watchdog_complete_set (
19488     Watchdog *object,
19489     GDBusMethodInvocation *invocation)
19490 {
19491   g_dbus_method_invocation_return_value (invocation,
19492     g_variant_new ("()"));
19493 }
19494 
19495 /* ------------------------------------------------------------------------ */
19496 
19497 /**
19498  * WatchdogProxy:
19499  *
19500  * The #WatchdogProxy structure contains only private data and should only be accessed using the provided API.
19501  */
19502 
19503 /**
19504  * WatchdogProxyClass:
19505  * @parent_class: The parent class.
19506  *
19507  * Class structure for #WatchdogProxy.
19508  */
19509 
19510 struct _WatchdogProxyPrivate
19511 {
19512   GData *qdata;
19513 };
19514 
19515 static void watchdog_proxy_iface_init (WatchdogIface *iface);
19516 
19517 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
19518 G_DEFINE_TYPE_WITH_CODE (WatchdogProxy, watchdog_proxy, G_TYPE_DBUS_PROXY,
19519                          G_ADD_PRIVATE (WatchdogProxy)
19520                          G_IMPLEMENT_INTERFACE (TYPE_WATCHDOG, watchdog_proxy_iface_init));
19521 
19522 #else
19523 G_DEFINE_TYPE_WITH_CODE (WatchdogProxy, watchdog_proxy, G_TYPE_DBUS_PROXY,
19524                          G_IMPLEMENT_INTERFACE (TYPE_WATCHDOG, watchdog_proxy_iface_init));
19525 
19526 #endif
19527 static void
19528 watchdog_proxy_finalize (GObject *object)
19529 {
19530   WatchdogProxy *proxy = WATCHDOG_PROXY (object);
19531   g_datalist_clear (&proxy->priv->qdata);
19532   G_OBJECT_CLASS (watchdog_proxy_parent_class)->finalize (object);
19533 }
19534 
19535 static void
19536 watchdog_proxy_get_property (GObject      *object,
19537   guint         prop_id,
19538   GValue       *value,
19539   GParamSpec   *pspec G_GNUC_UNUSED)
19540 {
19541   const _ExtendedGDBusPropertyInfo *info;
19542   GVariant *variant;
19543   g_assert (prop_id != 0 && prop_id - 1 < 2);
19544   info = _watchdog_property_info_pointers[prop_id - 1];
19545   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
19546   if (info->use_gvariant)
19547     {
19548       g_value_set_variant (value, variant);
19549     }
19550   else
19551     {
19552       if (variant != NULL)
19553         g_dbus_gvariant_to_gvalue (variant, value);
19554     }
19555   if (variant != NULL)
19556     g_variant_unref (variant);
19557 }
19558 
19559 static void
19560 watchdog_proxy_set_property_cb (GDBusProxy *proxy,
19561   GAsyncResult *res,
19562   gpointer      user_data)
19563 {
19564   const _ExtendedGDBusPropertyInfo *info = user_data;
19565   GError *error;
19566   GVariant *_ret;
19567   error = NULL;
19568   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
19569   if (!_ret)
19570     {
19571       g_warning ("Error setting property '%s' on interface org.openbmc.Watchdog: %s (%s, %d)",
19572                  info->parent_struct.name,
19573                  error->message, g_quark_to_string (error->domain), error->code);
19574       g_error_free (error);
19575     }
19576   else
19577     {
19578       g_variant_unref (_ret);
19579     }
19580 }
19581 
19582 static void
19583 watchdog_proxy_set_property (GObject      *object,
19584   guint         prop_id,
19585   const GValue *value,
19586   GParamSpec   *pspec G_GNUC_UNUSED)
19587 {
19588   const _ExtendedGDBusPropertyInfo *info;
19589   GVariant *variant;
19590   g_assert (prop_id != 0 && prop_id - 1 < 2);
19591   info = _watchdog_property_info_pointers[prop_id - 1];
19592   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
19593   g_dbus_proxy_call (G_DBUS_PROXY (object),
19594     "org.freedesktop.DBus.Properties.Set",
19595     g_variant_new ("(ssv)", "org.openbmc.Watchdog", info->parent_struct.name, variant),
19596     G_DBUS_CALL_FLAGS_NONE,
19597     -1,
19598     NULL, (GAsyncReadyCallback) watchdog_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
19599   g_variant_unref (variant);
19600 }
19601 
19602 static void
19603 watchdog_proxy_g_signal (GDBusProxy *proxy,
19604   const gchar *sender_name G_GNUC_UNUSED,
19605   const gchar *signal_name,
19606   GVariant *parameters)
19607 {
19608   _ExtendedGDBusSignalInfo *info;
19609   GVariantIter iter;
19610   GVariant *child;
19611   GValue *paramv;
19612   guint num_params;
19613   guint n;
19614   guint signal_id;
19615   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_watchdog_interface_info.parent_struct, signal_name);
19616   if (info == NULL)
19617     return;
19618   num_params = g_variant_n_children (parameters);
19619   paramv = g_new0 (GValue, num_params + 1);
19620   g_value_init (&paramv[0], TYPE_WATCHDOG);
19621   g_value_set_object (&paramv[0], proxy);
19622   g_variant_iter_init (&iter, parameters);
19623   n = 1;
19624   while ((child = g_variant_iter_next_value (&iter)) != NULL)
19625     {
19626       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
19627       if (arg_info->use_gvariant)
19628         {
19629           g_value_init (&paramv[n], G_TYPE_VARIANT);
19630           g_value_set_variant (&paramv[n], child);
19631           n++;
19632         }
19633       else
19634         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
19635       g_variant_unref (child);
19636     }
19637   signal_id = g_signal_lookup (info->signal_name, TYPE_WATCHDOG);
19638   g_signal_emitv (paramv, signal_id, 0, NULL);
19639   for (n = 0; n < num_params + 1; n++)
19640     g_value_unset (&paramv[n]);
19641   g_free (paramv);
19642 }
19643 
19644 static void
19645 watchdog_proxy_g_properties_changed (GDBusProxy *_proxy,
19646   GVariant *changed_properties,
19647   const gchar *const *invalidated_properties)
19648 {
19649   WatchdogProxy *proxy = WATCHDOG_PROXY (_proxy);
19650   guint n;
19651   const gchar *key;
19652   GVariantIter *iter;
19653   _ExtendedGDBusPropertyInfo *info;
19654   g_variant_get (changed_properties, "a{sv}", &iter);
19655   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
19656     {
19657       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_watchdog_interface_info.parent_struct, key);
19658       g_datalist_remove_data (&proxy->priv->qdata, key);
19659       if (info != NULL)
19660         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
19661     }
19662   g_variant_iter_free (iter);
19663   for (n = 0; invalidated_properties[n] != NULL; n++)
19664     {
19665       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_watchdog_interface_info.parent_struct, invalidated_properties[n]);
19666       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
19667       if (info != NULL)
19668         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
19669     }
19670 }
19671 
19672 static gint
19673 watchdog_proxy_get_watchdog (Watchdog *object)
19674 {
19675   WatchdogProxy *proxy = WATCHDOG_PROXY (object);
19676   GVariant *variant;
19677   gint value = 0;
19678   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "watchdog");
19679   if (variant != NULL)
19680     {
19681       value = g_variant_get_int32 (variant);
19682       g_variant_unref (variant);
19683     }
19684   return value;
19685 }
19686 
19687 static gint
19688 watchdog_proxy_get_poll_interval (Watchdog *object)
19689 {
19690   WatchdogProxy *proxy = WATCHDOG_PROXY (object);
19691   GVariant *variant;
19692   gint value = 0;
19693   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "poll_interval");
19694   if (variant != NULL)
19695     {
19696       value = g_variant_get_int32 (variant);
19697       g_variant_unref (variant);
19698     }
19699   return value;
19700 }
19701 
19702 static void
19703 watchdog_proxy_init (WatchdogProxy *proxy)
19704 {
19705 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
19706   proxy->priv = watchdog_proxy_get_instance_private (proxy);
19707 #else
19708   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_WATCHDOG_PROXY, WatchdogProxyPrivate);
19709 #endif
19710 
19711   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), watchdog_interface_info ());
19712 }
19713 
19714 static void
19715 watchdog_proxy_class_init (WatchdogProxyClass *klass)
19716 {
19717   GObjectClass *gobject_class;
19718   GDBusProxyClass *proxy_class;
19719 
19720   gobject_class = G_OBJECT_CLASS (klass);
19721   gobject_class->finalize     = watchdog_proxy_finalize;
19722   gobject_class->get_property = watchdog_proxy_get_property;
19723   gobject_class->set_property = watchdog_proxy_set_property;
19724 
19725   proxy_class = G_DBUS_PROXY_CLASS (klass);
19726   proxy_class->g_signal = watchdog_proxy_g_signal;
19727   proxy_class->g_properties_changed = watchdog_proxy_g_properties_changed;
19728 
19729   watchdog_override_properties (gobject_class, 1);
19730 
19731 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
19732   g_type_class_add_private (klass, sizeof (WatchdogProxyPrivate));
19733 #endif
19734 }
19735 
19736 static void
19737 watchdog_proxy_iface_init (WatchdogIface *iface)
19738 {
19739   iface->get_watchdog = watchdog_proxy_get_watchdog;
19740   iface->get_poll_interval = watchdog_proxy_get_poll_interval;
19741 }
19742 
19743 /**
19744  * watchdog_proxy_new:
19745  * @connection: A #GDBusConnection.
19746  * @flags: Flags from the #GDBusProxyFlags enumeration.
19747  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
19748  * @object_path: An object path.
19749  * @cancellable: (allow-none): A #GCancellable or %NULL.
19750  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
19751  * @user_data: User data to pass to @callback.
19752  *
19753  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Watchdog.top_of_page">org.openbmc.Watchdog</link>. See g_dbus_proxy_new() for more details.
19754  *
19755  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
19756  * You can then call watchdog_proxy_new_finish() to get the result of the operation.
19757  *
19758  * See watchdog_proxy_new_sync() for the synchronous, blocking version of this constructor.
19759  */
19760 void
19761 watchdog_proxy_new (
19762     GDBusConnection     *connection,
19763     GDBusProxyFlags      flags,
19764     const gchar         *name,
19765     const gchar         *object_path,
19766     GCancellable        *cancellable,
19767     GAsyncReadyCallback  callback,
19768     gpointer             user_data)
19769 {
19770   g_async_initable_new_async (TYPE_WATCHDOG_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.openbmc.Watchdog", NULL);
19771 }
19772 
19773 /**
19774  * watchdog_proxy_new_finish:
19775  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to watchdog_proxy_new().
19776  * @error: Return location for error or %NULL
19777  *
19778  * Finishes an operation started with watchdog_proxy_new().
19779  *
19780  * Returns: (transfer full) (type WatchdogProxy): The constructed proxy object or %NULL if @error is set.
19781  */
19782 Watchdog *
19783 watchdog_proxy_new_finish (
19784     GAsyncResult        *res,
19785     GError             **error)
19786 {
19787   GObject *ret;
19788   GObject *source_object;
19789   source_object = g_async_result_get_source_object (res);
19790   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
19791   g_object_unref (source_object);
19792   if (ret != NULL)
19793     return WATCHDOG (ret);
19794   else
19795     return NULL;
19796 }
19797 
19798 /**
19799  * watchdog_proxy_new_sync:
19800  * @connection: A #GDBusConnection.
19801  * @flags: Flags from the #GDBusProxyFlags enumeration.
19802  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
19803  * @object_path: An object path.
19804  * @cancellable: (allow-none): A #GCancellable or %NULL.
19805  * @error: Return location for error or %NULL
19806  *
19807  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Watchdog.top_of_page">org.openbmc.Watchdog</link>. See g_dbus_proxy_new_sync() for more details.
19808  *
19809  * The calling thread is blocked until a reply is received.
19810  *
19811  * See watchdog_proxy_new() for the asynchronous version of this constructor.
19812  *
19813  * Returns: (transfer full) (type WatchdogProxy): The constructed proxy object or %NULL if @error is set.
19814  */
19815 Watchdog *
19816 watchdog_proxy_new_sync (
19817     GDBusConnection     *connection,
19818     GDBusProxyFlags      flags,
19819     const gchar         *name,
19820     const gchar         *object_path,
19821     GCancellable        *cancellable,
19822     GError             **error)
19823 {
19824   GInitable *ret;
19825   ret = g_initable_new (TYPE_WATCHDOG_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.Watchdog", NULL);
19826   if (ret != NULL)
19827     return WATCHDOG (ret);
19828   else
19829     return NULL;
19830 }
19831 
19832 
19833 /**
19834  * watchdog_proxy_new_for_bus:
19835  * @bus_type: A #GBusType.
19836  * @flags: Flags from the #GDBusProxyFlags enumeration.
19837  * @name: A bus name (well-known or unique).
19838  * @object_path: An object path.
19839  * @cancellable: (allow-none): A #GCancellable or %NULL.
19840  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
19841  * @user_data: User data to pass to @callback.
19842  *
19843  * Like watchdog_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
19844  *
19845  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
19846  * You can then call watchdog_proxy_new_for_bus_finish() to get the result of the operation.
19847  *
19848  * See watchdog_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
19849  */
19850 void
19851 watchdog_proxy_new_for_bus (
19852     GBusType             bus_type,
19853     GDBusProxyFlags      flags,
19854     const gchar         *name,
19855     const gchar         *object_path,
19856     GCancellable        *cancellable,
19857     GAsyncReadyCallback  callback,
19858     gpointer             user_data)
19859 {
19860   g_async_initable_new_async (TYPE_WATCHDOG_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.openbmc.Watchdog", NULL);
19861 }
19862 
19863 /**
19864  * watchdog_proxy_new_for_bus_finish:
19865  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to watchdog_proxy_new_for_bus().
19866  * @error: Return location for error or %NULL
19867  *
19868  * Finishes an operation started with watchdog_proxy_new_for_bus().
19869  *
19870  * Returns: (transfer full) (type WatchdogProxy): The constructed proxy object or %NULL if @error is set.
19871  */
19872 Watchdog *
19873 watchdog_proxy_new_for_bus_finish (
19874     GAsyncResult        *res,
19875     GError             **error)
19876 {
19877   GObject *ret;
19878   GObject *source_object;
19879   source_object = g_async_result_get_source_object (res);
19880   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
19881   g_object_unref (source_object);
19882   if (ret != NULL)
19883     return WATCHDOG (ret);
19884   else
19885     return NULL;
19886 }
19887 
19888 /**
19889  * watchdog_proxy_new_for_bus_sync:
19890  * @bus_type: A #GBusType.
19891  * @flags: Flags from the #GDBusProxyFlags enumeration.
19892  * @name: A bus name (well-known or unique).
19893  * @object_path: An object path.
19894  * @cancellable: (allow-none): A #GCancellable or %NULL.
19895  * @error: Return location for error or %NULL
19896  *
19897  * Like watchdog_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
19898  *
19899  * The calling thread is blocked until a reply is received.
19900  *
19901  * See watchdog_proxy_new_for_bus() for the asynchronous version of this constructor.
19902  *
19903  * Returns: (transfer full) (type WatchdogProxy): The constructed proxy object or %NULL if @error is set.
19904  */
19905 Watchdog *
19906 watchdog_proxy_new_for_bus_sync (
19907     GBusType             bus_type,
19908     GDBusProxyFlags      flags,
19909     const gchar         *name,
19910     const gchar         *object_path,
19911     GCancellable        *cancellable,
19912     GError             **error)
19913 {
19914   GInitable *ret;
19915   ret = g_initable_new (TYPE_WATCHDOG_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.Watchdog", NULL);
19916   if (ret != NULL)
19917     return WATCHDOG (ret);
19918   else
19919     return NULL;
19920 }
19921 
19922 
19923 /* ------------------------------------------------------------------------ */
19924 
19925 /**
19926  * WatchdogSkeleton:
19927  *
19928  * The #WatchdogSkeleton structure contains only private data and should only be accessed using the provided API.
19929  */
19930 
19931 /**
19932  * WatchdogSkeletonClass:
19933  * @parent_class: The parent class.
19934  *
19935  * Class structure for #WatchdogSkeleton.
19936  */
19937 
19938 struct _WatchdogSkeletonPrivate
19939 {
19940   GValue *properties;
19941   GList *changed_properties;
19942   GSource *changed_properties_idle_source;
19943   GMainContext *context;
19944   GMutex lock;
19945 };
19946 
19947 static void
19948 _watchdog_skeleton_handle_method_call (
19949   GDBusConnection *connection G_GNUC_UNUSED,
19950   const gchar *sender G_GNUC_UNUSED,
19951   const gchar *object_path G_GNUC_UNUSED,
19952   const gchar *interface_name,
19953   const gchar *method_name,
19954   GVariant *parameters,
19955   GDBusMethodInvocation *invocation,
19956   gpointer user_data)
19957 {
19958   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (user_data);
19959   _ExtendedGDBusMethodInfo *info;
19960   GVariantIter iter;
19961   GVariant *child;
19962   GValue *paramv;
19963   guint num_params;
19964   guint num_extra;
19965   guint n;
19966   guint signal_id;
19967   GValue return_value = G_VALUE_INIT;
19968   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
19969   g_assert (info != NULL);
19970   num_params = g_variant_n_children (parameters);
19971   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
19972   n = 0;
19973   g_value_init (&paramv[n], TYPE_WATCHDOG);
19974   g_value_set_object (&paramv[n++], skeleton);
19975   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
19976   g_value_set_object (&paramv[n++], invocation);
19977   if (info->pass_fdlist)
19978     {
19979 #ifdef G_OS_UNIX
19980       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
19981       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
19982 #else
19983       g_assert_not_reached ();
19984 #endif
19985     }
19986   g_variant_iter_init (&iter, parameters);
19987   while ((child = g_variant_iter_next_value (&iter)) != NULL)
19988     {
19989       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
19990       if (arg_info->use_gvariant)
19991         {
19992           g_value_init (&paramv[n], G_TYPE_VARIANT);
19993           g_value_set_variant (&paramv[n], child);
19994           n++;
19995         }
19996       else
19997         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
19998       g_variant_unref (child);
19999     }
20000   signal_id = g_signal_lookup (info->signal_name, TYPE_WATCHDOG);
20001   g_value_init (&return_value, G_TYPE_BOOLEAN);
20002   g_signal_emitv (paramv, signal_id, 0, &return_value);
20003   if (!g_value_get_boolean (&return_value))
20004     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);
20005   g_value_unset (&return_value);
20006   for (n = 0; n < num_params + num_extra; n++)
20007     g_value_unset (&paramv[n]);
20008   g_free (paramv);
20009 }
20010 
20011 static GVariant *
20012 _watchdog_skeleton_handle_get_property (
20013   GDBusConnection *connection G_GNUC_UNUSED,
20014   const gchar *sender G_GNUC_UNUSED,
20015   const gchar *object_path G_GNUC_UNUSED,
20016   const gchar *interface_name G_GNUC_UNUSED,
20017   const gchar *property_name,
20018   GError **error,
20019   gpointer user_data)
20020 {
20021   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (user_data);
20022   GValue value = G_VALUE_INIT;
20023   GParamSpec *pspec;
20024   _ExtendedGDBusPropertyInfo *info;
20025   GVariant *ret;
20026   ret = NULL;
20027   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_watchdog_interface_info.parent_struct, property_name);
20028   g_assert (info != NULL);
20029   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
20030   if (pspec == NULL)
20031     {
20032       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
20033     }
20034   else
20035     {
20036       g_value_init (&value, pspec->value_type);
20037       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
20038       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
20039       g_value_unset (&value);
20040     }
20041   return ret;
20042 }
20043 
20044 static gboolean
20045 _watchdog_skeleton_handle_set_property (
20046   GDBusConnection *connection G_GNUC_UNUSED,
20047   const gchar *sender G_GNUC_UNUSED,
20048   const gchar *object_path G_GNUC_UNUSED,
20049   const gchar *interface_name G_GNUC_UNUSED,
20050   const gchar *property_name,
20051   GVariant *variant,
20052   GError **error,
20053   gpointer user_data)
20054 {
20055   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (user_data);
20056   GValue value = G_VALUE_INIT;
20057   GParamSpec *pspec;
20058   _ExtendedGDBusPropertyInfo *info;
20059   gboolean ret;
20060   ret = FALSE;
20061   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_watchdog_interface_info.parent_struct, property_name);
20062   g_assert (info != NULL);
20063   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
20064   if (pspec == NULL)
20065     {
20066       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
20067     }
20068   else
20069     {
20070       if (info->use_gvariant)
20071         g_value_set_variant (&value, variant);
20072       else
20073         g_dbus_gvariant_to_gvalue (variant, &value);
20074       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
20075       g_value_unset (&value);
20076       ret = TRUE;
20077     }
20078   return ret;
20079 }
20080 
20081 static const GDBusInterfaceVTable _watchdog_skeleton_vtable =
20082 {
20083   _watchdog_skeleton_handle_method_call,
20084   _watchdog_skeleton_handle_get_property,
20085   _watchdog_skeleton_handle_set_property,
20086   {NULL}
20087 };
20088 
20089 static GDBusInterfaceInfo *
20090 watchdog_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
20091 {
20092   return watchdog_interface_info ();
20093 }
20094 
20095 static GDBusInterfaceVTable *
20096 watchdog_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
20097 {
20098   return (GDBusInterfaceVTable *) &_watchdog_skeleton_vtable;
20099 }
20100 
20101 static GVariant *
20102 watchdog_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
20103 {
20104   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (_skeleton);
20105 
20106   GVariantBuilder builder;
20107   guint n;
20108   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
20109   if (_watchdog_interface_info.parent_struct.properties == NULL)
20110     goto out;
20111   for (n = 0; _watchdog_interface_info.parent_struct.properties[n] != NULL; n++)
20112     {
20113       GDBusPropertyInfo *info = _watchdog_interface_info.parent_struct.properties[n];
20114       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
20115         {
20116           GVariant *value;
20117           value = _watchdog_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.openbmc.Watchdog", info->name, NULL, skeleton);
20118           if (value != NULL)
20119             {
20120               g_variant_take_ref (value);
20121               g_variant_builder_add (&builder, "{sv}", info->name, value);
20122               g_variant_unref (value);
20123             }
20124         }
20125     }
20126 out:
20127   return g_variant_builder_end (&builder);
20128 }
20129 
20130 static gboolean _watchdog_emit_changed (gpointer user_data);
20131 
20132 static void
20133 watchdog_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
20134 {
20135   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (_skeleton);
20136   gboolean emit_changed = FALSE;
20137 
20138   g_mutex_lock (&skeleton->priv->lock);
20139   if (skeleton->priv->changed_properties_idle_source != NULL)
20140     {
20141       g_source_destroy (skeleton->priv->changed_properties_idle_source);
20142       skeleton->priv->changed_properties_idle_source = NULL;
20143       emit_changed = TRUE;
20144     }
20145   g_mutex_unlock (&skeleton->priv->lock);
20146 
20147   if (emit_changed)
20148     _watchdog_emit_changed (skeleton);
20149 }
20150 
20151 static void
20152 _watchdog_on_signal_watchdog_error (
20153     Watchdog *object)
20154 {
20155   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (object);
20156 
20157   GList      *connections, *l;
20158   GVariant   *signal_variant;
20159   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
20160 
20161   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
20162   for (l = connections; l != NULL; l = l->next)
20163     {
20164       GDBusConnection *connection = l->data;
20165       g_dbus_connection_emit_signal (connection,
20166         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Watchdog", "WatchdogError",
20167         signal_variant, NULL);
20168     }
20169   g_variant_unref (signal_variant);
20170   g_list_free_full (connections, g_object_unref);
20171 }
20172 
20173 static void watchdog_skeleton_iface_init (WatchdogIface *iface);
20174 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
20175 G_DEFINE_TYPE_WITH_CODE (WatchdogSkeleton, watchdog_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
20176                          G_ADD_PRIVATE (WatchdogSkeleton)
20177                          G_IMPLEMENT_INTERFACE (TYPE_WATCHDOG, watchdog_skeleton_iface_init));
20178 
20179 #else
20180 G_DEFINE_TYPE_WITH_CODE (WatchdogSkeleton, watchdog_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
20181                          G_IMPLEMENT_INTERFACE (TYPE_WATCHDOG, watchdog_skeleton_iface_init));
20182 
20183 #endif
20184 static void
20185 watchdog_skeleton_finalize (GObject *object)
20186 {
20187   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (object);
20188   guint n;
20189   for (n = 0; n < 2; n++)
20190     g_value_unset (&skeleton->priv->properties[n]);
20191   g_free (skeleton->priv->properties);
20192   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
20193   if (skeleton->priv->changed_properties_idle_source != NULL)
20194     g_source_destroy (skeleton->priv->changed_properties_idle_source);
20195   g_main_context_unref (skeleton->priv->context);
20196   g_mutex_clear (&skeleton->priv->lock);
20197   G_OBJECT_CLASS (watchdog_skeleton_parent_class)->finalize (object);
20198 }
20199 
20200 static void
20201 watchdog_skeleton_get_property (GObject      *object,
20202   guint         prop_id,
20203   GValue       *value,
20204   GParamSpec   *pspec G_GNUC_UNUSED)
20205 {
20206   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (object);
20207   g_assert (prop_id != 0 && prop_id - 1 < 2);
20208   g_mutex_lock (&skeleton->priv->lock);
20209   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
20210   g_mutex_unlock (&skeleton->priv->lock);
20211 }
20212 
20213 static gboolean
20214 _watchdog_emit_changed (gpointer user_data)
20215 {
20216   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (user_data);
20217   GList *l;
20218   GVariantBuilder builder;
20219   GVariantBuilder invalidated_builder;
20220   guint num_changes;
20221 
20222   g_mutex_lock (&skeleton->priv->lock);
20223   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
20224   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
20225   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
20226     {
20227       ChangedProperty *cp = l->data;
20228       GVariant *variant;
20229       const GValue *cur_value;
20230 
20231       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
20232       if (!_g_value_equal (cur_value, &cp->orig_value))
20233         {
20234           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
20235           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
20236           g_variant_unref (variant);
20237           num_changes++;
20238         }
20239     }
20240   if (num_changes > 0)
20241     {
20242       GList *connections, *ll;
20243       GVariant *signal_variant;
20244       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.Watchdog",
20245                                            &builder, &invalidated_builder));
20246       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
20247       for (ll = connections; ll != NULL; ll = ll->next)
20248         {
20249           GDBusConnection *connection = ll->data;
20250 
20251           g_dbus_connection_emit_signal (connection,
20252                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
20253                                          "org.freedesktop.DBus.Properties",
20254                                          "PropertiesChanged",
20255                                          signal_variant,
20256                                          NULL);
20257         }
20258       g_variant_unref (signal_variant);
20259       g_list_free_full (connections, g_object_unref);
20260     }
20261   else
20262     {
20263       g_variant_builder_clear (&builder);
20264       g_variant_builder_clear (&invalidated_builder);
20265     }
20266   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
20267   skeleton->priv->changed_properties = NULL;
20268   skeleton->priv->changed_properties_idle_source = NULL;
20269   g_mutex_unlock (&skeleton->priv->lock);
20270   return FALSE;
20271 }
20272 
20273 static void
20274 _watchdog_schedule_emit_changed (WatchdogSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
20275 {
20276   ChangedProperty *cp;
20277   GList *l;
20278   cp = NULL;
20279   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
20280     {
20281       ChangedProperty *i_cp = l->data;
20282       if (i_cp->info == info)
20283         {
20284           cp = i_cp;
20285           break;
20286         }
20287     }
20288   if (cp == NULL)
20289     {
20290       cp = g_new0 (ChangedProperty, 1);
20291       cp->prop_id = prop_id;
20292       cp->info = info;
20293       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
20294       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
20295       g_value_copy (orig_value, &cp->orig_value);
20296     }
20297 }
20298 
20299 static void
20300 watchdog_skeleton_notify (GObject      *object,
20301   GParamSpec *pspec G_GNUC_UNUSED)
20302 {
20303   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (object);
20304   g_mutex_lock (&skeleton->priv->lock);
20305   if (skeleton->priv->changed_properties != NULL &&
20306       skeleton->priv->changed_properties_idle_source == NULL)
20307     {
20308       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
20309       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
20310       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _watchdog_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
20311       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
20312       g_source_unref (skeleton->priv->changed_properties_idle_source);
20313     }
20314   g_mutex_unlock (&skeleton->priv->lock);
20315 }
20316 
20317 static void
20318 watchdog_skeleton_set_property (GObject      *object,
20319   guint         prop_id,
20320   const GValue *value,
20321   GParamSpec   *pspec)
20322 {
20323   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (object);
20324   g_assert (prop_id != 0 && prop_id - 1 < 2);
20325   g_mutex_lock (&skeleton->priv->lock);
20326   g_object_freeze_notify (object);
20327   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
20328     {
20329       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
20330         _watchdog_schedule_emit_changed (skeleton, _watchdog_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
20331       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
20332       g_object_notify_by_pspec (object, pspec);
20333     }
20334   g_mutex_unlock (&skeleton->priv->lock);
20335   g_object_thaw_notify (object);
20336 }
20337 
20338 static void
20339 watchdog_skeleton_init (WatchdogSkeleton *skeleton)
20340 {
20341 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
20342   skeleton->priv = watchdog_skeleton_get_instance_private (skeleton);
20343 #else
20344   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_WATCHDOG_SKELETON, WatchdogSkeletonPrivate);
20345 #endif
20346 
20347   g_mutex_init (&skeleton->priv->lock);
20348   skeleton->priv->context = g_main_context_ref_thread_default ();
20349   skeleton->priv->properties = g_new0 (GValue, 2);
20350   g_value_init (&skeleton->priv->properties[0], G_TYPE_INT);
20351   g_value_init (&skeleton->priv->properties[1], G_TYPE_INT);
20352 }
20353 
20354 static gint
20355 watchdog_skeleton_get_watchdog (Watchdog *object)
20356 {
20357   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (object);
20358   gint value;
20359   g_mutex_lock (&skeleton->priv->lock);
20360   value = g_value_get_int (&(skeleton->priv->properties[0]));
20361   g_mutex_unlock (&skeleton->priv->lock);
20362   return value;
20363 }
20364 
20365 static gint
20366 watchdog_skeleton_get_poll_interval (Watchdog *object)
20367 {
20368   WatchdogSkeleton *skeleton = WATCHDOG_SKELETON (object);
20369   gint value;
20370   g_mutex_lock (&skeleton->priv->lock);
20371   value = g_value_get_int (&(skeleton->priv->properties[1]));
20372   g_mutex_unlock (&skeleton->priv->lock);
20373   return value;
20374 }
20375 
20376 static void
20377 watchdog_skeleton_class_init (WatchdogSkeletonClass *klass)
20378 {
20379   GObjectClass *gobject_class;
20380   GDBusInterfaceSkeletonClass *skeleton_class;
20381 
20382   gobject_class = G_OBJECT_CLASS (klass);
20383   gobject_class->finalize = watchdog_skeleton_finalize;
20384   gobject_class->get_property = watchdog_skeleton_get_property;
20385   gobject_class->set_property = watchdog_skeleton_set_property;
20386   gobject_class->notify       = watchdog_skeleton_notify;
20387 
20388 
20389   watchdog_override_properties (gobject_class, 1);
20390 
20391   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
20392   skeleton_class->get_info = watchdog_skeleton_dbus_interface_get_info;
20393   skeleton_class->get_properties = watchdog_skeleton_dbus_interface_get_properties;
20394   skeleton_class->flush = watchdog_skeleton_dbus_interface_flush;
20395   skeleton_class->get_vtable = watchdog_skeleton_dbus_interface_get_vtable;
20396 
20397 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
20398   g_type_class_add_private (klass, sizeof (WatchdogSkeletonPrivate));
20399 #endif
20400 }
20401 
20402 static void
20403 watchdog_skeleton_iface_init (WatchdogIface *iface)
20404 {
20405   iface->watchdog_error = _watchdog_on_signal_watchdog_error;
20406   iface->get_watchdog = watchdog_skeleton_get_watchdog;
20407   iface->get_poll_interval = watchdog_skeleton_get_poll_interval;
20408 }
20409 
20410 /**
20411  * watchdog_skeleton_new:
20412  *
20413  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Watchdog.top_of_page">org.openbmc.Watchdog</link>.
20414  *
20415  * Returns: (transfer full) (type WatchdogSkeleton): The skeleton object.
20416  */
20417 Watchdog *
20418 watchdog_skeleton_new (void)
20419 {
20420   return WATCHDOG (g_object_new (TYPE_WATCHDOG_SKELETON, NULL));
20421 }
20422 
20423 /* ------------------------------------------------------------------------
20424  * Code for interface org.openbmc.EventLog
20425  * ------------------------------------------------------------------------
20426  */
20427 
20428 /**
20429  * SECTION:EventLog
20430  * @title: EventLog
20431  * @short_description: Generated C code for the org.openbmc.EventLog D-Bus interface
20432  *
20433  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-EventLog.top_of_page">org.openbmc.EventLog</link> D-Bus interface in C.
20434  */
20435 
20436 /* ---- Introspection data for org.openbmc.EventLog ---- */
20437 
20438 static const _ExtendedGDBusArgInfo _event_log_method_info_get_event_log_OUT_ARG_log =
20439 {
20440   {
20441     -1,
20442     (gchar *) "log",
20443     (gchar *) "a(s)",
20444     NULL
20445   },
20446   FALSE
20447 };
20448 
20449 static const _ExtendedGDBusArgInfo * const _event_log_method_info_get_event_log_OUT_ARG_pointers[] =
20450 {
20451   &_event_log_method_info_get_event_log_OUT_ARG_log,
20452   NULL
20453 };
20454 
20455 static const _ExtendedGDBusMethodInfo _event_log_method_info_get_event_log =
20456 {
20457   {
20458     -1,
20459     (gchar *) "getEventLog",
20460     NULL,
20461     (GDBusArgInfo **) &_event_log_method_info_get_event_log_OUT_ARG_pointers,
20462     NULL
20463   },
20464   "handle-get-event-log",
20465   FALSE
20466 };
20467 
20468 static const _ExtendedGDBusMethodInfo * const _event_log_method_info_pointers[] =
20469 {
20470   &_event_log_method_info_get_event_log,
20471   NULL
20472 };
20473 
20474 static const _ExtendedGDBusArgInfo _event_log_signal_info_event_log_ARG_priority =
20475 {
20476   {
20477     -1,
20478     (gchar *) "priority",
20479     (gchar *) "i",
20480     NULL
20481   },
20482   FALSE
20483 };
20484 
20485 static const _ExtendedGDBusArgInfo _event_log_signal_info_event_log_ARG_message =
20486 {
20487   {
20488     -1,
20489     (gchar *) "message",
20490     (gchar *) "s",
20491     NULL
20492   },
20493   FALSE
20494 };
20495 
20496 static const _ExtendedGDBusArgInfo _event_log_signal_info_event_log_ARG_rc =
20497 {
20498   {
20499     -1,
20500     (gchar *) "rc",
20501     (gchar *) "i",
20502     NULL
20503   },
20504   FALSE
20505 };
20506 
20507 static const _ExtendedGDBusArgInfo * const _event_log_signal_info_event_log_ARG_pointers[] =
20508 {
20509   &_event_log_signal_info_event_log_ARG_priority,
20510   &_event_log_signal_info_event_log_ARG_message,
20511   &_event_log_signal_info_event_log_ARG_rc,
20512   NULL
20513 };
20514 
20515 static const _ExtendedGDBusSignalInfo _event_log_signal_info_event_log =
20516 {
20517   {
20518     -1,
20519     (gchar *) "EventLog",
20520     (GDBusArgInfo **) &_event_log_signal_info_event_log_ARG_pointers,
20521     NULL
20522   },
20523   "event-log"
20524 };
20525 
20526 static const _ExtendedGDBusSignalInfo * const _event_log_signal_info_pointers[] =
20527 {
20528   &_event_log_signal_info_event_log,
20529   NULL
20530 };
20531 
20532 static const _ExtendedGDBusInterfaceInfo _event_log_interface_info =
20533 {
20534   {
20535     -1,
20536     (gchar *) "org.openbmc.EventLog",
20537     (GDBusMethodInfo **) &_event_log_method_info_pointers,
20538     (GDBusSignalInfo **) &_event_log_signal_info_pointers,
20539     NULL,
20540     NULL
20541   },
20542   "event-log",
20543 };
20544 
20545 
20546 /**
20547  * event_log_interface_info:
20548  *
20549  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-EventLog.top_of_page">org.openbmc.EventLog</link> D-Bus interface.
20550  *
20551  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
20552  */
20553 GDBusInterfaceInfo *
20554 event_log_interface_info (void)
20555 {
20556   return (GDBusInterfaceInfo *) &_event_log_interface_info.parent_struct;
20557 }
20558 
20559 /**
20560  * event_log_override_properties:
20561  * @klass: The class structure for a #GObject<!-- -->-derived class.
20562  * @property_id_begin: The property id to assign to the first overridden property.
20563  *
20564  * Overrides all #GObject properties in the #EventLog interface for a concrete class.
20565  * The properties are overridden in the order they are defined.
20566  *
20567  * Returns: The last property id.
20568  */
20569 guint
20570 event_log_override_properties (GObjectClass *klass, guint property_id_begin)
20571 {
20572   return property_id_begin - 1;
20573 }
20574 
20575 
20576 
20577 /**
20578  * EventLog:
20579  *
20580  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-EventLog.top_of_page">org.openbmc.EventLog</link>.
20581  */
20582 
20583 /**
20584  * EventLogIface:
20585  * @parent_iface: The parent interface.
20586  * @handle_get_event_log: Handler for the #EventLog::handle-get-event-log signal.
20587  * @event_log: Handler for the #EventLog::event-log signal.
20588  *
20589  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-EventLog.top_of_page">org.openbmc.EventLog</link>.
20590  */
20591 
20592 typedef EventLogIface EventLogInterface;
20593 G_DEFINE_INTERFACE (EventLog, event_log, G_TYPE_OBJECT);
20594 
20595 static void
20596 event_log_default_init (EventLogIface *iface)
20597 {
20598   /* GObject signals for incoming D-Bus method calls: */
20599   /**
20600    * EventLog::handle-get-event-log:
20601    * @object: A #EventLog.
20602    * @invocation: A #GDBusMethodInvocation.
20603    *
20604    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-EventLog.getEventLog">getEventLog()</link> D-Bus method.
20605    *
20606    * 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 event_log_complete_get_event_log() 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.
20607    *
20608    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
20609    */
20610   g_signal_new ("handle-get-event-log",
20611     G_TYPE_FROM_INTERFACE (iface),
20612     G_SIGNAL_RUN_LAST,
20613     G_STRUCT_OFFSET (EventLogIface, handle_get_event_log),
20614     g_signal_accumulator_true_handled,
20615     NULL,
20616     g_cclosure_marshal_generic,
20617     G_TYPE_BOOLEAN,
20618     1,
20619     G_TYPE_DBUS_METHOD_INVOCATION);
20620 
20621   /* GObject signals for received D-Bus signals: */
20622   /**
20623    * EventLog::event-log:
20624    * @object: A #EventLog.
20625    * @arg_priority: Argument.
20626    * @arg_message: Argument.
20627    * @arg_rc: Argument.
20628    *
20629    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-EventLog.EventLog">"EventLog"</link> is received.
20630    *
20631    * 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.
20632    */
20633   g_signal_new ("event-log",
20634     G_TYPE_FROM_INTERFACE (iface),
20635     G_SIGNAL_RUN_LAST,
20636     G_STRUCT_OFFSET (EventLogIface, event_log),
20637     NULL,
20638     NULL,
20639     g_cclosure_marshal_generic,
20640     G_TYPE_NONE,
20641     3, G_TYPE_INT, G_TYPE_STRING, G_TYPE_INT);
20642 
20643 }
20644 
20645 /**
20646  * event_log_emit_event_log:
20647  * @object: A #EventLog.
20648  * @arg_priority: Argument to pass with the signal.
20649  * @arg_message: Argument to pass with the signal.
20650  * @arg_rc: Argument to pass with the signal.
20651  *
20652  * Emits the <link linkend="gdbus-signal-org-openbmc-EventLog.EventLog">"EventLog"</link> D-Bus signal.
20653  */
20654 void
20655 event_log_emit_event_log (
20656     EventLog *object,
20657     gint arg_priority,
20658     const gchar *arg_message,
20659     gint arg_rc)
20660 {
20661   g_signal_emit_by_name (object, "event-log", arg_priority, arg_message, arg_rc);
20662 }
20663 
20664 /**
20665  * event_log_call_get_event_log:
20666  * @proxy: A #EventLogProxy.
20667  * @cancellable: (allow-none): A #GCancellable or %NULL.
20668  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
20669  * @user_data: User data to pass to @callback.
20670  *
20671  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-EventLog.getEventLog">getEventLog()</link> D-Bus method on @proxy.
20672  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
20673  * You can then call event_log_call_get_event_log_finish() to get the result of the operation.
20674  *
20675  * See event_log_call_get_event_log_sync() for the synchronous, blocking version of this method.
20676  */
20677 void
20678 event_log_call_get_event_log (
20679     EventLog *proxy,
20680     GCancellable *cancellable,
20681     GAsyncReadyCallback callback,
20682     gpointer user_data)
20683 {
20684   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
20685     "getEventLog",
20686     g_variant_new ("()"),
20687     G_DBUS_CALL_FLAGS_NONE,
20688     -1,
20689     cancellable,
20690     callback,
20691     user_data);
20692 }
20693 
20694 /**
20695  * event_log_call_get_event_log_finish:
20696  * @proxy: A #EventLogProxy.
20697  * @out_log: (out): Return location for return parameter or %NULL to ignore.
20698  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to event_log_call_get_event_log().
20699  * @error: Return location for error or %NULL.
20700  *
20701  * Finishes an operation started with event_log_call_get_event_log().
20702  *
20703  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
20704  */
20705 gboolean
20706 event_log_call_get_event_log_finish (
20707     EventLog *proxy,
20708     GVariant **out_log,
20709     GAsyncResult *res,
20710     GError **error)
20711 {
20712   GVariant *_ret;
20713   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
20714   if (_ret == NULL)
20715     goto _out;
20716   g_variant_get (_ret,
20717                  "(@a(s))",
20718                  out_log);
20719   g_variant_unref (_ret);
20720 _out:
20721   return _ret != NULL;
20722 }
20723 
20724 /**
20725  * event_log_call_get_event_log_sync:
20726  * @proxy: A #EventLogProxy.
20727  * @out_log: (out): Return location for return parameter or %NULL to ignore.
20728  * @cancellable: (allow-none): A #GCancellable or %NULL.
20729  * @error: Return location for error or %NULL.
20730  *
20731  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-EventLog.getEventLog">getEventLog()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
20732  *
20733  * See event_log_call_get_event_log() for the asynchronous version of this method.
20734  *
20735  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
20736  */
20737 gboolean
20738 event_log_call_get_event_log_sync (
20739     EventLog *proxy,
20740     GVariant **out_log,
20741     GCancellable *cancellable,
20742     GError **error)
20743 {
20744   GVariant *_ret;
20745   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
20746     "getEventLog",
20747     g_variant_new ("()"),
20748     G_DBUS_CALL_FLAGS_NONE,
20749     -1,
20750     cancellable,
20751     error);
20752   if (_ret == NULL)
20753     goto _out;
20754   g_variant_get (_ret,
20755                  "(@a(s))",
20756                  out_log);
20757   g_variant_unref (_ret);
20758 _out:
20759   return _ret != NULL;
20760 }
20761 
20762 /**
20763  * event_log_complete_get_event_log:
20764  * @object: A #EventLog.
20765  * @invocation: (transfer full): A #GDBusMethodInvocation.
20766  * @log: Parameter to return.
20767  *
20768  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-EventLog.getEventLog">getEventLog()</link> 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.
20769  *
20770  * This method will free @invocation, you cannot use it afterwards.
20771  */
20772 void
20773 event_log_complete_get_event_log (
20774     EventLog *object,
20775     GDBusMethodInvocation *invocation,
20776     GVariant *log)
20777 {
20778   g_dbus_method_invocation_return_value (invocation,
20779     g_variant_new ("(@a(s))",
20780                    log));
20781 }
20782 
20783 /* ------------------------------------------------------------------------ */
20784 
20785 /**
20786  * EventLogProxy:
20787  *
20788  * The #EventLogProxy structure contains only private data and should only be accessed using the provided API.
20789  */
20790 
20791 /**
20792  * EventLogProxyClass:
20793  * @parent_class: The parent class.
20794  *
20795  * Class structure for #EventLogProxy.
20796  */
20797 
20798 struct _EventLogProxyPrivate
20799 {
20800   GData *qdata;
20801 };
20802 
20803 static void event_log_proxy_iface_init (EventLogIface *iface);
20804 
20805 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
20806 G_DEFINE_TYPE_WITH_CODE (EventLogProxy, event_log_proxy, G_TYPE_DBUS_PROXY,
20807                          G_ADD_PRIVATE (EventLogProxy)
20808                          G_IMPLEMENT_INTERFACE (TYPE_EVENT_LOG, event_log_proxy_iface_init));
20809 
20810 #else
20811 G_DEFINE_TYPE_WITH_CODE (EventLogProxy, event_log_proxy, G_TYPE_DBUS_PROXY,
20812                          G_IMPLEMENT_INTERFACE (TYPE_EVENT_LOG, event_log_proxy_iface_init));
20813 
20814 #endif
20815 static void
20816 event_log_proxy_finalize (GObject *object)
20817 {
20818   EventLogProxy *proxy = EVENT_LOG_PROXY (object);
20819   g_datalist_clear (&proxy->priv->qdata);
20820   G_OBJECT_CLASS (event_log_proxy_parent_class)->finalize (object);
20821 }
20822 
20823 static void
20824 event_log_proxy_get_property (GObject      *object,
20825   guint         prop_id,
20826   GValue       *value,
20827   GParamSpec   *pspec G_GNUC_UNUSED)
20828 {
20829 }
20830 
20831 static void
20832 event_log_proxy_set_property (GObject      *object,
20833   guint         prop_id,
20834   const GValue *value,
20835   GParamSpec   *pspec G_GNUC_UNUSED)
20836 {
20837 }
20838 
20839 static void
20840 event_log_proxy_g_signal (GDBusProxy *proxy,
20841   const gchar *sender_name G_GNUC_UNUSED,
20842   const gchar *signal_name,
20843   GVariant *parameters)
20844 {
20845   _ExtendedGDBusSignalInfo *info;
20846   GVariantIter iter;
20847   GVariant *child;
20848   GValue *paramv;
20849   guint num_params;
20850   guint n;
20851   guint signal_id;
20852   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_event_log_interface_info.parent_struct, signal_name);
20853   if (info == NULL)
20854     return;
20855   num_params = g_variant_n_children (parameters);
20856   paramv = g_new0 (GValue, num_params + 1);
20857   g_value_init (&paramv[0], TYPE_EVENT_LOG);
20858   g_value_set_object (&paramv[0], proxy);
20859   g_variant_iter_init (&iter, parameters);
20860   n = 1;
20861   while ((child = g_variant_iter_next_value (&iter)) != NULL)
20862     {
20863       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
20864       if (arg_info->use_gvariant)
20865         {
20866           g_value_init (&paramv[n], G_TYPE_VARIANT);
20867           g_value_set_variant (&paramv[n], child);
20868           n++;
20869         }
20870       else
20871         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
20872       g_variant_unref (child);
20873     }
20874   signal_id = g_signal_lookup (info->signal_name, TYPE_EVENT_LOG);
20875   g_signal_emitv (paramv, signal_id, 0, NULL);
20876   for (n = 0; n < num_params + 1; n++)
20877     g_value_unset (&paramv[n]);
20878   g_free (paramv);
20879 }
20880 
20881 static void
20882 event_log_proxy_g_properties_changed (GDBusProxy *_proxy,
20883   GVariant *changed_properties,
20884   const gchar *const *invalidated_properties)
20885 {
20886   EventLogProxy *proxy = EVENT_LOG_PROXY (_proxy);
20887   guint n;
20888   const gchar *key;
20889   GVariantIter *iter;
20890   _ExtendedGDBusPropertyInfo *info;
20891   g_variant_get (changed_properties, "a{sv}", &iter);
20892   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
20893     {
20894       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_event_log_interface_info.parent_struct, key);
20895       g_datalist_remove_data (&proxy->priv->qdata, key);
20896       if (info != NULL)
20897         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
20898     }
20899   g_variant_iter_free (iter);
20900   for (n = 0; invalidated_properties[n] != NULL; n++)
20901     {
20902       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_event_log_interface_info.parent_struct, invalidated_properties[n]);
20903       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
20904       if (info != NULL)
20905         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
20906     }
20907 }
20908 
20909 static void
20910 event_log_proxy_init (EventLogProxy *proxy)
20911 {
20912 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
20913   proxy->priv = event_log_proxy_get_instance_private (proxy);
20914 #else
20915   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_EVENT_LOG_PROXY, EventLogProxyPrivate);
20916 #endif
20917 
20918   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), event_log_interface_info ());
20919 }
20920 
20921 static void
20922 event_log_proxy_class_init (EventLogProxyClass *klass)
20923 {
20924   GObjectClass *gobject_class;
20925   GDBusProxyClass *proxy_class;
20926 
20927   gobject_class = G_OBJECT_CLASS (klass);
20928   gobject_class->finalize     = event_log_proxy_finalize;
20929   gobject_class->get_property = event_log_proxy_get_property;
20930   gobject_class->set_property = event_log_proxy_set_property;
20931 
20932   proxy_class = G_DBUS_PROXY_CLASS (klass);
20933   proxy_class->g_signal = event_log_proxy_g_signal;
20934   proxy_class->g_properties_changed = event_log_proxy_g_properties_changed;
20935 
20936 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
20937   g_type_class_add_private (klass, sizeof (EventLogProxyPrivate));
20938 #endif
20939 }
20940 
20941 static void
20942 event_log_proxy_iface_init (EventLogIface *iface)
20943 {
20944 }
20945 
20946 /**
20947  * event_log_proxy_new:
20948  * @connection: A #GDBusConnection.
20949  * @flags: Flags from the #GDBusProxyFlags enumeration.
20950  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
20951  * @object_path: An object path.
20952  * @cancellable: (allow-none): A #GCancellable or %NULL.
20953  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
20954  * @user_data: User data to pass to @callback.
20955  *
20956  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-EventLog.top_of_page">org.openbmc.EventLog</link>. See g_dbus_proxy_new() for more details.
20957  *
20958  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
20959  * You can then call event_log_proxy_new_finish() to get the result of the operation.
20960  *
20961  * See event_log_proxy_new_sync() for the synchronous, blocking version of this constructor.
20962  */
20963 void
20964 event_log_proxy_new (
20965     GDBusConnection     *connection,
20966     GDBusProxyFlags      flags,
20967     const gchar         *name,
20968     const gchar         *object_path,
20969     GCancellable        *cancellable,
20970     GAsyncReadyCallback  callback,
20971     gpointer             user_data)
20972 {
20973   g_async_initable_new_async (TYPE_EVENT_LOG_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.openbmc.EventLog", NULL);
20974 }
20975 
20976 /**
20977  * event_log_proxy_new_finish:
20978  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to event_log_proxy_new().
20979  * @error: Return location for error or %NULL
20980  *
20981  * Finishes an operation started with event_log_proxy_new().
20982  *
20983  * Returns: (transfer full) (type EventLogProxy): The constructed proxy object or %NULL if @error is set.
20984  */
20985 EventLog *
20986 event_log_proxy_new_finish (
20987     GAsyncResult        *res,
20988     GError             **error)
20989 {
20990   GObject *ret;
20991   GObject *source_object;
20992   source_object = g_async_result_get_source_object (res);
20993   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
20994   g_object_unref (source_object);
20995   if (ret != NULL)
20996     return EVENT_LOG (ret);
20997   else
20998     return NULL;
20999 }
21000 
21001 /**
21002  * event_log_proxy_new_sync:
21003  * @connection: A #GDBusConnection.
21004  * @flags: Flags from the #GDBusProxyFlags enumeration.
21005  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
21006  * @object_path: An object path.
21007  * @cancellable: (allow-none): A #GCancellable or %NULL.
21008  * @error: Return location for error or %NULL
21009  *
21010  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-EventLog.top_of_page">org.openbmc.EventLog</link>. See g_dbus_proxy_new_sync() for more details.
21011  *
21012  * The calling thread is blocked until a reply is received.
21013  *
21014  * See event_log_proxy_new() for the asynchronous version of this constructor.
21015  *
21016  * Returns: (transfer full) (type EventLogProxy): The constructed proxy object or %NULL if @error is set.
21017  */
21018 EventLog *
21019 event_log_proxy_new_sync (
21020     GDBusConnection     *connection,
21021     GDBusProxyFlags      flags,
21022     const gchar         *name,
21023     const gchar         *object_path,
21024     GCancellable        *cancellable,
21025     GError             **error)
21026 {
21027   GInitable *ret;
21028   ret = g_initable_new (TYPE_EVENT_LOG_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.EventLog", NULL);
21029   if (ret != NULL)
21030     return EVENT_LOG (ret);
21031   else
21032     return NULL;
21033 }
21034 
21035 
21036 /**
21037  * event_log_proxy_new_for_bus:
21038  * @bus_type: A #GBusType.
21039  * @flags: Flags from the #GDBusProxyFlags enumeration.
21040  * @name: A bus name (well-known or unique).
21041  * @object_path: An object path.
21042  * @cancellable: (allow-none): A #GCancellable or %NULL.
21043  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
21044  * @user_data: User data to pass to @callback.
21045  *
21046  * Like event_log_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
21047  *
21048  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
21049  * You can then call event_log_proxy_new_for_bus_finish() to get the result of the operation.
21050  *
21051  * See event_log_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
21052  */
21053 void
21054 event_log_proxy_new_for_bus (
21055     GBusType             bus_type,
21056     GDBusProxyFlags      flags,
21057     const gchar         *name,
21058     const gchar         *object_path,
21059     GCancellable        *cancellable,
21060     GAsyncReadyCallback  callback,
21061     gpointer             user_data)
21062 {
21063   g_async_initable_new_async (TYPE_EVENT_LOG_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.openbmc.EventLog", NULL);
21064 }
21065 
21066 /**
21067  * event_log_proxy_new_for_bus_finish:
21068  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to event_log_proxy_new_for_bus().
21069  * @error: Return location for error or %NULL
21070  *
21071  * Finishes an operation started with event_log_proxy_new_for_bus().
21072  *
21073  * Returns: (transfer full) (type EventLogProxy): The constructed proxy object or %NULL if @error is set.
21074  */
21075 EventLog *
21076 event_log_proxy_new_for_bus_finish (
21077     GAsyncResult        *res,
21078     GError             **error)
21079 {
21080   GObject *ret;
21081   GObject *source_object;
21082   source_object = g_async_result_get_source_object (res);
21083   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
21084   g_object_unref (source_object);
21085   if (ret != NULL)
21086     return EVENT_LOG (ret);
21087   else
21088     return NULL;
21089 }
21090 
21091 /**
21092  * event_log_proxy_new_for_bus_sync:
21093  * @bus_type: A #GBusType.
21094  * @flags: Flags from the #GDBusProxyFlags enumeration.
21095  * @name: A bus name (well-known or unique).
21096  * @object_path: An object path.
21097  * @cancellable: (allow-none): A #GCancellable or %NULL.
21098  * @error: Return location for error or %NULL
21099  *
21100  * Like event_log_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
21101  *
21102  * The calling thread is blocked until a reply is received.
21103  *
21104  * See event_log_proxy_new_for_bus() for the asynchronous version of this constructor.
21105  *
21106  * Returns: (transfer full) (type EventLogProxy): The constructed proxy object or %NULL if @error is set.
21107  */
21108 EventLog *
21109 event_log_proxy_new_for_bus_sync (
21110     GBusType             bus_type,
21111     GDBusProxyFlags      flags,
21112     const gchar         *name,
21113     const gchar         *object_path,
21114     GCancellable        *cancellable,
21115     GError             **error)
21116 {
21117   GInitable *ret;
21118   ret = g_initable_new (TYPE_EVENT_LOG_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.EventLog", NULL);
21119   if (ret != NULL)
21120     return EVENT_LOG (ret);
21121   else
21122     return NULL;
21123 }
21124 
21125 
21126 /* ------------------------------------------------------------------------ */
21127 
21128 /**
21129  * EventLogSkeleton:
21130  *
21131  * The #EventLogSkeleton structure contains only private data and should only be accessed using the provided API.
21132  */
21133 
21134 /**
21135  * EventLogSkeletonClass:
21136  * @parent_class: The parent class.
21137  *
21138  * Class structure for #EventLogSkeleton.
21139  */
21140 
21141 struct _EventLogSkeletonPrivate
21142 {
21143   GValue *properties;
21144   GList *changed_properties;
21145   GSource *changed_properties_idle_source;
21146   GMainContext *context;
21147   GMutex lock;
21148 };
21149 
21150 static void
21151 _event_log_skeleton_handle_method_call (
21152   GDBusConnection *connection G_GNUC_UNUSED,
21153   const gchar *sender G_GNUC_UNUSED,
21154   const gchar *object_path G_GNUC_UNUSED,
21155   const gchar *interface_name,
21156   const gchar *method_name,
21157   GVariant *parameters,
21158   GDBusMethodInvocation *invocation,
21159   gpointer user_data)
21160 {
21161   EventLogSkeleton *skeleton = EVENT_LOG_SKELETON (user_data);
21162   _ExtendedGDBusMethodInfo *info;
21163   GVariantIter iter;
21164   GVariant *child;
21165   GValue *paramv;
21166   guint num_params;
21167   guint num_extra;
21168   guint n;
21169   guint signal_id;
21170   GValue return_value = G_VALUE_INIT;
21171   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
21172   g_assert (info != NULL);
21173   num_params = g_variant_n_children (parameters);
21174   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
21175   n = 0;
21176   g_value_init (&paramv[n], TYPE_EVENT_LOG);
21177   g_value_set_object (&paramv[n++], skeleton);
21178   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
21179   g_value_set_object (&paramv[n++], invocation);
21180   if (info->pass_fdlist)
21181     {
21182 #ifdef G_OS_UNIX
21183       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
21184       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
21185 #else
21186       g_assert_not_reached ();
21187 #endif
21188     }
21189   g_variant_iter_init (&iter, parameters);
21190   while ((child = g_variant_iter_next_value (&iter)) != NULL)
21191     {
21192       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
21193       if (arg_info->use_gvariant)
21194         {
21195           g_value_init (&paramv[n], G_TYPE_VARIANT);
21196           g_value_set_variant (&paramv[n], child);
21197           n++;
21198         }
21199       else
21200         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
21201       g_variant_unref (child);
21202     }
21203   signal_id = g_signal_lookup (info->signal_name, TYPE_EVENT_LOG);
21204   g_value_init (&return_value, G_TYPE_BOOLEAN);
21205   g_signal_emitv (paramv, signal_id, 0, &return_value);
21206   if (!g_value_get_boolean (&return_value))
21207     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);
21208   g_value_unset (&return_value);
21209   for (n = 0; n < num_params + num_extra; n++)
21210     g_value_unset (&paramv[n]);
21211   g_free (paramv);
21212 }
21213 
21214 static GVariant *
21215 _event_log_skeleton_handle_get_property (
21216   GDBusConnection *connection G_GNUC_UNUSED,
21217   const gchar *sender G_GNUC_UNUSED,
21218   const gchar *object_path G_GNUC_UNUSED,
21219   const gchar *interface_name G_GNUC_UNUSED,
21220   const gchar *property_name,
21221   GError **error,
21222   gpointer user_data)
21223 {
21224   EventLogSkeleton *skeleton = EVENT_LOG_SKELETON (user_data);
21225   GValue value = G_VALUE_INIT;
21226   GParamSpec *pspec;
21227   _ExtendedGDBusPropertyInfo *info;
21228   GVariant *ret;
21229   ret = NULL;
21230   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_event_log_interface_info.parent_struct, property_name);
21231   g_assert (info != NULL);
21232   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
21233   if (pspec == NULL)
21234     {
21235       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
21236     }
21237   else
21238     {
21239       g_value_init (&value, pspec->value_type);
21240       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
21241       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
21242       g_value_unset (&value);
21243     }
21244   return ret;
21245 }
21246 
21247 static gboolean
21248 _event_log_skeleton_handle_set_property (
21249   GDBusConnection *connection G_GNUC_UNUSED,
21250   const gchar *sender G_GNUC_UNUSED,
21251   const gchar *object_path G_GNUC_UNUSED,
21252   const gchar *interface_name G_GNUC_UNUSED,
21253   const gchar *property_name,
21254   GVariant *variant,
21255   GError **error,
21256   gpointer user_data)
21257 {
21258   EventLogSkeleton *skeleton = EVENT_LOG_SKELETON (user_data);
21259   GValue value = G_VALUE_INIT;
21260   GParamSpec *pspec;
21261   _ExtendedGDBusPropertyInfo *info;
21262   gboolean ret;
21263   ret = FALSE;
21264   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_event_log_interface_info.parent_struct, property_name);
21265   g_assert (info != NULL);
21266   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
21267   if (pspec == NULL)
21268     {
21269       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
21270     }
21271   else
21272     {
21273       if (info->use_gvariant)
21274         g_value_set_variant (&value, variant);
21275       else
21276         g_dbus_gvariant_to_gvalue (variant, &value);
21277       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
21278       g_value_unset (&value);
21279       ret = TRUE;
21280     }
21281   return ret;
21282 }
21283 
21284 static const GDBusInterfaceVTable _event_log_skeleton_vtable =
21285 {
21286   _event_log_skeleton_handle_method_call,
21287   _event_log_skeleton_handle_get_property,
21288   _event_log_skeleton_handle_set_property,
21289   {NULL}
21290 };
21291 
21292 static GDBusInterfaceInfo *
21293 event_log_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
21294 {
21295   return event_log_interface_info ();
21296 }
21297 
21298 static GDBusInterfaceVTable *
21299 event_log_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
21300 {
21301   return (GDBusInterfaceVTable *) &_event_log_skeleton_vtable;
21302 }
21303 
21304 static GVariant *
21305 event_log_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
21306 {
21307   EventLogSkeleton *skeleton = EVENT_LOG_SKELETON (_skeleton);
21308 
21309   GVariantBuilder builder;
21310   guint n;
21311   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
21312   if (_event_log_interface_info.parent_struct.properties == NULL)
21313     goto out;
21314   for (n = 0; _event_log_interface_info.parent_struct.properties[n] != NULL; n++)
21315     {
21316       GDBusPropertyInfo *info = _event_log_interface_info.parent_struct.properties[n];
21317       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
21318         {
21319           GVariant *value;
21320           value = _event_log_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.openbmc.EventLog", info->name, NULL, skeleton);
21321           if (value != NULL)
21322             {
21323               g_variant_take_ref (value);
21324               g_variant_builder_add (&builder, "{sv}", info->name, value);
21325               g_variant_unref (value);
21326             }
21327         }
21328     }
21329 out:
21330   return g_variant_builder_end (&builder);
21331 }
21332 
21333 static void
21334 event_log_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
21335 {
21336 }
21337 
21338 static void
21339 _event_log_on_signal_event_log (
21340     EventLog *object,
21341     gint arg_priority,
21342     const gchar *arg_message,
21343     gint arg_rc)
21344 {
21345   EventLogSkeleton *skeleton = EVENT_LOG_SKELETON (object);
21346 
21347   GList      *connections, *l;
21348   GVariant   *signal_variant;
21349   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
21350 
21351   signal_variant = g_variant_ref_sink (g_variant_new ("(isi)",
21352                    arg_priority,
21353                    arg_message,
21354                    arg_rc));
21355   for (l = connections; l != NULL; l = l->next)
21356     {
21357       GDBusConnection *connection = l->data;
21358       g_dbus_connection_emit_signal (connection,
21359         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.EventLog", "EventLog",
21360         signal_variant, NULL);
21361     }
21362   g_variant_unref (signal_variant);
21363   g_list_free_full (connections, g_object_unref);
21364 }
21365 
21366 static void event_log_skeleton_iface_init (EventLogIface *iface);
21367 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
21368 G_DEFINE_TYPE_WITH_CODE (EventLogSkeleton, event_log_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
21369                          G_ADD_PRIVATE (EventLogSkeleton)
21370                          G_IMPLEMENT_INTERFACE (TYPE_EVENT_LOG, event_log_skeleton_iface_init));
21371 
21372 #else
21373 G_DEFINE_TYPE_WITH_CODE (EventLogSkeleton, event_log_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
21374                          G_IMPLEMENT_INTERFACE (TYPE_EVENT_LOG, event_log_skeleton_iface_init));
21375 
21376 #endif
21377 static void
21378 event_log_skeleton_finalize (GObject *object)
21379 {
21380   EventLogSkeleton *skeleton = EVENT_LOG_SKELETON (object);
21381   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
21382   if (skeleton->priv->changed_properties_idle_source != NULL)
21383     g_source_destroy (skeleton->priv->changed_properties_idle_source);
21384   g_main_context_unref (skeleton->priv->context);
21385   g_mutex_clear (&skeleton->priv->lock);
21386   G_OBJECT_CLASS (event_log_skeleton_parent_class)->finalize (object);
21387 }
21388 
21389 static void
21390 event_log_skeleton_init (EventLogSkeleton *skeleton)
21391 {
21392 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
21393   skeleton->priv = event_log_skeleton_get_instance_private (skeleton);
21394 #else
21395   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_EVENT_LOG_SKELETON, EventLogSkeletonPrivate);
21396 #endif
21397 
21398   g_mutex_init (&skeleton->priv->lock);
21399   skeleton->priv->context = g_main_context_ref_thread_default ();
21400 }
21401 
21402 static void
21403 event_log_skeleton_class_init (EventLogSkeletonClass *klass)
21404 {
21405   GObjectClass *gobject_class;
21406   GDBusInterfaceSkeletonClass *skeleton_class;
21407 
21408   gobject_class = G_OBJECT_CLASS (klass);
21409   gobject_class->finalize = event_log_skeleton_finalize;
21410 
21411   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
21412   skeleton_class->get_info = event_log_skeleton_dbus_interface_get_info;
21413   skeleton_class->get_properties = event_log_skeleton_dbus_interface_get_properties;
21414   skeleton_class->flush = event_log_skeleton_dbus_interface_flush;
21415   skeleton_class->get_vtable = event_log_skeleton_dbus_interface_get_vtable;
21416 
21417 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
21418   g_type_class_add_private (klass, sizeof (EventLogSkeletonPrivate));
21419 #endif
21420 }
21421 
21422 static void
21423 event_log_skeleton_iface_init (EventLogIface *iface)
21424 {
21425   iface->event_log = _event_log_on_signal_event_log;
21426 }
21427 
21428 /**
21429  * event_log_skeleton_new:
21430  *
21431  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-EventLog.top_of_page">org.openbmc.EventLog</link>.
21432  *
21433  * Returns: (transfer full) (type EventLogSkeleton): The skeleton object.
21434  */
21435 EventLog *
21436 event_log_skeleton_new (void)
21437 {
21438   return EVENT_LOG (g_object_new (TYPE_EVENT_LOG_SKELETON, NULL));
21439 }
21440 
21441 /* ------------------------------------------------------------------------
21442  * Code for interface org.openbmc.Flash
21443  * ------------------------------------------------------------------------
21444  */
21445 
21446 /**
21447  * SECTION:Flash
21448  * @title: Flash
21449  * @short_description: Generated C code for the org.openbmc.Flash D-Bus interface
21450  *
21451  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-Flash.top_of_page">org.openbmc.Flash</link> D-Bus interface in C.
21452  */
21453 
21454 /* ---- Introspection data for org.openbmc.Flash ---- */
21455 
21456 static const _ExtendedGDBusArgInfo _flash_method_info_update_IN_ARG_filename =
21457 {
21458   {
21459     -1,
21460     (gchar *) "filename",
21461     (gchar *) "s",
21462     NULL
21463   },
21464   FALSE
21465 };
21466 
21467 static const _ExtendedGDBusArgInfo * const _flash_method_info_update_IN_ARG_pointers[] =
21468 {
21469   &_flash_method_info_update_IN_ARG_filename,
21470   NULL
21471 };
21472 
21473 static const _ExtendedGDBusMethodInfo _flash_method_info_update =
21474 {
21475   {
21476     -1,
21477     (gchar *) "update",
21478     (GDBusArgInfo **) &_flash_method_info_update_IN_ARG_pointers,
21479     NULL,
21480     NULL
21481   },
21482   "handle-update",
21483   FALSE
21484 };
21485 
21486 static const _ExtendedGDBusArgInfo _flash_method_info_error_IN_ARG_message =
21487 {
21488   {
21489     -1,
21490     (gchar *) "message",
21491     (gchar *) "s",
21492     NULL
21493   },
21494   FALSE
21495 };
21496 
21497 static const _ExtendedGDBusArgInfo * const _flash_method_info_error_IN_ARG_pointers[] =
21498 {
21499   &_flash_method_info_error_IN_ARG_message,
21500   NULL
21501 };
21502 
21503 static const _ExtendedGDBusMethodInfo _flash_method_info_error =
21504 {
21505   {
21506     -1,
21507     (gchar *) "error",
21508     (GDBusArgInfo **) &_flash_method_info_error_IN_ARG_pointers,
21509     NULL,
21510     NULL
21511   },
21512   "handle-error",
21513   FALSE
21514 };
21515 
21516 static const _ExtendedGDBusMethodInfo _flash_method_info_done =
21517 {
21518   {
21519     -1,
21520     (gchar *) "done",
21521     NULL,
21522     NULL,
21523     NULL
21524   },
21525   "handle-done",
21526   FALSE
21527 };
21528 
21529 static const _ExtendedGDBusArgInfo _flash_method_info_update_via_tftp_IN_ARG_url =
21530 {
21531   {
21532     -1,
21533     (gchar *) "url",
21534     (gchar *) "s",
21535     NULL
21536   },
21537   FALSE
21538 };
21539 
21540 static const _ExtendedGDBusArgInfo _flash_method_info_update_via_tftp_IN_ARG_filename =
21541 {
21542   {
21543     -1,
21544     (gchar *) "filename",
21545     (gchar *) "s",
21546     NULL
21547   },
21548   FALSE
21549 };
21550 
21551 static const _ExtendedGDBusArgInfo * const _flash_method_info_update_via_tftp_IN_ARG_pointers[] =
21552 {
21553   &_flash_method_info_update_via_tftp_IN_ARG_url,
21554   &_flash_method_info_update_via_tftp_IN_ARG_filename,
21555   NULL
21556 };
21557 
21558 static const _ExtendedGDBusMethodInfo _flash_method_info_update_via_tftp =
21559 {
21560   {
21561     -1,
21562     (gchar *) "updateViaTftp",
21563     (GDBusArgInfo **) &_flash_method_info_update_via_tftp_IN_ARG_pointers,
21564     NULL,
21565     NULL
21566   },
21567   "handle-update-via-tftp",
21568   FALSE
21569 };
21570 
21571 static const _ExtendedGDBusMethodInfo _flash_method_info_init =
21572 {
21573   {
21574     -1,
21575     (gchar *) "init",
21576     NULL,
21577     NULL,
21578     NULL
21579   },
21580   "handle-init",
21581   FALSE
21582 };
21583 
21584 static const _ExtendedGDBusMethodInfo * const _flash_method_info_pointers[] =
21585 {
21586   &_flash_method_info_update,
21587   &_flash_method_info_error,
21588   &_flash_method_info_done,
21589   &_flash_method_info_update_via_tftp,
21590   &_flash_method_info_init,
21591   NULL
21592 };
21593 
21594 static const _ExtendedGDBusSignalInfo _flash_signal_info_updated =
21595 {
21596   {
21597     -1,
21598     (gchar *) "Updated",
21599     NULL,
21600     NULL
21601   },
21602   "updated"
21603 };
21604 
21605 static const _ExtendedGDBusArgInfo _flash_signal_info_download_ARG_url =
21606 {
21607   {
21608     -1,
21609     (gchar *) "url",
21610     (gchar *) "s",
21611     NULL
21612   },
21613   FALSE
21614 };
21615 
21616 static const _ExtendedGDBusArgInfo _flash_signal_info_download_ARG_filename =
21617 {
21618   {
21619     -1,
21620     (gchar *) "filename",
21621     (gchar *) "s",
21622     NULL
21623   },
21624   FALSE
21625 };
21626 
21627 static const _ExtendedGDBusArgInfo * const _flash_signal_info_download_ARG_pointers[] =
21628 {
21629   &_flash_signal_info_download_ARG_url,
21630   &_flash_signal_info_download_ARG_filename,
21631   NULL
21632 };
21633 
21634 static const _ExtendedGDBusSignalInfo _flash_signal_info_download =
21635 {
21636   {
21637     -1,
21638     (gchar *) "Download",
21639     (GDBusArgInfo **) &_flash_signal_info_download_ARG_pointers,
21640     NULL
21641   },
21642   "download"
21643 };
21644 
21645 static const _ExtendedGDBusSignalInfo * const _flash_signal_info_pointers[] =
21646 {
21647   &_flash_signal_info_updated,
21648   &_flash_signal_info_download,
21649   NULL
21650 };
21651 
21652 static const _ExtendedGDBusPropertyInfo _flash_property_info_filename =
21653 {
21654   {
21655     -1,
21656     (gchar *) "filename",
21657     (gchar *) "s",
21658     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
21659     NULL
21660   },
21661   "filename",
21662   FALSE
21663 };
21664 
21665 static const _ExtendedGDBusPropertyInfo _flash_property_info_flasher_path =
21666 {
21667   {
21668     -1,
21669     (gchar *) "flasher_path",
21670     (gchar *) "s",
21671     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
21672     NULL
21673   },
21674   "flasher-path",
21675   FALSE
21676 };
21677 
21678 static const _ExtendedGDBusPropertyInfo _flash_property_info_flasher_name =
21679 {
21680   {
21681     -1,
21682     (gchar *) "flasher_name",
21683     (gchar *) "s",
21684     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
21685     NULL
21686   },
21687   "flasher-name",
21688   FALSE
21689 };
21690 
21691 static const _ExtendedGDBusPropertyInfo _flash_property_info_flasher_instance =
21692 {
21693   {
21694     -1,
21695     (gchar *) "flasher_instance",
21696     (gchar *) "s",
21697     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
21698     NULL
21699   },
21700   "flasher-instance",
21701   FALSE
21702 };
21703 
21704 static const _ExtendedGDBusPropertyInfo _flash_property_info_status =
21705 {
21706   {
21707     -1,
21708     (gchar *) "status",
21709     (gchar *) "s",
21710     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
21711     NULL
21712   },
21713   "status",
21714   FALSE
21715 };
21716 
21717 static const _ExtendedGDBusPropertyInfo * const _flash_property_info_pointers[] =
21718 {
21719   &_flash_property_info_filename,
21720   &_flash_property_info_flasher_path,
21721   &_flash_property_info_flasher_name,
21722   &_flash_property_info_flasher_instance,
21723   &_flash_property_info_status,
21724   NULL
21725 };
21726 
21727 static const _ExtendedGDBusInterfaceInfo _flash_interface_info =
21728 {
21729   {
21730     -1,
21731     (gchar *) "org.openbmc.Flash",
21732     (GDBusMethodInfo **) &_flash_method_info_pointers,
21733     (GDBusSignalInfo **) &_flash_signal_info_pointers,
21734     (GDBusPropertyInfo **) &_flash_property_info_pointers,
21735     NULL
21736   },
21737   "flash",
21738 };
21739 
21740 
21741 /**
21742  * flash_interface_info:
21743  *
21744  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-Flash.top_of_page">org.openbmc.Flash</link> D-Bus interface.
21745  *
21746  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
21747  */
21748 GDBusInterfaceInfo *
21749 flash_interface_info (void)
21750 {
21751   return (GDBusInterfaceInfo *) &_flash_interface_info.parent_struct;
21752 }
21753 
21754 /**
21755  * flash_override_properties:
21756  * @klass: The class structure for a #GObject<!-- -->-derived class.
21757  * @property_id_begin: The property id to assign to the first overridden property.
21758  *
21759  * Overrides all #GObject properties in the #Flash interface for a concrete class.
21760  * The properties are overridden in the order they are defined.
21761  *
21762  * Returns: The last property id.
21763  */
21764 guint
21765 flash_override_properties (GObjectClass *klass, guint property_id_begin)
21766 {
21767   g_object_class_override_property (klass, property_id_begin++, "filename");
21768   g_object_class_override_property (klass, property_id_begin++, "flasher-path");
21769   g_object_class_override_property (klass, property_id_begin++, "flasher-name");
21770   g_object_class_override_property (klass, property_id_begin++, "flasher-instance");
21771   g_object_class_override_property (klass, property_id_begin++, "status");
21772   return property_id_begin - 1;
21773 }
21774 
21775 
21776 
21777 /**
21778  * Flash:
21779  *
21780  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Flash.top_of_page">org.openbmc.Flash</link>.
21781  */
21782 
21783 /**
21784  * FlashIface:
21785  * @parent_iface: The parent interface.
21786  * @handle_done: Handler for the #Flash::handle-done signal.
21787  * @handle_error: Handler for the #Flash::handle-error signal.
21788  * @handle_init: Handler for the #Flash::handle-init signal.
21789  * @handle_update: Handler for the #Flash::handle-update signal.
21790  * @handle_update_via_tftp: Handler for the #Flash::handle-update-via-tftp signal.
21791  * @get_filename: Getter for the #Flash:filename property.
21792  * @get_flasher_instance: Getter for the #Flash:flasher-instance property.
21793  * @get_flasher_name: Getter for the #Flash:flasher-name property.
21794  * @get_flasher_path: Getter for the #Flash:flasher-path property.
21795  * @get_status: Getter for the #Flash:status property.
21796  * @download: Handler for the #Flash::download signal.
21797  * @updated: Handler for the #Flash::updated signal.
21798  *
21799  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Flash.top_of_page">org.openbmc.Flash</link>.
21800  */
21801 
21802 typedef FlashIface FlashInterface;
21803 G_DEFINE_INTERFACE (Flash, flash, G_TYPE_OBJECT);
21804 
21805 static void
21806 flash_default_init (FlashIface *iface)
21807 {
21808   /* GObject signals for incoming D-Bus method calls: */
21809   /**
21810    * Flash::handle-update:
21811    * @object: A #Flash.
21812    * @invocation: A #GDBusMethodInvocation.
21813    * @arg_filename: Argument passed by remote caller.
21814    *
21815    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Flash.update">update()</link> D-Bus method.
21816    *
21817    * 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 flash_complete_update() 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.
21818    *
21819    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
21820    */
21821   g_signal_new ("handle-update",
21822     G_TYPE_FROM_INTERFACE (iface),
21823     G_SIGNAL_RUN_LAST,
21824     G_STRUCT_OFFSET (FlashIface, handle_update),
21825     g_signal_accumulator_true_handled,
21826     NULL,
21827     g_cclosure_marshal_generic,
21828     G_TYPE_BOOLEAN,
21829     2,
21830     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
21831 
21832   /**
21833    * Flash::handle-error:
21834    * @object: A #Flash.
21835    * @invocation: A #GDBusMethodInvocation.
21836    * @arg_message: Argument passed by remote caller.
21837    *
21838    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Flash.error">error()</link> D-Bus method.
21839    *
21840    * 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 flash_complete_error() 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.
21841    *
21842    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
21843    */
21844   g_signal_new ("handle-error",
21845     G_TYPE_FROM_INTERFACE (iface),
21846     G_SIGNAL_RUN_LAST,
21847     G_STRUCT_OFFSET (FlashIface, handle_error),
21848     g_signal_accumulator_true_handled,
21849     NULL,
21850     g_cclosure_marshal_generic,
21851     G_TYPE_BOOLEAN,
21852     2,
21853     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
21854 
21855   /**
21856    * Flash::handle-done:
21857    * @object: A #Flash.
21858    * @invocation: A #GDBusMethodInvocation.
21859    *
21860    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Flash.done">done()</link> D-Bus method.
21861    *
21862    * 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 flash_complete_done() 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.
21863    *
21864    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
21865    */
21866   g_signal_new ("handle-done",
21867     G_TYPE_FROM_INTERFACE (iface),
21868     G_SIGNAL_RUN_LAST,
21869     G_STRUCT_OFFSET (FlashIface, handle_done),
21870     g_signal_accumulator_true_handled,
21871     NULL,
21872     g_cclosure_marshal_generic,
21873     G_TYPE_BOOLEAN,
21874     1,
21875     G_TYPE_DBUS_METHOD_INVOCATION);
21876 
21877   /**
21878    * Flash::handle-update-via-tftp:
21879    * @object: A #Flash.
21880    * @invocation: A #GDBusMethodInvocation.
21881    * @arg_url: Argument passed by remote caller.
21882    * @arg_filename: Argument passed by remote caller.
21883    *
21884    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Flash.updateViaTftp">updateViaTftp()</link> D-Bus method.
21885    *
21886    * 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 flash_complete_update_via_tftp() 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.
21887    *
21888    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
21889    */
21890   g_signal_new ("handle-update-via-tftp",
21891     G_TYPE_FROM_INTERFACE (iface),
21892     G_SIGNAL_RUN_LAST,
21893     G_STRUCT_OFFSET (FlashIface, handle_update_via_tftp),
21894     g_signal_accumulator_true_handled,
21895     NULL,
21896     g_cclosure_marshal_generic,
21897     G_TYPE_BOOLEAN,
21898     3,
21899     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING);
21900 
21901   /**
21902    * Flash::handle-init:
21903    * @object: A #Flash.
21904    * @invocation: A #GDBusMethodInvocation.
21905    *
21906    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Flash.init">init()</link> D-Bus method.
21907    *
21908    * 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 flash_complete_init() 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.
21909    *
21910    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
21911    */
21912   g_signal_new ("handle-init",
21913     G_TYPE_FROM_INTERFACE (iface),
21914     G_SIGNAL_RUN_LAST,
21915     G_STRUCT_OFFSET (FlashIface, handle_init),
21916     g_signal_accumulator_true_handled,
21917     NULL,
21918     g_cclosure_marshal_generic,
21919     G_TYPE_BOOLEAN,
21920     1,
21921     G_TYPE_DBUS_METHOD_INVOCATION);
21922 
21923   /* GObject signals for received D-Bus signals: */
21924   /**
21925    * Flash::updated:
21926    * @object: A #Flash.
21927    *
21928    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Flash.Updated">"Updated"</link> is received.
21929    *
21930    * 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.
21931    */
21932   g_signal_new ("updated",
21933     G_TYPE_FROM_INTERFACE (iface),
21934     G_SIGNAL_RUN_LAST,
21935     G_STRUCT_OFFSET (FlashIface, updated),
21936     NULL,
21937     NULL,
21938     g_cclosure_marshal_generic,
21939     G_TYPE_NONE,
21940     0);
21941 
21942   /**
21943    * Flash::download:
21944    * @object: A #Flash.
21945    * @arg_url: Argument.
21946    * @arg_filename: Argument.
21947    *
21948    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Flash.Download">"Download"</link> is received.
21949    *
21950    * 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.
21951    */
21952   g_signal_new ("download",
21953     G_TYPE_FROM_INTERFACE (iface),
21954     G_SIGNAL_RUN_LAST,
21955     G_STRUCT_OFFSET (FlashIface, download),
21956     NULL,
21957     NULL,
21958     g_cclosure_marshal_generic,
21959     G_TYPE_NONE,
21960     2, G_TYPE_STRING, G_TYPE_STRING);
21961 
21962   /* GObject properties for D-Bus properties: */
21963   /**
21964    * Flash:filename:
21965    *
21966    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Flash.filename">"filename"</link>.
21967    *
21968    * 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.
21969    */
21970   g_object_interface_install_property (iface,
21971     g_param_spec_string ("filename", "filename", "filename", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
21972   /**
21973    * Flash:flasher-path:
21974    *
21975    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Flash.flasher_path">"flasher_path"</link>.
21976    *
21977    * 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.
21978    */
21979   g_object_interface_install_property (iface,
21980     g_param_spec_string ("flasher-path", "flasher_path", "flasher_path", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
21981   /**
21982    * Flash:flasher-name:
21983    *
21984    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Flash.flasher_name">"flasher_name"</link>.
21985    *
21986    * 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.
21987    */
21988   g_object_interface_install_property (iface,
21989     g_param_spec_string ("flasher-name", "flasher_name", "flasher_name", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
21990   /**
21991    * Flash:flasher-instance:
21992    *
21993    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Flash.flasher_instance">"flasher_instance"</link>.
21994    *
21995    * 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.
21996    */
21997   g_object_interface_install_property (iface,
21998     g_param_spec_string ("flasher-instance", "flasher_instance", "flasher_instance", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
21999   /**
22000    * Flash:status:
22001    *
22002    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Flash.status">"status"</link>.
22003    *
22004    * 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.
22005    */
22006   g_object_interface_install_property (iface,
22007     g_param_spec_string ("status", "status", "status", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
22008 }
22009 
22010 /**
22011  * flash_get_filename: (skip)
22012  * @object: A #Flash.
22013  *
22014  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Flash.filename">"filename"</link> D-Bus property.
22015  *
22016  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
22017  *
22018  * <warning>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 flash_dup_filename() if on another thread.</warning>
22019  *
22020  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
22021  */
22022 const gchar *
22023 flash_get_filename (Flash *object)
22024 {
22025   return FLASH_GET_IFACE (object)->get_filename (object);
22026 }
22027 
22028 /**
22029  * flash_dup_filename: (skip)
22030  * @object: A #Flash.
22031  *
22032  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-Flash.filename">"filename"</link> D-Bus property.
22033  *
22034  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
22035  *
22036  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
22037  */
22038 gchar *
22039 flash_dup_filename (Flash *object)
22040 {
22041   gchar *value;
22042   g_object_get (G_OBJECT (object), "filename", &value, NULL);
22043   return value;
22044 }
22045 
22046 /**
22047  * flash_set_filename: (skip)
22048  * @object: A #Flash.
22049  * @value: The value to set.
22050  *
22051  * Sets the <link linkend="gdbus-property-org-openbmc-Flash.filename">"filename"</link> D-Bus property to @value.
22052  *
22053  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
22054  */
22055 void
22056 flash_set_filename (Flash *object, const gchar *value)
22057 {
22058   g_object_set (G_OBJECT (object), "filename", value, NULL);
22059 }
22060 
22061 /**
22062  * flash_get_flasher_path: (skip)
22063  * @object: A #Flash.
22064  *
22065  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Flash.flasher_path">"flasher_path"</link> D-Bus property.
22066  *
22067  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
22068  *
22069  * <warning>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 flash_dup_flasher_path() if on another thread.</warning>
22070  *
22071  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
22072  */
22073 const gchar *
22074 flash_get_flasher_path (Flash *object)
22075 {
22076   return FLASH_GET_IFACE (object)->get_flasher_path (object);
22077 }
22078 
22079 /**
22080  * flash_dup_flasher_path: (skip)
22081  * @object: A #Flash.
22082  *
22083  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-Flash.flasher_path">"flasher_path"</link> D-Bus property.
22084  *
22085  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
22086  *
22087  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
22088  */
22089 gchar *
22090 flash_dup_flasher_path (Flash *object)
22091 {
22092   gchar *value;
22093   g_object_get (G_OBJECT (object), "flasher-path", &value, NULL);
22094   return value;
22095 }
22096 
22097 /**
22098  * flash_set_flasher_path: (skip)
22099  * @object: A #Flash.
22100  * @value: The value to set.
22101  *
22102  * Sets the <link linkend="gdbus-property-org-openbmc-Flash.flasher_path">"flasher_path"</link> D-Bus property to @value.
22103  *
22104  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
22105  */
22106 void
22107 flash_set_flasher_path (Flash *object, const gchar *value)
22108 {
22109   g_object_set (G_OBJECT (object), "flasher-path", value, NULL);
22110 }
22111 
22112 /**
22113  * flash_get_flasher_name: (skip)
22114  * @object: A #Flash.
22115  *
22116  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Flash.flasher_name">"flasher_name"</link> D-Bus property.
22117  *
22118  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
22119  *
22120  * <warning>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 flash_dup_flasher_name() if on another thread.</warning>
22121  *
22122  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
22123  */
22124 const gchar *
22125 flash_get_flasher_name (Flash *object)
22126 {
22127   return FLASH_GET_IFACE (object)->get_flasher_name (object);
22128 }
22129 
22130 /**
22131  * flash_dup_flasher_name: (skip)
22132  * @object: A #Flash.
22133  *
22134  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-Flash.flasher_name">"flasher_name"</link> D-Bus property.
22135  *
22136  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
22137  *
22138  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
22139  */
22140 gchar *
22141 flash_dup_flasher_name (Flash *object)
22142 {
22143   gchar *value;
22144   g_object_get (G_OBJECT (object), "flasher-name", &value, NULL);
22145   return value;
22146 }
22147 
22148 /**
22149  * flash_set_flasher_name: (skip)
22150  * @object: A #Flash.
22151  * @value: The value to set.
22152  *
22153  * Sets the <link linkend="gdbus-property-org-openbmc-Flash.flasher_name">"flasher_name"</link> D-Bus property to @value.
22154  *
22155  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
22156  */
22157 void
22158 flash_set_flasher_name (Flash *object, const gchar *value)
22159 {
22160   g_object_set (G_OBJECT (object), "flasher-name", value, NULL);
22161 }
22162 
22163 /**
22164  * flash_get_flasher_instance: (skip)
22165  * @object: A #Flash.
22166  *
22167  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Flash.flasher_instance">"flasher_instance"</link> D-Bus property.
22168  *
22169  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
22170  *
22171  * <warning>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 flash_dup_flasher_instance() if on another thread.</warning>
22172  *
22173  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
22174  */
22175 const gchar *
22176 flash_get_flasher_instance (Flash *object)
22177 {
22178   return FLASH_GET_IFACE (object)->get_flasher_instance (object);
22179 }
22180 
22181 /**
22182  * flash_dup_flasher_instance: (skip)
22183  * @object: A #Flash.
22184  *
22185  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-Flash.flasher_instance">"flasher_instance"</link> D-Bus property.
22186  *
22187  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
22188  *
22189  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
22190  */
22191 gchar *
22192 flash_dup_flasher_instance (Flash *object)
22193 {
22194   gchar *value;
22195   g_object_get (G_OBJECT (object), "flasher-instance", &value, NULL);
22196   return value;
22197 }
22198 
22199 /**
22200  * flash_set_flasher_instance: (skip)
22201  * @object: A #Flash.
22202  * @value: The value to set.
22203  *
22204  * Sets the <link linkend="gdbus-property-org-openbmc-Flash.flasher_instance">"flasher_instance"</link> D-Bus property to @value.
22205  *
22206  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
22207  */
22208 void
22209 flash_set_flasher_instance (Flash *object, const gchar *value)
22210 {
22211   g_object_set (G_OBJECT (object), "flasher-instance", value, NULL);
22212 }
22213 
22214 /**
22215  * flash_get_status: (skip)
22216  * @object: A #Flash.
22217  *
22218  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Flash.status">"status"</link> D-Bus property.
22219  *
22220  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
22221  *
22222  * <warning>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 flash_dup_status() if on another thread.</warning>
22223  *
22224  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
22225  */
22226 const gchar *
22227 flash_get_status (Flash *object)
22228 {
22229   return FLASH_GET_IFACE (object)->get_status (object);
22230 }
22231 
22232 /**
22233  * flash_dup_status: (skip)
22234  * @object: A #Flash.
22235  *
22236  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-Flash.status">"status"</link> D-Bus property.
22237  *
22238  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
22239  *
22240  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
22241  */
22242 gchar *
22243 flash_dup_status (Flash *object)
22244 {
22245   gchar *value;
22246   g_object_get (G_OBJECT (object), "status", &value, NULL);
22247   return value;
22248 }
22249 
22250 /**
22251  * flash_set_status: (skip)
22252  * @object: A #Flash.
22253  * @value: The value to set.
22254  *
22255  * Sets the <link linkend="gdbus-property-org-openbmc-Flash.status">"status"</link> D-Bus property to @value.
22256  *
22257  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
22258  */
22259 void
22260 flash_set_status (Flash *object, const gchar *value)
22261 {
22262   g_object_set (G_OBJECT (object), "status", value, NULL);
22263 }
22264 
22265 /**
22266  * flash_emit_updated:
22267  * @object: A #Flash.
22268  *
22269  * Emits the <link linkend="gdbus-signal-org-openbmc-Flash.Updated">"Updated"</link> D-Bus signal.
22270  */
22271 void
22272 flash_emit_updated (
22273     Flash *object)
22274 {
22275   g_signal_emit_by_name (object, "updated");
22276 }
22277 
22278 /**
22279  * flash_emit_download:
22280  * @object: A #Flash.
22281  * @arg_url: Argument to pass with the signal.
22282  * @arg_filename: Argument to pass with the signal.
22283  *
22284  * Emits the <link linkend="gdbus-signal-org-openbmc-Flash.Download">"Download"</link> D-Bus signal.
22285  */
22286 void
22287 flash_emit_download (
22288     Flash *object,
22289     const gchar *arg_url,
22290     const gchar *arg_filename)
22291 {
22292   g_signal_emit_by_name (object, "download", arg_url, arg_filename);
22293 }
22294 
22295 /**
22296  * flash_call_update:
22297  * @proxy: A #FlashProxy.
22298  * @arg_filename: Argument to pass with the method invocation.
22299  * @cancellable: (allow-none): A #GCancellable or %NULL.
22300  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
22301  * @user_data: User data to pass to @callback.
22302  *
22303  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Flash.update">update()</link> D-Bus method on @proxy.
22304  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
22305  * You can then call flash_call_update_finish() to get the result of the operation.
22306  *
22307  * See flash_call_update_sync() for the synchronous, blocking version of this method.
22308  */
22309 void
22310 flash_call_update (
22311     Flash *proxy,
22312     const gchar *arg_filename,
22313     GCancellable *cancellable,
22314     GAsyncReadyCallback callback,
22315     gpointer user_data)
22316 {
22317   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
22318     "update",
22319     g_variant_new ("(s)",
22320                    arg_filename),
22321     G_DBUS_CALL_FLAGS_NONE,
22322     -1,
22323     cancellable,
22324     callback,
22325     user_data);
22326 }
22327 
22328 /**
22329  * flash_call_update_finish:
22330  * @proxy: A #FlashProxy.
22331  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to flash_call_update().
22332  * @error: Return location for error or %NULL.
22333  *
22334  * Finishes an operation started with flash_call_update().
22335  *
22336  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
22337  */
22338 gboolean
22339 flash_call_update_finish (
22340     Flash *proxy,
22341     GAsyncResult *res,
22342     GError **error)
22343 {
22344   GVariant *_ret;
22345   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
22346   if (_ret == NULL)
22347     goto _out;
22348   g_variant_get (_ret,
22349                  "()");
22350   g_variant_unref (_ret);
22351 _out:
22352   return _ret != NULL;
22353 }
22354 
22355 /**
22356  * flash_call_update_sync:
22357  * @proxy: A #FlashProxy.
22358  * @arg_filename: Argument to pass with the method invocation.
22359  * @cancellable: (allow-none): A #GCancellable or %NULL.
22360  * @error: Return location for error or %NULL.
22361  *
22362  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Flash.update">update()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
22363  *
22364  * See flash_call_update() for the asynchronous version of this method.
22365  *
22366  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
22367  */
22368 gboolean
22369 flash_call_update_sync (
22370     Flash *proxy,
22371     const gchar *arg_filename,
22372     GCancellable *cancellable,
22373     GError **error)
22374 {
22375   GVariant *_ret;
22376   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
22377     "update",
22378     g_variant_new ("(s)",
22379                    arg_filename),
22380     G_DBUS_CALL_FLAGS_NONE,
22381     -1,
22382     cancellable,
22383     error);
22384   if (_ret == NULL)
22385     goto _out;
22386   g_variant_get (_ret,
22387                  "()");
22388   g_variant_unref (_ret);
22389 _out:
22390   return _ret != NULL;
22391 }
22392 
22393 /**
22394  * flash_call_error:
22395  * @proxy: A #FlashProxy.
22396  * @arg_message: Argument to pass with the method invocation.
22397  * @cancellable: (allow-none): A #GCancellable or %NULL.
22398  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
22399  * @user_data: User data to pass to @callback.
22400  *
22401  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Flash.error">error()</link> D-Bus method on @proxy.
22402  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
22403  * You can then call flash_call_error_finish() to get the result of the operation.
22404  *
22405  * See flash_call_error_sync() for the synchronous, blocking version of this method.
22406  */
22407 void
22408 flash_call_error (
22409     Flash *proxy,
22410     const gchar *arg_message,
22411     GCancellable *cancellable,
22412     GAsyncReadyCallback callback,
22413     gpointer user_data)
22414 {
22415   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
22416     "error",
22417     g_variant_new ("(s)",
22418                    arg_message),
22419     G_DBUS_CALL_FLAGS_NONE,
22420     -1,
22421     cancellable,
22422     callback,
22423     user_data);
22424 }
22425 
22426 /**
22427  * flash_call_error_finish:
22428  * @proxy: A #FlashProxy.
22429  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to flash_call_error().
22430  * @error: Return location for error or %NULL.
22431  *
22432  * Finishes an operation started with flash_call_error().
22433  *
22434  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
22435  */
22436 gboolean
22437 flash_call_error_finish (
22438     Flash *proxy,
22439     GAsyncResult *res,
22440     GError **error)
22441 {
22442   GVariant *_ret;
22443   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
22444   if (_ret == NULL)
22445     goto _out;
22446   g_variant_get (_ret,
22447                  "()");
22448   g_variant_unref (_ret);
22449 _out:
22450   return _ret != NULL;
22451 }
22452 
22453 /**
22454  * flash_call_error_sync:
22455  * @proxy: A #FlashProxy.
22456  * @arg_message: Argument to pass with the method invocation.
22457  * @cancellable: (allow-none): A #GCancellable or %NULL.
22458  * @error: Return location for error or %NULL.
22459  *
22460  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Flash.error">error()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
22461  *
22462  * See flash_call_error() for the asynchronous version of this method.
22463  *
22464  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
22465  */
22466 gboolean
22467 flash_call_error_sync (
22468     Flash *proxy,
22469     const gchar *arg_message,
22470     GCancellable *cancellable,
22471     GError **error)
22472 {
22473   GVariant *_ret;
22474   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
22475     "error",
22476     g_variant_new ("(s)",
22477                    arg_message),
22478     G_DBUS_CALL_FLAGS_NONE,
22479     -1,
22480     cancellable,
22481     error);
22482   if (_ret == NULL)
22483     goto _out;
22484   g_variant_get (_ret,
22485                  "()");
22486   g_variant_unref (_ret);
22487 _out:
22488   return _ret != NULL;
22489 }
22490 
22491 /**
22492  * flash_call_done:
22493  * @proxy: A #FlashProxy.
22494  * @cancellable: (allow-none): A #GCancellable or %NULL.
22495  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
22496  * @user_data: User data to pass to @callback.
22497  *
22498  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Flash.done">done()</link> D-Bus method on @proxy.
22499  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
22500  * You can then call flash_call_done_finish() to get the result of the operation.
22501  *
22502  * See flash_call_done_sync() for the synchronous, blocking version of this method.
22503  */
22504 void
22505 flash_call_done (
22506     Flash *proxy,
22507     GCancellable *cancellable,
22508     GAsyncReadyCallback callback,
22509     gpointer user_data)
22510 {
22511   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
22512     "done",
22513     g_variant_new ("()"),
22514     G_DBUS_CALL_FLAGS_NONE,
22515     -1,
22516     cancellable,
22517     callback,
22518     user_data);
22519 }
22520 
22521 /**
22522  * flash_call_done_finish:
22523  * @proxy: A #FlashProxy.
22524  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to flash_call_done().
22525  * @error: Return location for error or %NULL.
22526  *
22527  * Finishes an operation started with flash_call_done().
22528  *
22529  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
22530  */
22531 gboolean
22532 flash_call_done_finish (
22533     Flash *proxy,
22534     GAsyncResult *res,
22535     GError **error)
22536 {
22537   GVariant *_ret;
22538   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
22539   if (_ret == NULL)
22540     goto _out;
22541   g_variant_get (_ret,
22542                  "()");
22543   g_variant_unref (_ret);
22544 _out:
22545   return _ret != NULL;
22546 }
22547 
22548 /**
22549  * flash_call_done_sync:
22550  * @proxy: A #FlashProxy.
22551  * @cancellable: (allow-none): A #GCancellable or %NULL.
22552  * @error: Return location for error or %NULL.
22553  *
22554  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Flash.done">done()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
22555  *
22556  * See flash_call_done() for the asynchronous version of this method.
22557  *
22558  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
22559  */
22560 gboolean
22561 flash_call_done_sync (
22562     Flash *proxy,
22563     GCancellable *cancellable,
22564     GError **error)
22565 {
22566   GVariant *_ret;
22567   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
22568     "done",
22569     g_variant_new ("()"),
22570     G_DBUS_CALL_FLAGS_NONE,
22571     -1,
22572     cancellable,
22573     error);
22574   if (_ret == NULL)
22575     goto _out;
22576   g_variant_get (_ret,
22577                  "()");
22578   g_variant_unref (_ret);
22579 _out:
22580   return _ret != NULL;
22581 }
22582 
22583 /**
22584  * flash_call_update_via_tftp:
22585  * @proxy: A #FlashProxy.
22586  * @arg_url: Argument to pass with the method invocation.
22587  * @arg_filename: Argument to pass with the method invocation.
22588  * @cancellable: (allow-none): A #GCancellable or %NULL.
22589  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
22590  * @user_data: User data to pass to @callback.
22591  *
22592  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Flash.updateViaTftp">updateViaTftp()</link> D-Bus method on @proxy.
22593  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
22594  * You can then call flash_call_update_via_tftp_finish() to get the result of the operation.
22595  *
22596  * See flash_call_update_via_tftp_sync() for the synchronous, blocking version of this method.
22597  */
22598 void
22599 flash_call_update_via_tftp (
22600     Flash *proxy,
22601     const gchar *arg_url,
22602     const gchar *arg_filename,
22603     GCancellable *cancellable,
22604     GAsyncReadyCallback callback,
22605     gpointer user_data)
22606 {
22607   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
22608     "updateViaTftp",
22609     g_variant_new ("(ss)",
22610                    arg_url,
22611                    arg_filename),
22612     G_DBUS_CALL_FLAGS_NONE,
22613     -1,
22614     cancellable,
22615     callback,
22616     user_data);
22617 }
22618 
22619 /**
22620  * flash_call_update_via_tftp_finish:
22621  * @proxy: A #FlashProxy.
22622  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to flash_call_update_via_tftp().
22623  * @error: Return location for error or %NULL.
22624  *
22625  * Finishes an operation started with flash_call_update_via_tftp().
22626  *
22627  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
22628  */
22629 gboolean
22630 flash_call_update_via_tftp_finish (
22631     Flash *proxy,
22632     GAsyncResult *res,
22633     GError **error)
22634 {
22635   GVariant *_ret;
22636   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
22637   if (_ret == NULL)
22638     goto _out;
22639   g_variant_get (_ret,
22640                  "()");
22641   g_variant_unref (_ret);
22642 _out:
22643   return _ret != NULL;
22644 }
22645 
22646 /**
22647  * flash_call_update_via_tftp_sync:
22648  * @proxy: A #FlashProxy.
22649  * @arg_url: Argument to pass with the method invocation.
22650  * @arg_filename: Argument to pass with the method invocation.
22651  * @cancellable: (allow-none): A #GCancellable or %NULL.
22652  * @error: Return location for error or %NULL.
22653  *
22654  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Flash.updateViaTftp">updateViaTftp()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
22655  *
22656  * See flash_call_update_via_tftp() for the asynchronous version of this method.
22657  *
22658  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
22659  */
22660 gboolean
22661 flash_call_update_via_tftp_sync (
22662     Flash *proxy,
22663     const gchar *arg_url,
22664     const gchar *arg_filename,
22665     GCancellable *cancellable,
22666     GError **error)
22667 {
22668   GVariant *_ret;
22669   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
22670     "updateViaTftp",
22671     g_variant_new ("(ss)",
22672                    arg_url,
22673                    arg_filename),
22674     G_DBUS_CALL_FLAGS_NONE,
22675     -1,
22676     cancellable,
22677     error);
22678   if (_ret == NULL)
22679     goto _out;
22680   g_variant_get (_ret,
22681                  "()");
22682   g_variant_unref (_ret);
22683 _out:
22684   return _ret != NULL;
22685 }
22686 
22687 /**
22688  * flash_call_init:
22689  * @proxy: A #FlashProxy.
22690  * @cancellable: (allow-none): A #GCancellable or %NULL.
22691  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
22692  * @user_data: User data to pass to @callback.
22693  *
22694  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Flash.init">init()</link> D-Bus method on @proxy.
22695  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
22696  * You can then call flash_call_init_finish() to get the result of the operation.
22697  *
22698  * See flash_call_init_sync() for the synchronous, blocking version of this method.
22699  */
22700 void
22701 flash_call_init (
22702     Flash *proxy,
22703     GCancellable *cancellable,
22704     GAsyncReadyCallback callback,
22705     gpointer user_data)
22706 {
22707   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
22708     "init",
22709     g_variant_new ("()"),
22710     G_DBUS_CALL_FLAGS_NONE,
22711     -1,
22712     cancellable,
22713     callback,
22714     user_data);
22715 }
22716 
22717 /**
22718  * flash_call_init_finish:
22719  * @proxy: A #FlashProxy.
22720  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to flash_call_init().
22721  * @error: Return location for error or %NULL.
22722  *
22723  * Finishes an operation started with flash_call_init().
22724  *
22725  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
22726  */
22727 gboolean
22728 flash_call_init_finish (
22729     Flash *proxy,
22730     GAsyncResult *res,
22731     GError **error)
22732 {
22733   GVariant *_ret;
22734   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
22735   if (_ret == NULL)
22736     goto _out;
22737   g_variant_get (_ret,
22738                  "()");
22739   g_variant_unref (_ret);
22740 _out:
22741   return _ret != NULL;
22742 }
22743 
22744 /**
22745  * flash_call_init_sync:
22746  * @proxy: A #FlashProxy.
22747  * @cancellable: (allow-none): A #GCancellable or %NULL.
22748  * @error: Return location for error or %NULL.
22749  *
22750  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Flash.init">init()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
22751  *
22752  * See flash_call_init() for the asynchronous version of this method.
22753  *
22754  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
22755  */
22756 gboolean
22757 flash_call_init_sync (
22758     Flash *proxy,
22759     GCancellable *cancellable,
22760     GError **error)
22761 {
22762   GVariant *_ret;
22763   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
22764     "init",
22765     g_variant_new ("()"),
22766     G_DBUS_CALL_FLAGS_NONE,
22767     -1,
22768     cancellable,
22769     error);
22770   if (_ret == NULL)
22771     goto _out;
22772   g_variant_get (_ret,
22773                  "()");
22774   g_variant_unref (_ret);
22775 _out:
22776   return _ret != NULL;
22777 }
22778 
22779 /**
22780  * flash_complete_update:
22781  * @object: A #Flash.
22782  * @invocation: (transfer full): A #GDBusMethodInvocation.
22783  *
22784  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Flash.update">update()</link> 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.
22785  *
22786  * This method will free @invocation, you cannot use it afterwards.
22787  */
22788 void
22789 flash_complete_update (
22790     Flash *object,
22791     GDBusMethodInvocation *invocation)
22792 {
22793   g_dbus_method_invocation_return_value (invocation,
22794     g_variant_new ("()"));
22795 }
22796 
22797 /**
22798  * flash_complete_error:
22799  * @object: A #Flash.
22800  * @invocation: (transfer full): A #GDBusMethodInvocation.
22801  *
22802  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Flash.error">error()</link> 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.
22803  *
22804  * This method will free @invocation, you cannot use it afterwards.
22805  */
22806 void
22807 flash_complete_error (
22808     Flash *object,
22809     GDBusMethodInvocation *invocation)
22810 {
22811   g_dbus_method_invocation_return_value (invocation,
22812     g_variant_new ("()"));
22813 }
22814 
22815 /**
22816  * flash_complete_done:
22817  * @object: A #Flash.
22818  * @invocation: (transfer full): A #GDBusMethodInvocation.
22819  *
22820  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Flash.done">done()</link> 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.
22821  *
22822  * This method will free @invocation, you cannot use it afterwards.
22823  */
22824 void
22825 flash_complete_done (
22826     Flash *object,
22827     GDBusMethodInvocation *invocation)
22828 {
22829   g_dbus_method_invocation_return_value (invocation,
22830     g_variant_new ("()"));
22831 }
22832 
22833 /**
22834  * flash_complete_update_via_tftp:
22835  * @object: A #Flash.
22836  * @invocation: (transfer full): A #GDBusMethodInvocation.
22837  *
22838  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Flash.updateViaTftp">updateViaTftp()</link> 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.
22839  *
22840  * This method will free @invocation, you cannot use it afterwards.
22841  */
22842 void
22843 flash_complete_update_via_tftp (
22844     Flash *object,
22845     GDBusMethodInvocation *invocation)
22846 {
22847   g_dbus_method_invocation_return_value (invocation,
22848     g_variant_new ("()"));
22849 }
22850 
22851 /**
22852  * flash_complete_init:
22853  * @object: A #Flash.
22854  * @invocation: (transfer full): A #GDBusMethodInvocation.
22855  *
22856  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Flash.init">init()</link> 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.
22857  *
22858  * This method will free @invocation, you cannot use it afterwards.
22859  */
22860 void
22861 flash_complete_init (
22862     Flash *object,
22863     GDBusMethodInvocation *invocation)
22864 {
22865   g_dbus_method_invocation_return_value (invocation,
22866     g_variant_new ("()"));
22867 }
22868 
22869 /* ------------------------------------------------------------------------ */
22870 
22871 /**
22872  * FlashProxy:
22873  *
22874  * The #FlashProxy structure contains only private data and should only be accessed using the provided API.
22875  */
22876 
22877 /**
22878  * FlashProxyClass:
22879  * @parent_class: The parent class.
22880  *
22881  * Class structure for #FlashProxy.
22882  */
22883 
22884 struct _FlashProxyPrivate
22885 {
22886   GData *qdata;
22887 };
22888 
22889 static void flash_proxy_iface_init (FlashIface *iface);
22890 
22891 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
22892 G_DEFINE_TYPE_WITH_CODE (FlashProxy, flash_proxy, G_TYPE_DBUS_PROXY,
22893                          G_ADD_PRIVATE (FlashProxy)
22894                          G_IMPLEMENT_INTERFACE (TYPE_FLASH, flash_proxy_iface_init));
22895 
22896 #else
22897 G_DEFINE_TYPE_WITH_CODE (FlashProxy, flash_proxy, G_TYPE_DBUS_PROXY,
22898                          G_IMPLEMENT_INTERFACE (TYPE_FLASH, flash_proxy_iface_init));
22899 
22900 #endif
22901 static void
22902 flash_proxy_finalize (GObject *object)
22903 {
22904   FlashProxy *proxy = FLASH_PROXY (object);
22905   g_datalist_clear (&proxy->priv->qdata);
22906   G_OBJECT_CLASS (flash_proxy_parent_class)->finalize (object);
22907 }
22908 
22909 static void
22910 flash_proxy_get_property (GObject      *object,
22911   guint         prop_id,
22912   GValue       *value,
22913   GParamSpec   *pspec G_GNUC_UNUSED)
22914 {
22915   const _ExtendedGDBusPropertyInfo *info;
22916   GVariant *variant;
22917   g_assert (prop_id != 0 && prop_id - 1 < 5);
22918   info = _flash_property_info_pointers[prop_id - 1];
22919   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
22920   if (info->use_gvariant)
22921     {
22922       g_value_set_variant (value, variant);
22923     }
22924   else
22925     {
22926       if (variant != NULL)
22927         g_dbus_gvariant_to_gvalue (variant, value);
22928     }
22929   if (variant != NULL)
22930     g_variant_unref (variant);
22931 }
22932 
22933 static void
22934 flash_proxy_set_property_cb (GDBusProxy *proxy,
22935   GAsyncResult *res,
22936   gpointer      user_data)
22937 {
22938   const _ExtendedGDBusPropertyInfo *info = user_data;
22939   GError *error;
22940   GVariant *_ret;
22941   error = NULL;
22942   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
22943   if (!_ret)
22944     {
22945       g_warning ("Error setting property '%s' on interface org.openbmc.Flash: %s (%s, %d)",
22946                  info->parent_struct.name,
22947                  error->message, g_quark_to_string (error->domain), error->code);
22948       g_error_free (error);
22949     }
22950   else
22951     {
22952       g_variant_unref (_ret);
22953     }
22954 }
22955 
22956 static void
22957 flash_proxy_set_property (GObject      *object,
22958   guint         prop_id,
22959   const GValue *value,
22960   GParamSpec   *pspec G_GNUC_UNUSED)
22961 {
22962   const _ExtendedGDBusPropertyInfo *info;
22963   GVariant *variant;
22964   g_assert (prop_id != 0 && prop_id - 1 < 5);
22965   info = _flash_property_info_pointers[prop_id - 1];
22966   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
22967   g_dbus_proxy_call (G_DBUS_PROXY (object),
22968     "org.freedesktop.DBus.Properties.Set",
22969     g_variant_new ("(ssv)", "org.openbmc.Flash", info->parent_struct.name, variant),
22970     G_DBUS_CALL_FLAGS_NONE,
22971     -1,
22972     NULL, (GAsyncReadyCallback) flash_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
22973   g_variant_unref (variant);
22974 }
22975 
22976 static void
22977 flash_proxy_g_signal (GDBusProxy *proxy,
22978   const gchar *sender_name G_GNUC_UNUSED,
22979   const gchar *signal_name,
22980   GVariant *parameters)
22981 {
22982   _ExtendedGDBusSignalInfo *info;
22983   GVariantIter iter;
22984   GVariant *child;
22985   GValue *paramv;
22986   guint num_params;
22987   guint n;
22988   guint signal_id;
22989   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_flash_interface_info.parent_struct, signal_name);
22990   if (info == NULL)
22991     return;
22992   num_params = g_variant_n_children (parameters);
22993   paramv = g_new0 (GValue, num_params + 1);
22994   g_value_init (&paramv[0], TYPE_FLASH);
22995   g_value_set_object (&paramv[0], proxy);
22996   g_variant_iter_init (&iter, parameters);
22997   n = 1;
22998   while ((child = g_variant_iter_next_value (&iter)) != NULL)
22999     {
23000       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
23001       if (arg_info->use_gvariant)
23002         {
23003           g_value_init (&paramv[n], G_TYPE_VARIANT);
23004           g_value_set_variant (&paramv[n], child);
23005           n++;
23006         }
23007       else
23008         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
23009       g_variant_unref (child);
23010     }
23011   signal_id = g_signal_lookup (info->signal_name, TYPE_FLASH);
23012   g_signal_emitv (paramv, signal_id, 0, NULL);
23013   for (n = 0; n < num_params + 1; n++)
23014     g_value_unset (&paramv[n]);
23015   g_free (paramv);
23016 }
23017 
23018 static void
23019 flash_proxy_g_properties_changed (GDBusProxy *_proxy,
23020   GVariant *changed_properties,
23021   const gchar *const *invalidated_properties)
23022 {
23023   FlashProxy *proxy = FLASH_PROXY (_proxy);
23024   guint n;
23025   const gchar *key;
23026   GVariantIter *iter;
23027   _ExtendedGDBusPropertyInfo *info;
23028   g_variant_get (changed_properties, "a{sv}", &iter);
23029   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
23030     {
23031       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_flash_interface_info.parent_struct, key);
23032       g_datalist_remove_data (&proxy->priv->qdata, key);
23033       if (info != NULL)
23034         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
23035     }
23036   g_variant_iter_free (iter);
23037   for (n = 0; invalidated_properties[n] != NULL; n++)
23038     {
23039       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_flash_interface_info.parent_struct, invalidated_properties[n]);
23040       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
23041       if (info != NULL)
23042         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
23043     }
23044 }
23045 
23046 static const gchar *
23047 flash_proxy_get_filename (Flash *object)
23048 {
23049   FlashProxy *proxy = FLASH_PROXY (object);
23050   GVariant *variant;
23051   const gchar *value = NULL;
23052   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "filename");
23053   if (variant != NULL)
23054     {
23055       value = g_variant_get_string (variant, NULL);
23056       g_variant_unref (variant);
23057     }
23058   return value;
23059 }
23060 
23061 static const gchar *
23062 flash_proxy_get_flasher_path (Flash *object)
23063 {
23064   FlashProxy *proxy = FLASH_PROXY (object);
23065   GVariant *variant;
23066   const gchar *value = NULL;
23067   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "flasher_path");
23068   if (variant != NULL)
23069     {
23070       value = g_variant_get_string (variant, NULL);
23071       g_variant_unref (variant);
23072     }
23073   return value;
23074 }
23075 
23076 static const gchar *
23077 flash_proxy_get_flasher_name (Flash *object)
23078 {
23079   FlashProxy *proxy = FLASH_PROXY (object);
23080   GVariant *variant;
23081   const gchar *value = NULL;
23082   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "flasher_name");
23083   if (variant != NULL)
23084     {
23085       value = g_variant_get_string (variant, NULL);
23086       g_variant_unref (variant);
23087     }
23088   return value;
23089 }
23090 
23091 static const gchar *
23092 flash_proxy_get_flasher_instance (Flash *object)
23093 {
23094   FlashProxy *proxy = FLASH_PROXY (object);
23095   GVariant *variant;
23096   const gchar *value = NULL;
23097   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "flasher_instance");
23098   if (variant != NULL)
23099     {
23100       value = g_variant_get_string (variant, NULL);
23101       g_variant_unref (variant);
23102     }
23103   return value;
23104 }
23105 
23106 static const gchar *
23107 flash_proxy_get_status (Flash *object)
23108 {
23109   FlashProxy *proxy = FLASH_PROXY (object);
23110   GVariant *variant;
23111   const gchar *value = NULL;
23112   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "status");
23113   if (variant != NULL)
23114     {
23115       value = g_variant_get_string (variant, NULL);
23116       g_variant_unref (variant);
23117     }
23118   return value;
23119 }
23120 
23121 static void
23122 flash_proxy_init (FlashProxy *proxy)
23123 {
23124 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
23125   proxy->priv = flash_proxy_get_instance_private (proxy);
23126 #else
23127   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_FLASH_PROXY, FlashProxyPrivate);
23128 #endif
23129 
23130   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), flash_interface_info ());
23131 }
23132 
23133 static void
23134 flash_proxy_class_init (FlashProxyClass *klass)
23135 {
23136   GObjectClass *gobject_class;
23137   GDBusProxyClass *proxy_class;
23138 
23139   gobject_class = G_OBJECT_CLASS (klass);
23140   gobject_class->finalize     = flash_proxy_finalize;
23141   gobject_class->get_property = flash_proxy_get_property;
23142   gobject_class->set_property = flash_proxy_set_property;
23143 
23144   proxy_class = G_DBUS_PROXY_CLASS (klass);
23145   proxy_class->g_signal = flash_proxy_g_signal;
23146   proxy_class->g_properties_changed = flash_proxy_g_properties_changed;
23147 
23148   flash_override_properties (gobject_class, 1);
23149 
23150 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
23151   g_type_class_add_private (klass, sizeof (FlashProxyPrivate));
23152 #endif
23153 }
23154 
23155 static void
23156 flash_proxy_iface_init (FlashIface *iface)
23157 {
23158   iface->get_filename = flash_proxy_get_filename;
23159   iface->get_flasher_path = flash_proxy_get_flasher_path;
23160   iface->get_flasher_name = flash_proxy_get_flasher_name;
23161   iface->get_flasher_instance = flash_proxy_get_flasher_instance;
23162   iface->get_status = flash_proxy_get_status;
23163 }
23164 
23165 /**
23166  * flash_proxy_new:
23167  * @connection: A #GDBusConnection.
23168  * @flags: Flags from the #GDBusProxyFlags enumeration.
23169  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
23170  * @object_path: An object path.
23171  * @cancellable: (allow-none): A #GCancellable or %NULL.
23172  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
23173  * @user_data: User data to pass to @callback.
23174  *
23175  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Flash.top_of_page">org.openbmc.Flash</link>. See g_dbus_proxy_new() for more details.
23176  *
23177  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
23178  * You can then call flash_proxy_new_finish() to get the result of the operation.
23179  *
23180  * See flash_proxy_new_sync() for the synchronous, blocking version of this constructor.
23181  */
23182 void
23183 flash_proxy_new (
23184     GDBusConnection     *connection,
23185     GDBusProxyFlags      flags,
23186     const gchar         *name,
23187     const gchar         *object_path,
23188     GCancellable        *cancellable,
23189     GAsyncReadyCallback  callback,
23190     gpointer             user_data)
23191 {
23192   g_async_initable_new_async (TYPE_FLASH_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.openbmc.Flash", NULL);
23193 }
23194 
23195 /**
23196  * flash_proxy_new_finish:
23197  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to flash_proxy_new().
23198  * @error: Return location for error or %NULL
23199  *
23200  * Finishes an operation started with flash_proxy_new().
23201  *
23202  * Returns: (transfer full) (type FlashProxy): The constructed proxy object or %NULL if @error is set.
23203  */
23204 Flash *
23205 flash_proxy_new_finish (
23206     GAsyncResult        *res,
23207     GError             **error)
23208 {
23209   GObject *ret;
23210   GObject *source_object;
23211   source_object = g_async_result_get_source_object (res);
23212   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
23213   g_object_unref (source_object);
23214   if (ret != NULL)
23215     return FLASH (ret);
23216   else
23217     return NULL;
23218 }
23219 
23220 /**
23221  * flash_proxy_new_sync:
23222  * @connection: A #GDBusConnection.
23223  * @flags: Flags from the #GDBusProxyFlags enumeration.
23224  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
23225  * @object_path: An object path.
23226  * @cancellable: (allow-none): A #GCancellable or %NULL.
23227  * @error: Return location for error or %NULL
23228  *
23229  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Flash.top_of_page">org.openbmc.Flash</link>. See g_dbus_proxy_new_sync() for more details.
23230  *
23231  * The calling thread is blocked until a reply is received.
23232  *
23233  * See flash_proxy_new() for the asynchronous version of this constructor.
23234  *
23235  * Returns: (transfer full) (type FlashProxy): The constructed proxy object or %NULL if @error is set.
23236  */
23237 Flash *
23238 flash_proxy_new_sync (
23239     GDBusConnection     *connection,
23240     GDBusProxyFlags      flags,
23241     const gchar         *name,
23242     const gchar         *object_path,
23243     GCancellable        *cancellable,
23244     GError             **error)
23245 {
23246   GInitable *ret;
23247   ret = g_initable_new (TYPE_FLASH_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.Flash", NULL);
23248   if (ret != NULL)
23249     return FLASH (ret);
23250   else
23251     return NULL;
23252 }
23253 
23254 
23255 /**
23256  * flash_proxy_new_for_bus:
23257  * @bus_type: A #GBusType.
23258  * @flags: Flags from the #GDBusProxyFlags enumeration.
23259  * @name: A bus name (well-known or unique).
23260  * @object_path: An object path.
23261  * @cancellable: (allow-none): A #GCancellable or %NULL.
23262  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
23263  * @user_data: User data to pass to @callback.
23264  *
23265  * Like flash_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
23266  *
23267  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
23268  * You can then call flash_proxy_new_for_bus_finish() to get the result of the operation.
23269  *
23270  * See flash_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
23271  */
23272 void
23273 flash_proxy_new_for_bus (
23274     GBusType             bus_type,
23275     GDBusProxyFlags      flags,
23276     const gchar         *name,
23277     const gchar         *object_path,
23278     GCancellable        *cancellable,
23279     GAsyncReadyCallback  callback,
23280     gpointer             user_data)
23281 {
23282   g_async_initable_new_async (TYPE_FLASH_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.openbmc.Flash", NULL);
23283 }
23284 
23285 /**
23286  * flash_proxy_new_for_bus_finish:
23287  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to flash_proxy_new_for_bus().
23288  * @error: Return location for error or %NULL
23289  *
23290  * Finishes an operation started with flash_proxy_new_for_bus().
23291  *
23292  * Returns: (transfer full) (type FlashProxy): The constructed proxy object or %NULL if @error is set.
23293  */
23294 Flash *
23295 flash_proxy_new_for_bus_finish (
23296     GAsyncResult        *res,
23297     GError             **error)
23298 {
23299   GObject *ret;
23300   GObject *source_object;
23301   source_object = g_async_result_get_source_object (res);
23302   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
23303   g_object_unref (source_object);
23304   if (ret != NULL)
23305     return FLASH (ret);
23306   else
23307     return NULL;
23308 }
23309 
23310 /**
23311  * flash_proxy_new_for_bus_sync:
23312  * @bus_type: A #GBusType.
23313  * @flags: Flags from the #GDBusProxyFlags enumeration.
23314  * @name: A bus name (well-known or unique).
23315  * @object_path: An object path.
23316  * @cancellable: (allow-none): A #GCancellable or %NULL.
23317  * @error: Return location for error or %NULL
23318  *
23319  * Like flash_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
23320  *
23321  * The calling thread is blocked until a reply is received.
23322  *
23323  * See flash_proxy_new_for_bus() for the asynchronous version of this constructor.
23324  *
23325  * Returns: (transfer full) (type FlashProxy): The constructed proxy object or %NULL if @error is set.
23326  */
23327 Flash *
23328 flash_proxy_new_for_bus_sync (
23329     GBusType             bus_type,
23330     GDBusProxyFlags      flags,
23331     const gchar         *name,
23332     const gchar         *object_path,
23333     GCancellable        *cancellable,
23334     GError             **error)
23335 {
23336   GInitable *ret;
23337   ret = g_initable_new (TYPE_FLASH_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.Flash", NULL);
23338   if (ret != NULL)
23339     return FLASH (ret);
23340   else
23341     return NULL;
23342 }
23343 
23344 
23345 /* ------------------------------------------------------------------------ */
23346 
23347 /**
23348  * FlashSkeleton:
23349  *
23350  * The #FlashSkeleton structure contains only private data and should only be accessed using the provided API.
23351  */
23352 
23353 /**
23354  * FlashSkeletonClass:
23355  * @parent_class: The parent class.
23356  *
23357  * Class structure for #FlashSkeleton.
23358  */
23359 
23360 struct _FlashSkeletonPrivate
23361 {
23362   GValue *properties;
23363   GList *changed_properties;
23364   GSource *changed_properties_idle_source;
23365   GMainContext *context;
23366   GMutex lock;
23367 };
23368 
23369 static void
23370 _flash_skeleton_handle_method_call (
23371   GDBusConnection *connection G_GNUC_UNUSED,
23372   const gchar *sender G_GNUC_UNUSED,
23373   const gchar *object_path G_GNUC_UNUSED,
23374   const gchar *interface_name,
23375   const gchar *method_name,
23376   GVariant *parameters,
23377   GDBusMethodInvocation *invocation,
23378   gpointer user_data)
23379 {
23380   FlashSkeleton *skeleton = FLASH_SKELETON (user_data);
23381   _ExtendedGDBusMethodInfo *info;
23382   GVariantIter iter;
23383   GVariant *child;
23384   GValue *paramv;
23385   guint num_params;
23386   guint num_extra;
23387   guint n;
23388   guint signal_id;
23389   GValue return_value = G_VALUE_INIT;
23390   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
23391   g_assert (info != NULL);
23392   num_params = g_variant_n_children (parameters);
23393   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
23394   n = 0;
23395   g_value_init (&paramv[n], TYPE_FLASH);
23396   g_value_set_object (&paramv[n++], skeleton);
23397   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
23398   g_value_set_object (&paramv[n++], invocation);
23399   if (info->pass_fdlist)
23400     {
23401 #ifdef G_OS_UNIX
23402       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
23403       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
23404 #else
23405       g_assert_not_reached ();
23406 #endif
23407     }
23408   g_variant_iter_init (&iter, parameters);
23409   while ((child = g_variant_iter_next_value (&iter)) != NULL)
23410     {
23411       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
23412       if (arg_info->use_gvariant)
23413         {
23414           g_value_init (&paramv[n], G_TYPE_VARIANT);
23415           g_value_set_variant (&paramv[n], child);
23416           n++;
23417         }
23418       else
23419         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
23420       g_variant_unref (child);
23421     }
23422   signal_id = g_signal_lookup (info->signal_name, TYPE_FLASH);
23423   g_value_init (&return_value, G_TYPE_BOOLEAN);
23424   g_signal_emitv (paramv, signal_id, 0, &return_value);
23425   if (!g_value_get_boolean (&return_value))
23426     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);
23427   g_value_unset (&return_value);
23428   for (n = 0; n < num_params + num_extra; n++)
23429     g_value_unset (&paramv[n]);
23430   g_free (paramv);
23431 }
23432 
23433 static GVariant *
23434 _flash_skeleton_handle_get_property (
23435   GDBusConnection *connection G_GNUC_UNUSED,
23436   const gchar *sender G_GNUC_UNUSED,
23437   const gchar *object_path G_GNUC_UNUSED,
23438   const gchar *interface_name G_GNUC_UNUSED,
23439   const gchar *property_name,
23440   GError **error,
23441   gpointer user_data)
23442 {
23443   FlashSkeleton *skeleton = FLASH_SKELETON (user_data);
23444   GValue value = G_VALUE_INIT;
23445   GParamSpec *pspec;
23446   _ExtendedGDBusPropertyInfo *info;
23447   GVariant *ret;
23448   ret = NULL;
23449   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_flash_interface_info.parent_struct, property_name);
23450   g_assert (info != NULL);
23451   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
23452   if (pspec == NULL)
23453     {
23454       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
23455     }
23456   else
23457     {
23458       g_value_init (&value, pspec->value_type);
23459       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
23460       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
23461       g_value_unset (&value);
23462     }
23463   return ret;
23464 }
23465 
23466 static gboolean
23467 _flash_skeleton_handle_set_property (
23468   GDBusConnection *connection G_GNUC_UNUSED,
23469   const gchar *sender G_GNUC_UNUSED,
23470   const gchar *object_path G_GNUC_UNUSED,
23471   const gchar *interface_name G_GNUC_UNUSED,
23472   const gchar *property_name,
23473   GVariant *variant,
23474   GError **error,
23475   gpointer user_data)
23476 {
23477   FlashSkeleton *skeleton = FLASH_SKELETON (user_data);
23478   GValue value = G_VALUE_INIT;
23479   GParamSpec *pspec;
23480   _ExtendedGDBusPropertyInfo *info;
23481   gboolean ret;
23482   ret = FALSE;
23483   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_flash_interface_info.parent_struct, property_name);
23484   g_assert (info != NULL);
23485   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
23486   if (pspec == NULL)
23487     {
23488       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
23489     }
23490   else
23491     {
23492       if (info->use_gvariant)
23493         g_value_set_variant (&value, variant);
23494       else
23495         g_dbus_gvariant_to_gvalue (variant, &value);
23496       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
23497       g_value_unset (&value);
23498       ret = TRUE;
23499     }
23500   return ret;
23501 }
23502 
23503 static const GDBusInterfaceVTable _flash_skeleton_vtable =
23504 {
23505   _flash_skeleton_handle_method_call,
23506   _flash_skeleton_handle_get_property,
23507   _flash_skeleton_handle_set_property,
23508   {NULL}
23509 };
23510 
23511 static GDBusInterfaceInfo *
23512 flash_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
23513 {
23514   return flash_interface_info ();
23515 }
23516 
23517 static GDBusInterfaceVTable *
23518 flash_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
23519 {
23520   return (GDBusInterfaceVTable *) &_flash_skeleton_vtable;
23521 }
23522 
23523 static GVariant *
23524 flash_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
23525 {
23526   FlashSkeleton *skeleton = FLASH_SKELETON (_skeleton);
23527 
23528   GVariantBuilder builder;
23529   guint n;
23530   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
23531   if (_flash_interface_info.parent_struct.properties == NULL)
23532     goto out;
23533   for (n = 0; _flash_interface_info.parent_struct.properties[n] != NULL; n++)
23534     {
23535       GDBusPropertyInfo *info = _flash_interface_info.parent_struct.properties[n];
23536       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
23537         {
23538           GVariant *value;
23539           value = _flash_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.openbmc.Flash", info->name, NULL, skeleton);
23540           if (value != NULL)
23541             {
23542               g_variant_take_ref (value);
23543               g_variant_builder_add (&builder, "{sv}", info->name, value);
23544               g_variant_unref (value);
23545             }
23546         }
23547     }
23548 out:
23549   return g_variant_builder_end (&builder);
23550 }
23551 
23552 static gboolean _flash_emit_changed (gpointer user_data);
23553 
23554 static void
23555 flash_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
23556 {
23557   FlashSkeleton *skeleton = FLASH_SKELETON (_skeleton);
23558   gboolean emit_changed = FALSE;
23559 
23560   g_mutex_lock (&skeleton->priv->lock);
23561   if (skeleton->priv->changed_properties_idle_source != NULL)
23562     {
23563       g_source_destroy (skeleton->priv->changed_properties_idle_source);
23564       skeleton->priv->changed_properties_idle_source = NULL;
23565       emit_changed = TRUE;
23566     }
23567   g_mutex_unlock (&skeleton->priv->lock);
23568 
23569   if (emit_changed)
23570     _flash_emit_changed (skeleton);
23571 }
23572 
23573 static void
23574 _flash_on_signal_updated (
23575     Flash *object)
23576 {
23577   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23578 
23579   GList      *connections, *l;
23580   GVariant   *signal_variant;
23581   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
23582 
23583   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
23584   for (l = connections; l != NULL; l = l->next)
23585     {
23586       GDBusConnection *connection = l->data;
23587       g_dbus_connection_emit_signal (connection,
23588         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Flash", "Updated",
23589         signal_variant, NULL);
23590     }
23591   g_variant_unref (signal_variant);
23592   g_list_free_full (connections, g_object_unref);
23593 }
23594 
23595 static void
23596 _flash_on_signal_download (
23597     Flash *object,
23598     const gchar *arg_url,
23599     const gchar *arg_filename)
23600 {
23601   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23602 
23603   GList      *connections, *l;
23604   GVariant   *signal_variant;
23605   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
23606 
23607   signal_variant = g_variant_ref_sink (g_variant_new ("(ss)",
23608                    arg_url,
23609                    arg_filename));
23610   for (l = connections; l != NULL; l = l->next)
23611     {
23612       GDBusConnection *connection = l->data;
23613       g_dbus_connection_emit_signal (connection,
23614         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Flash", "Download",
23615         signal_variant, NULL);
23616     }
23617   g_variant_unref (signal_variant);
23618   g_list_free_full (connections, g_object_unref);
23619 }
23620 
23621 static void flash_skeleton_iface_init (FlashIface *iface);
23622 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
23623 G_DEFINE_TYPE_WITH_CODE (FlashSkeleton, flash_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
23624                          G_ADD_PRIVATE (FlashSkeleton)
23625                          G_IMPLEMENT_INTERFACE (TYPE_FLASH, flash_skeleton_iface_init));
23626 
23627 #else
23628 G_DEFINE_TYPE_WITH_CODE (FlashSkeleton, flash_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
23629                          G_IMPLEMENT_INTERFACE (TYPE_FLASH, flash_skeleton_iface_init));
23630 
23631 #endif
23632 static void
23633 flash_skeleton_finalize (GObject *object)
23634 {
23635   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23636   guint n;
23637   for (n = 0; n < 5; n++)
23638     g_value_unset (&skeleton->priv->properties[n]);
23639   g_free (skeleton->priv->properties);
23640   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
23641   if (skeleton->priv->changed_properties_idle_source != NULL)
23642     g_source_destroy (skeleton->priv->changed_properties_idle_source);
23643   g_main_context_unref (skeleton->priv->context);
23644   g_mutex_clear (&skeleton->priv->lock);
23645   G_OBJECT_CLASS (flash_skeleton_parent_class)->finalize (object);
23646 }
23647 
23648 static void
23649 flash_skeleton_get_property (GObject      *object,
23650   guint         prop_id,
23651   GValue       *value,
23652   GParamSpec   *pspec G_GNUC_UNUSED)
23653 {
23654   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23655   g_assert (prop_id != 0 && prop_id - 1 < 5);
23656   g_mutex_lock (&skeleton->priv->lock);
23657   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
23658   g_mutex_unlock (&skeleton->priv->lock);
23659 }
23660 
23661 static gboolean
23662 _flash_emit_changed (gpointer user_data)
23663 {
23664   FlashSkeleton *skeleton = FLASH_SKELETON (user_data);
23665   GList *l;
23666   GVariantBuilder builder;
23667   GVariantBuilder invalidated_builder;
23668   guint num_changes;
23669 
23670   g_mutex_lock (&skeleton->priv->lock);
23671   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
23672   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
23673   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
23674     {
23675       ChangedProperty *cp = l->data;
23676       GVariant *variant;
23677       const GValue *cur_value;
23678 
23679       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
23680       if (!_g_value_equal (cur_value, &cp->orig_value))
23681         {
23682           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
23683           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
23684           g_variant_unref (variant);
23685           num_changes++;
23686         }
23687     }
23688   if (num_changes > 0)
23689     {
23690       GList *connections, *ll;
23691       GVariant *signal_variant;
23692       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.Flash",
23693                                            &builder, &invalidated_builder));
23694       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
23695       for (ll = connections; ll != NULL; ll = ll->next)
23696         {
23697           GDBusConnection *connection = ll->data;
23698 
23699           g_dbus_connection_emit_signal (connection,
23700                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
23701                                          "org.freedesktop.DBus.Properties",
23702                                          "PropertiesChanged",
23703                                          signal_variant,
23704                                          NULL);
23705         }
23706       g_variant_unref (signal_variant);
23707       g_list_free_full (connections, g_object_unref);
23708     }
23709   else
23710     {
23711       g_variant_builder_clear (&builder);
23712       g_variant_builder_clear (&invalidated_builder);
23713     }
23714   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
23715   skeleton->priv->changed_properties = NULL;
23716   skeleton->priv->changed_properties_idle_source = NULL;
23717   g_mutex_unlock (&skeleton->priv->lock);
23718   return FALSE;
23719 }
23720 
23721 static void
23722 _flash_schedule_emit_changed (FlashSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
23723 {
23724   ChangedProperty *cp;
23725   GList *l;
23726   cp = NULL;
23727   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
23728     {
23729       ChangedProperty *i_cp = l->data;
23730       if (i_cp->info == info)
23731         {
23732           cp = i_cp;
23733           break;
23734         }
23735     }
23736   if (cp == NULL)
23737     {
23738       cp = g_new0 (ChangedProperty, 1);
23739       cp->prop_id = prop_id;
23740       cp->info = info;
23741       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
23742       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
23743       g_value_copy (orig_value, &cp->orig_value);
23744     }
23745 }
23746 
23747 static void
23748 flash_skeleton_notify (GObject      *object,
23749   GParamSpec *pspec G_GNUC_UNUSED)
23750 {
23751   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23752   g_mutex_lock (&skeleton->priv->lock);
23753   if (skeleton->priv->changed_properties != NULL &&
23754       skeleton->priv->changed_properties_idle_source == NULL)
23755     {
23756       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
23757       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
23758       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _flash_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
23759       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
23760       g_source_unref (skeleton->priv->changed_properties_idle_source);
23761     }
23762   g_mutex_unlock (&skeleton->priv->lock);
23763 }
23764 
23765 static void
23766 flash_skeleton_set_property (GObject      *object,
23767   guint         prop_id,
23768   const GValue *value,
23769   GParamSpec   *pspec)
23770 {
23771   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23772   g_assert (prop_id != 0 && prop_id - 1 < 5);
23773   g_mutex_lock (&skeleton->priv->lock);
23774   g_object_freeze_notify (object);
23775   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
23776     {
23777       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
23778         _flash_schedule_emit_changed (skeleton, _flash_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
23779       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
23780       g_object_notify_by_pspec (object, pspec);
23781     }
23782   g_mutex_unlock (&skeleton->priv->lock);
23783   g_object_thaw_notify (object);
23784 }
23785 
23786 static void
23787 flash_skeleton_init (FlashSkeleton *skeleton)
23788 {
23789 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
23790   skeleton->priv = flash_skeleton_get_instance_private (skeleton);
23791 #else
23792   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_FLASH_SKELETON, FlashSkeletonPrivate);
23793 #endif
23794 
23795   g_mutex_init (&skeleton->priv->lock);
23796   skeleton->priv->context = g_main_context_ref_thread_default ();
23797   skeleton->priv->properties = g_new0 (GValue, 5);
23798   g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING);
23799   g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING);
23800   g_value_init (&skeleton->priv->properties[2], G_TYPE_STRING);
23801   g_value_init (&skeleton->priv->properties[3], G_TYPE_STRING);
23802   g_value_init (&skeleton->priv->properties[4], G_TYPE_STRING);
23803 }
23804 
23805 static const gchar *
23806 flash_skeleton_get_filename (Flash *object)
23807 {
23808   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23809   const gchar *value;
23810   g_mutex_lock (&skeleton->priv->lock);
23811   value = g_value_get_string (&(skeleton->priv->properties[0]));
23812   g_mutex_unlock (&skeleton->priv->lock);
23813   return value;
23814 }
23815 
23816 static const gchar *
23817 flash_skeleton_get_flasher_path (Flash *object)
23818 {
23819   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23820   const gchar *value;
23821   g_mutex_lock (&skeleton->priv->lock);
23822   value = g_value_get_string (&(skeleton->priv->properties[1]));
23823   g_mutex_unlock (&skeleton->priv->lock);
23824   return value;
23825 }
23826 
23827 static const gchar *
23828 flash_skeleton_get_flasher_name (Flash *object)
23829 {
23830   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23831   const gchar *value;
23832   g_mutex_lock (&skeleton->priv->lock);
23833   value = g_value_get_string (&(skeleton->priv->properties[2]));
23834   g_mutex_unlock (&skeleton->priv->lock);
23835   return value;
23836 }
23837 
23838 static const gchar *
23839 flash_skeleton_get_flasher_instance (Flash *object)
23840 {
23841   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23842   const gchar *value;
23843   g_mutex_lock (&skeleton->priv->lock);
23844   value = g_value_get_string (&(skeleton->priv->properties[3]));
23845   g_mutex_unlock (&skeleton->priv->lock);
23846   return value;
23847 }
23848 
23849 static const gchar *
23850 flash_skeleton_get_status (Flash *object)
23851 {
23852   FlashSkeleton *skeleton = FLASH_SKELETON (object);
23853   const gchar *value;
23854   g_mutex_lock (&skeleton->priv->lock);
23855   value = g_value_get_string (&(skeleton->priv->properties[4]));
23856   g_mutex_unlock (&skeleton->priv->lock);
23857   return value;
23858 }
23859 
23860 static void
23861 flash_skeleton_class_init (FlashSkeletonClass *klass)
23862 {
23863   GObjectClass *gobject_class;
23864   GDBusInterfaceSkeletonClass *skeleton_class;
23865 
23866   gobject_class = G_OBJECT_CLASS (klass);
23867   gobject_class->finalize = flash_skeleton_finalize;
23868   gobject_class->get_property = flash_skeleton_get_property;
23869   gobject_class->set_property = flash_skeleton_set_property;
23870   gobject_class->notify       = flash_skeleton_notify;
23871 
23872 
23873   flash_override_properties (gobject_class, 1);
23874 
23875   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
23876   skeleton_class->get_info = flash_skeleton_dbus_interface_get_info;
23877   skeleton_class->get_properties = flash_skeleton_dbus_interface_get_properties;
23878   skeleton_class->flush = flash_skeleton_dbus_interface_flush;
23879   skeleton_class->get_vtable = flash_skeleton_dbus_interface_get_vtable;
23880 
23881 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
23882   g_type_class_add_private (klass, sizeof (FlashSkeletonPrivate));
23883 #endif
23884 }
23885 
23886 static void
23887 flash_skeleton_iface_init (FlashIface *iface)
23888 {
23889   iface->updated = _flash_on_signal_updated;
23890   iface->download = _flash_on_signal_download;
23891   iface->get_filename = flash_skeleton_get_filename;
23892   iface->get_flasher_path = flash_skeleton_get_flasher_path;
23893   iface->get_flasher_name = flash_skeleton_get_flasher_name;
23894   iface->get_flasher_instance = flash_skeleton_get_flasher_instance;
23895   iface->get_status = flash_skeleton_get_status;
23896 }
23897 
23898 /**
23899  * flash_skeleton_new:
23900  *
23901  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Flash.top_of_page">org.openbmc.Flash</link>.
23902  *
23903  * Returns: (transfer full) (type FlashSkeleton): The skeleton object.
23904  */
23905 Flash *
23906 flash_skeleton_new (void)
23907 {
23908   return FLASH (g_object_new (TYPE_FLASH_SKELETON, NULL));
23909 }
23910 
23911 /* ------------------------------------------------------------------------
23912  * Code for interface org.openbmc.FlashControl
23913  * ------------------------------------------------------------------------
23914  */
23915 
23916 /**
23917  * SECTION:FlashControl
23918  * @title: FlashControl
23919  * @short_description: Generated C code for the org.openbmc.FlashControl D-Bus interface
23920  *
23921  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-FlashControl.top_of_page">org.openbmc.FlashControl</link> D-Bus interface in C.
23922  */
23923 
23924 /* ---- Introspection data for org.openbmc.FlashControl ---- */
23925 
23926 static const _ExtendedGDBusArgInfo _flash_control_method_info_flash_IN_ARG_type =
23927 {
23928   {
23929     -1,
23930     (gchar *) "type",
23931     (gchar *) "s",
23932     NULL
23933   },
23934   FALSE
23935 };
23936 
23937 static const _ExtendedGDBusArgInfo _flash_control_method_info_flash_IN_ARG_filename =
23938 {
23939   {
23940     -1,
23941     (gchar *) "filename",
23942     (gchar *) "s",
23943     NULL
23944   },
23945   FALSE
23946 };
23947 
23948 static const _ExtendedGDBusArgInfo * const _flash_control_method_info_flash_IN_ARG_pointers[] =
23949 {
23950   &_flash_control_method_info_flash_IN_ARG_type,
23951   &_flash_control_method_info_flash_IN_ARG_filename,
23952   NULL
23953 };
23954 
23955 static const _ExtendedGDBusMethodInfo _flash_control_method_info_flash =
23956 {
23957   {
23958     -1,
23959     (gchar *) "flash",
23960     (GDBusArgInfo **) &_flash_control_method_info_flash_IN_ARG_pointers,
23961     NULL,
23962     NULL
23963   },
23964   "handle-flash",
23965   FALSE
23966 };
23967 
23968 static const _ExtendedGDBusMethodInfo * const _flash_control_method_info_pointers[] =
23969 {
23970   &_flash_control_method_info_flash,
23971   NULL
23972 };
23973 
23974 static const _ExtendedGDBusArgInfo _flash_control_signal_info_done_ARG_filename =
23975 {
23976   {
23977     -1,
23978     (gchar *) "filename",
23979     (gchar *) "s",
23980     NULL
23981   },
23982   FALSE
23983 };
23984 
23985 static const _ExtendedGDBusArgInfo * const _flash_control_signal_info_done_ARG_pointers[] =
23986 {
23987   &_flash_control_signal_info_done_ARG_filename,
23988   NULL
23989 };
23990 
23991 static const _ExtendedGDBusSignalInfo _flash_control_signal_info_done =
23992 {
23993   {
23994     -1,
23995     (gchar *) "Done",
23996     (GDBusArgInfo **) &_flash_control_signal_info_done_ARG_pointers,
23997     NULL
23998   },
23999   "done"
24000 };
24001 
24002 static const _ExtendedGDBusArgInfo _flash_control_signal_info_error_ARG_filename =
24003 {
24004   {
24005     -1,
24006     (gchar *) "filename",
24007     (gchar *) "s",
24008     NULL
24009   },
24010   FALSE
24011 };
24012 
24013 static const _ExtendedGDBusArgInfo * const _flash_control_signal_info_error_ARG_pointers[] =
24014 {
24015   &_flash_control_signal_info_error_ARG_filename,
24016   NULL
24017 };
24018 
24019 static const _ExtendedGDBusSignalInfo _flash_control_signal_info_error =
24020 {
24021   {
24022     -1,
24023     (gchar *) "Error",
24024     (GDBusArgInfo **) &_flash_control_signal_info_error_ARG_pointers,
24025     NULL
24026   },
24027   "error"
24028 };
24029 
24030 static const _ExtendedGDBusArgInfo _flash_control_signal_info_progress_ARG_filename =
24031 {
24032   {
24033     -1,
24034     (gchar *) "filename",
24035     (gchar *) "s",
24036     NULL
24037   },
24038   FALSE
24039 };
24040 
24041 static const _ExtendedGDBusArgInfo _flash_control_signal_info_progress_ARG_progress =
24042 {
24043   {
24044     -1,
24045     (gchar *) "progress",
24046     (gchar *) "y",
24047     NULL
24048   },
24049   FALSE
24050 };
24051 
24052 static const _ExtendedGDBusArgInfo * const _flash_control_signal_info_progress_ARG_pointers[] =
24053 {
24054   &_flash_control_signal_info_progress_ARG_filename,
24055   &_flash_control_signal_info_progress_ARG_progress,
24056   NULL
24057 };
24058 
24059 static const _ExtendedGDBusSignalInfo _flash_control_signal_info_progress =
24060 {
24061   {
24062     -1,
24063     (gchar *) "Progress",
24064     (GDBusArgInfo **) &_flash_control_signal_info_progress_ARG_pointers,
24065     NULL
24066   },
24067   "progress"
24068 };
24069 
24070 static const _ExtendedGDBusSignalInfo * const _flash_control_signal_info_pointers[] =
24071 {
24072   &_flash_control_signal_info_done,
24073   &_flash_control_signal_info_error,
24074   &_flash_control_signal_info_progress,
24075   NULL
24076 };
24077 
24078 static const _ExtendedGDBusPropertyInfo _flash_control_property_info_filename =
24079 {
24080   {
24081     -1,
24082     (gchar *) "filename",
24083     (gchar *) "s",
24084     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
24085     NULL
24086   },
24087   "filename",
24088   FALSE
24089 };
24090 
24091 static const _ExtendedGDBusPropertyInfo _flash_control_property_info_type_ =
24092 {
24093   {
24094     -1,
24095     (gchar *) "type",
24096     (gchar *) "s",
24097     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
24098     NULL
24099   },
24100   "type",
24101   FALSE
24102 };
24103 
24104 static const _ExtendedGDBusPropertyInfo * const _flash_control_property_info_pointers[] =
24105 {
24106   &_flash_control_property_info_filename,
24107   &_flash_control_property_info_type_,
24108   NULL
24109 };
24110 
24111 static const _ExtendedGDBusInterfaceInfo _flash_control_interface_info =
24112 {
24113   {
24114     -1,
24115     (gchar *) "org.openbmc.FlashControl",
24116     (GDBusMethodInfo **) &_flash_control_method_info_pointers,
24117     (GDBusSignalInfo **) &_flash_control_signal_info_pointers,
24118     (GDBusPropertyInfo **) &_flash_control_property_info_pointers,
24119     NULL
24120   },
24121   "flash-control",
24122 };
24123 
24124 
24125 /**
24126  * flash_control_interface_info:
24127  *
24128  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-FlashControl.top_of_page">org.openbmc.FlashControl</link> D-Bus interface.
24129  *
24130  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
24131  */
24132 GDBusInterfaceInfo *
24133 flash_control_interface_info (void)
24134 {
24135   return (GDBusInterfaceInfo *) &_flash_control_interface_info.parent_struct;
24136 }
24137 
24138 /**
24139  * flash_control_override_properties:
24140  * @klass: The class structure for a #GObject<!-- -->-derived class.
24141  * @property_id_begin: The property id to assign to the first overridden property.
24142  *
24143  * Overrides all #GObject properties in the #FlashControl interface for a concrete class.
24144  * The properties are overridden in the order they are defined.
24145  *
24146  * Returns: The last property id.
24147  */
24148 guint
24149 flash_control_override_properties (GObjectClass *klass, guint property_id_begin)
24150 {
24151   g_object_class_override_property (klass, property_id_begin++, "filename");
24152   g_object_class_override_property (klass, property_id_begin++, "type");
24153   return property_id_begin - 1;
24154 }
24155 
24156 
24157 
24158 /**
24159  * FlashControl:
24160  *
24161  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-FlashControl.top_of_page">org.openbmc.FlashControl</link>.
24162  */
24163 
24164 /**
24165  * FlashControlIface:
24166  * @parent_iface: The parent interface.
24167  * @handle_flash: Handler for the #FlashControl::handle-flash signal.
24168  * @get_filename: Getter for the #FlashControl:filename property.
24169  * @get_type_: Getter for the #FlashControl:type property.
24170  * @done: Handler for the #FlashControl::done signal.
24171  * @error: Handler for the #FlashControl::error signal.
24172  * @progress: Handler for the #FlashControl::progress signal.
24173  *
24174  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-FlashControl.top_of_page">org.openbmc.FlashControl</link>.
24175  */
24176 
24177 typedef FlashControlIface FlashControlInterface;
24178 G_DEFINE_INTERFACE (FlashControl, flash_control, G_TYPE_OBJECT);
24179 
24180 static void
24181 flash_control_default_init (FlashControlIface *iface)
24182 {
24183   /* GObject signals for incoming D-Bus method calls: */
24184   /**
24185    * FlashControl::handle-flash:
24186    * @object: A #FlashControl.
24187    * @invocation: A #GDBusMethodInvocation.
24188    * @arg_type: Argument passed by remote caller.
24189    * @arg_filename: Argument passed by remote caller.
24190    *
24191    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-FlashControl.flash">flash()</link> D-Bus method.
24192    *
24193    * 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 flash_control_complete_flash() 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.
24194    *
24195    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
24196    */
24197   g_signal_new ("handle-flash",
24198     G_TYPE_FROM_INTERFACE (iface),
24199     G_SIGNAL_RUN_LAST,
24200     G_STRUCT_OFFSET (FlashControlIface, handle_flash),
24201     g_signal_accumulator_true_handled,
24202     NULL,
24203     g_cclosure_marshal_generic,
24204     G_TYPE_BOOLEAN,
24205     3,
24206     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING);
24207 
24208   /* GObject signals for received D-Bus signals: */
24209   /**
24210    * FlashControl::done:
24211    * @object: A #FlashControl.
24212    * @arg_filename: Argument.
24213    *
24214    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-FlashControl.Done">"Done"</link> is received.
24215    *
24216    * 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.
24217    */
24218   g_signal_new ("done",
24219     G_TYPE_FROM_INTERFACE (iface),
24220     G_SIGNAL_RUN_LAST,
24221     G_STRUCT_OFFSET (FlashControlIface, done),
24222     NULL,
24223     NULL,
24224     g_cclosure_marshal_generic,
24225     G_TYPE_NONE,
24226     1, G_TYPE_STRING);
24227 
24228   /**
24229    * FlashControl::error:
24230    * @object: A #FlashControl.
24231    * @arg_filename: Argument.
24232    *
24233    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-FlashControl.Error">"Error"</link> is received.
24234    *
24235    * 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.
24236    */
24237   g_signal_new ("error",
24238     G_TYPE_FROM_INTERFACE (iface),
24239     G_SIGNAL_RUN_LAST,
24240     G_STRUCT_OFFSET (FlashControlIface, error),
24241     NULL,
24242     NULL,
24243     g_cclosure_marshal_generic,
24244     G_TYPE_NONE,
24245     1, G_TYPE_STRING);
24246 
24247   /**
24248    * FlashControl::progress:
24249    * @object: A #FlashControl.
24250    * @arg_filename: Argument.
24251    * @arg_progress: Argument.
24252    *
24253    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-FlashControl.Progress">"Progress"</link> is received.
24254    *
24255    * 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.
24256    */
24257   g_signal_new ("progress",
24258     G_TYPE_FROM_INTERFACE (iface),
24259     G_SIGNAL_RUN_LAST,
24260     G_STRUCT_OFFSET (FlashControlIface, progress),
24261     NULL,
24262     NULL,
24263     g_cclosure_marshal_generic,
24264     G_TYPE_NONE,
24265     2, G_TYPE_STRING, G_TYPE_UCHAR);
24266 
24267   /* GObject properties for D-Bus properties: */
24268   /**
24269    * FlashControl:filename:
24270    *
24271    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-FlashControl.filename">"filename"</link>.
24272    *
24273    * 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.
24274    */
24275   g_object_interface_install_property (iface,
24276     g_param_spec_string ("filename", "filename", "filename", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
24277   /**
24278    * FlashControl:type:
24279    *
24280    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-FlashControl.type">"type"</link>.
24281    *
24282    * 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.
24283    */
24284   g_object_interface_install_property (iface,
24285     g_param_spec_string ("type", "type", "type", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
24286 }
24287 
24288 /**
24289  * flash_control_get_filename: (skip)
24290  * @object: A #FlashControl.
24291  *
24292  * Gets the value of the <link linkend="gdbus-property-org-openbmc-FlashControl.filename">"filename"</link> D-Bus property.
24293  *
24294  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
24295  *
24296  * <warning>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 flash_control_dup_filename() if on another thread.</warning>
24297  *
24298  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
24299  */
24300 const gchar *
24301 flash_control_get_filename (FlashControl *object)
24302 {
24303   return FLASH_CONTROL_GET_IFACE (object)->get_filename (object);
24304 }
24305 
24306 /**
24307  * flash_control_dup_filename: (skip)
24308  * @object: A #FlashControl.
24309  *
24310  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-FlashControl.filename">"filename"</link> D-Bus property.
24311  *
24312  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
24313  *
24314  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
24315  */
24316 gchar *
24317 flash_control_dup_filename (FlashControl *object)
24318 {
24319   gchar *value;
24320   g_object_get (G_OBJECT (object), "filename", &value, NULL);
24321   return value;
24322 }
24323 
24324 /**
24325  * flash_control_set_filename: (skip)
24326  * @object: A #FlashControl.
24327  * @value: The value to set.
24328  *
24329  * Sets the <link linkend="gdbus-property-org-openbmc-FlashControl.filename">"filename"</link> D-Bus property to @value.
24330  *
24331  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
24332  */
24333 void
24334 flash_control_set_filename (FlashControl *object, const gchar *value)
24335 {
24336   g_object_set (G_OBJECT (object), "filename", value, NULL);
24337 }
24338 
24339 /**
24340  * flash_control_get_type_: (skip)
24341  * @object: A #FlashControl.
24342  *
24343  * Gets the value of the <link linkend="gdbus-property-org-openbmc-FlashControl.type">"type"</link> D-Bus property.
24344  *
24345  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
24346  *
24347  * <warning>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 flash_control_dup_type_() if on another thread.</warning>
24348  *
24349  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
24350  */
24351 const gchar *
24352 flash_control_get_type_ (FlashControl *object)
24353 {
24354   return FLASH_CONTROL_GET_IFACE (object)->get_type_ (object);
24355 }
24356 
24357 /**
24358  * flash_control_dup_type_: (skip)
24359  * @object: A #FlashControl.
24360  *
24361  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-FlashControl.type">"type"</link> D-Bus property.
24362  *
24363  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
24364  *
24365  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
24366  */
24367 gchar *
24368 flash_control_dup_type_ (FlashControl *object)
24369 {
24370   gchar *value;
24371   g_object_get (G_OBJECT (object), "type", &value, NULL);
24372   return value;
24373 }
24374 
24375 /**
24376  * flash_control_set_type_: (skip)
24377  * @object: A #FlashControl.
24378  * @value: The value to set.
24379  *
24380  * Sets the <link linkend="gdbus-property-org-openbmc-FlashControl.type">"type"</link> D-Bus property to @value.
24381  *
24382  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
24383  */
24384 void
24385 flash_control_set_type_ (FlashControl *object, const gchar *value)
24386 {
24387   g_object_set (G_OBJECT (object), "type", value, NULL);
24388 }
24389 
24390 /**
24391  * flash_control_emit_done:
24392  * @object: A #FlashControl.
24393  * @arg_filename: Argument to pass with the signal.
24394  *
24395  * Emits the <link linkend="gdbus-signal-org-openbmc-FlashControl.Done">"Done"</link> D-Bus signal.
24396  */
24397 void
24398 flash_control_emit_done (
24399     FlashControl *object,
24400     const gchar *arg_filename)
24401 {
24402   g_signal_emit_by_name (object, "done", arg_filename);
24403 }
24404 
24405 /**
24406  * flash_control_emit_error:
24407  * @object: A #FlashControl.
24408  * @arg_filename: Argument to pass with the signal.
24409  *
24410  * Emits the <link linkend="gdbus-signal-org-openbmc-FlashControl.Error">"Error"</link> D-Bus signal.
24411  */
24412 void
24413 flash_control_emit_error (
24414     FlashControl *object,
24415     const gchar *arg_filename)
24416 {
24417   g_signal_emit_by_name (object, "error", arg_filename);
24418 }
24419 
24420 /**
24421  * flash_control_emit_progress:
24422  * @object: A #FlashControl.
24423  * @arg_filename: Argument to pass with the signal.
24424  * @arg_progress: Argument to pass with the signal.
24425  *
24426  * Emits the <link linkend="gdbus-signal-org-openbmc-FlashControl.Progress">"Progress"</link> D-Bus signal.
24427  */
24428 void
24429 flash_control_emit_progress (
24430     FlashControl *object,
24431     const gchar *arg_filename,
24432     guchar arg_progress)
24433 {
24434   g_signal_emit_by_name (object, "progress", arg_filename, arg_progress);
24435 }
24436 
24437 /**
24438  * flash_control_call_flash:
24439  * @proxy: A #FlashControlProxy.
24440  * @arg_type: Argument to pass with the method invocation.
24441  * @arg_filename: Argument to pass with the method invocation.
24442  * @cancellable: (allow-none): A #GCancellable or %NULL.
24443  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
24444  * @user_data: User data to pass to @callback.
24445  *
24446  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-FlashControl.flash">flash()</link> D-Bus method on @proxy.
24447  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
24448  * You can then call flash_control_call_flash_finish() to get the result of the operation.
24449  *
24450  * See flash_control_call_flash_sync() for the synchronous, blocking version of this method.
24451  */
24452 void
24453 flash_control_call_flash (
24454     FlashControl *proxy,
24455     const gchar *arg_type,
24456     const gchar *arg_filename,
24457     GCancellable *cancellable,
24458     GAsyncReadyCallback callback,
24459     gpointer user_data)
24460 {
24461   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
24462     "flash",
24463     g_variant_new ("(ss)",
24464                    arg_type,
24465                    arg_filename),
24466     G_DBUS_CALL_FLAGS_NONE,
24467     -1,
24468     cancellable,
24469     callback,
24470     user_data);
24471 }
24472 
24473 /**
24474  * flash_control_call_flash_finish:
24475  * @proxy: A #FlashControlProxy.
24476  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to flash_control_call_flash().
24477  * @error: Return location for error or %NULL.
24478  *
24479  * Finishes an operation started with flash_control_call_flash().
24480  *
24481  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
24482  */
24483 gboolean
24484 flash_control_call_flash_finish (
24485     FlashControl *proxy,
24486     GAsyncResult *res,
24487     GError **error)
24488 {
24489   GVariant *_ret;
24490   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
24491   if (_ret == NULL)
24492     goto _out;
24493   g_variant_get (_ret,
24494                  "()");
24495   g_variant_unref (_ret);
24496 _out:
24497   return _ret != NULL;
24498 }
24499 
24500 /**
24501  * flash_control_call_flash_sync:
24502  * @proxy: A #FlashControlProxy.
24503  * @arg_type: Argument to pass with the method invocation.
24504  * @arg_filename: Argument to pass with the method invocation.
24505  * @cancellable: (allow-none): A #GCancellable or %NULL.
24506  * @error: Return location for error or %NULL.
24507  *
24508  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-FlashControl.flash">flash()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
24509  *
24510  * See flash_control_call_flash() for the asynchronous version of this method.
24511  *
24512  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
24513  */
24514 gboolean
24515 flash_control_call_flash_sync (
24516     FlashControl *proxy,
24517     const gchar *arg_type,
24518     const gchar *arg_filename,
24519     GCancellable *cancellable,
24520     GError **error)
24521 {
24522   GVariant *_ret;
24523   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
24524     "flash",
24525     g_variant_new ("(ss)",
24526                    arg_type,
24527                    arg_filename),
24528     G_DBUS_CALL_FLAGS_NONE,
24529     -1,
24530     cancellable,
24531     error);
24532   if (_ret == NULL)
24533     goto _out;
24534   g_variant_get (_ret,
24535                  "()");
24536   g_variant_unref (_ret);
24537 _out:
24538   return _ret != NULL;
24539 }
24540 
24541 /**
24542  * flash_control_complete_flash:
24543  * @object: A #FlashControl.
24544  * @invocation: (transfer full): A #GDBusMethodInvocation.
24545  *
24546  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-FlashControl.flash">flash()</link> 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.
24547  *
24548  * This method will free @invocation, you cannot use it afterwards.
24549  */
24550 void
24551 flash_control_complete_flash (
24552     FlashControl *object,
24553     GDBusMethodInvocation *invocation)
24554 {
24555   g_dbus_method_invocation_return_value (invocation,
24556     g_variant_new ("()"));
24557 }
24558 
24559 /* ------------------------------------------------------------------------ */
24560 
24561 /**
24562  * FlashControlProxy:
24563  *
24564  * The #FlashControlProxy structure contains only private data and should only be accessed using the provided API.
24565  */
24566 
24567 /**
24568  * FlashControlProxyClass:
24569  * @parent_class: The parent class.
24570  *
24571  * Class structure for #FlashControlProxy.
24572  */
24573 
24574 struct _FlashControlProxyPrivate
24575 {
24576   GData *qdata;
24577 };
24578 
24579 static void flash_control_proxy_iface_init (FlashControlIface *iface);
24580 
24581 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
24582 G_DEFINE_TYPE_WITH_CODE (FlashControlProxy, flash_control_proxy, G_TYPE_DBUS_PROXY,
24583                          G_ADD_PRIVATE (FlashControlProxy)
24584                          G_IMPLEMENT_INTERFACE (TYPE_FLASH_CONTROL, flash_control_proxy_iface_init));
24585 
24586 #else
24587 G_DEFINE_TYPE_WITH_CODE (FlashControlProxy, flash_control_proxy, G_TYPE_DBUS_PROXY,
24588                          G_IMPLEMENT_INTERFACE (TYPE_FLASH_CONTROL, flash_control_proxy_iface_init));
24589 
24590 #endif
24591 static void
24592 flash_control_proxy_finalize (GObject *object)
24593 {
24594   FlashControlProxy *proxy = FLASH_CONTROL_PROXY (object);
24595   g_datalist_clear (&proxy->priv->qdata);
24596   G_OBJECT_CLASS (flash_control_proxy_parent_class)->finalize (object);
24597 }
24598 
24599 static void
24600 flash_control_proxy_get_property (GObject      *object,
24601   guint         prop_id,
24602   GValue       *value,
24603   GParamSpec   *pspec G_GNUC_UNUSED)
24604 {
24605   const _ExtendedGDBusPropertyInfo *info;
24606   GVariant *variant;
24607   g_assert (prop_id != 0 && prop_id - 1 < 2);
24608   info = _flash_control_property_info_pointers[prop_id - 1];
24609   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
24610   if (info->use_gvariant)
24611     {
24612       g_value_set_variant (value, variant);
24613     }
24614   else
24615     {
24616       if (variant != NULL)
24617         g_dbus_gvariant_to_gvalue (variant, value);
24618     }
24619   if (variant != NULL)
24620     g_variant_unref (variant);
24621 }
24622 
24623 static void
24624 flash_control_proxy_set_property_cb (GDBusProxy *proxy,
24625   GAsyncResult *res,
24626   gpointer      user_data)
24627 {
24628   const _ExtendedGDBusPropertyInfo *info = user_data;
24629   GError *error;
24630   GVariant *_ret;
24631   error = NULL;
24632   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
24633   if (!_ret)
24634     {
24635       g_warning ("Error setting property '%s' on interface org.openbmc.FlashControl: %s (%s, %d)",
24636                  info->parent_struct.name,
24637                  error->message, g_quark_to_string (error->domain), error->code);
24638       g_error_free (error);
24639     }
24640   else
24641     {
24642       g_variant_unref (_ret);
24643     }
24644 }
24645 
24646 static void
24647 flash_control_proxy_set_property (GObject      *object,
24648   guint         prop_id,
24649   const GValue *value,
24650   GParamSpec   *pspec G_GNUC_UNUSED)
24651 {
24652   const _ExtendedGDBusPropertyInfo *info;
24653   GVariant *variant;
24654   g_assert (prop_id != 0 && prop_id - 1 < 2);
24655   info = _flash_control_property_info_pointers[prop_id - 1];
24656   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
24657   g_dbus_proxy_call (G_DBUS_PROXY (object),
24658     "org.freedesktop.DBus.Properties.Set",
24659     g_variant_new ("(ssv)", "org.openbmc.FlashControl", info->parent_struct.name, variant),
24660     G_DBUS_CALL_FLAGS_NONE,
24661     -1,
24662     NULL, (GAsyncReadyCallback) flash_control_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
24663   g_variant_unref (variant);
24664 }
24665 
24666 static void
24667 flash_control_proxy_g_signal (GDBusProxy *proxy,
24668   const gchar *sender_name G_GNUC_UNUSED,
24669   const gchar *signal_name,
24670   GVariant *parameters)
24671 {
24672   _ExtendedGDBusSignalInfo *info;
24673   GVariantIter iter;
24674   GVariant *child;
24675   GValue *paramv;
24676   guint num_params;
24677   guint n;
24678   guint signal_id;
24679   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_flash_control_interface_info.parent_struct, signal_name);
24680   if (info == NULL)
24681     return;
24682   num_params = g_variant_n_children (parameters);
24683   paramv = g_new0 (GValue, num_params + 1);
24684   g_value_init (&paramv[0], TYPE_FLASH_CONTROL);
24685   g_value_set_object (&paramv[0], proxy);
24686   g_variant_iter_init (&iter, parameters);
24687   n = 1;
24688   while ((child = g_variant_iter_next_value (&iter)) != NULL)
24689     {
24690       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
24691       if (arg_info->use_gvariant)
24692         {
24693           g_value_init (&paramv[n], G_TYPE_VARIANT);
24694           g_value_set_variant (&paramv[n], child);
24695           n++;
24696         }
24697       else
24698         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
24699       g_variant_unref (child);
24700     }
24701   signal_id = g_signal_lookup (info->signal_name, TYPE_FLASH_CONTROL);
24702   g_signal_emitv (paramv, signal_id, 0, NULL);
24703   for (n = 0; n < num_params + 1; n++)
24704     g_value_unset (&paramv[n]);
24705   g_free (paramv);
24706 }
24707 
24708 static void
24709 flash_control_proxy_g_properties_changed (GDBusProxy *_proxy,
24710   GVariant *changed_properties,
24711   const gchar *const *invalidated_properties)
24712 {
24713   FlashControlProxy *proxy = FLASH_CONTROL_PROXY (_proxy);
24714   guint n;
24715   const gchar *key;
24716   GVariantIter *iter;
24717   _ExtendedGDBusPropertyInfo *info;
24718   g_variant_get (changed_properties, "a{sv}", &iter);
24719   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
24720     {
24721       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_flash_control_interface_info.parent_struct, key);
24722       g_datalist_remove_data (&proxy->priv->qdata, key);
24723       if (info != NULL)
24724         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
24725     }
24726   g_variant_iter_free (iter);
24727   for (n = 0; invalidated_properties[n] != NULL; n++)
24728     {
24729       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_flash_control_interface_info.parent_struct, invalidated_properties[n]);
24730       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
24731       if (info != NULL)
24732         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
24733     }
24734 }
24735 
24736 static const gchar *
24737 flash_control_proxy_get_filename (FlashControl *object)
24738 {
24739   FlashControlProxy *proxy = FLASH_CONTROL_PROXY (object);
24740   GVariant *variant;
24741   const gchar *value = NULL;
24742   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "filename");
24743   if (variant != NULL)
24744     {
24745       value = g_variant_get_string (variant, NULL);
24746       g_variant_unref (variant);
24747     }
24748   return value;
24749 }
24750 
24751 static const gchar *
24752 flash_control_proxy_get_type_ (FlashControl *object)
24753 {
24754   FlashControlProxy *proxy = FLASH_CONTROL_PROXY (object);
24755   GVariant *variant;
24756   const gchar *value = NULL;
24757   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "type");
24758   if (variant != NULL)
24759     {
24760       value = g_variant_get_string (variant, NULL);
24761       g_variant_unref (variant);
24762     }
24763   return value;
24764 }
24765 
24766 static void
24767 flash_control_proxy_init (FlashControlProxy *proxy)
24768 {
24769 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
24770   proxy->priv = flash_control_proxy_get_instance_private (proxy);
24771 #else
24772   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_FLASH_CONTROL_PROXY, FlashControlProxyPrivate);
24773 #endif
24774 
24775   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), flash_control_interface_info ());
24776 }
24777 
24778 static void
24779 flash_control_proxy_class_init (FlashControlProxyClass *klass)
24780 {
24781   GObjectClass *gobject_class;
24782   GDBusProxyClass *proxy_class;
24783 
24784   gobject_class = G_OBJECT_CLASS (klass);
24785   gobject_class->finalize     = flash_control_proxy_finalize;
24786   gobject_class->get_property = flash_control_proxy_get_property;
24787   gobject_class->set_property = flash_control_proxy_set_property;
24788 
24789   proxy_class = G_DBUS_PROXY_CLASS (klass);
24790   proxy_class->g_signal = flash_control_proxy_g_signal;
24791   proxy_class->g_properties_changed = flash_control_proxy_g_properties_changed;
24792 
24793   flash_control_override_properties (gobject_class, 1);
24794 
24795 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
24796   g_type_class_add_private (klass, sizeof (FlashControlProxyPrivate));
24797 #endif
24798 }
24799 
24800 static void
24801 flash_control_proxy_iface_init (FlashControlIface *iface)
24802 {
24803   iface->get_filename = flash_control_proxy_get_filename;
24804   iface->get_type_ = flash_control_proxy_get_type_;
24805 }
24806 
24807 /**
24808  * flash_control_proxy_new:
24809  * @connection: A #GDBusConnection.
24810  * @flags: Flags from the #GDBusProxyFlags enumeration.
24811  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
24812  * @object_path: An object path.
24813  * @cancellable: (allow-none): A #GCancellable or %NULL.
24814  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
24815  * @user_data: User data to pass to @callback.
24816  *
24817  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-FlashControl.top_of_page">org.openbmc.FlashControl</link>. See g_dbus_proxy_new() for more details.
24818  *
24819  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
24820  * You can then call flash_control_proxy_new_finish() to get the result of the operation.
24821  *
24822  * See flash_control_proxy_new_sync() for the synchronous, blocking version of this constructor.
24823  */
24824 void
24825 flash_control_proxy_new (
24826     GDBusConnection     *connection,
24827     GDBusProxyFlags      flags,
24828     const gchar         *name,
24829     const gchar         *object_path,
24830     GCancellable        *cancellable,
24831     GAsyncReadyCallback  callback,
24832     gpointer             user_data)
24833 {
24834   g_async_initable_new_async (TYPE_FLASH_CONTROL_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.openbmc.FlashControl", NULL);
24835 }
24836 
24837 /**
24838  * flash_control_proxy_new_finish:
24839  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to flash_control_proxy_new().
24840  * @error: Return location for error or %NULL
24841  *
24842  * Finishes an operation started with flash_control_proxy_new().
24843  *
24844  * Returns: (transfer full) (type FlashControlProxy): The constructed proxy object or %NULL if @error is set.
24845  */
24846 FlashControl *
24847 flash_control_proxy_new_finish (
24848     GAsyncResult        *res,
24849     GError             **error)
24850 {
24851   GObject *ret;
24852   GObject *source_object;
24853   source_object = g_async_result_get_source_object (res);
24854   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
24855   g_object_unref (source_object);
24856   if (ret != NULL)
24857     return FLASH_CONTROL (ret);
24858   else
24859     return NULL;
24860 }
24861 
24862 /**
24863  * flash_control_proxy_new_sync:
24864  * @connection: A #GDBusConnection.
24865  * @flags: Flags from the #GDBusProxyFlags enumeration.
24866  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
24867  * @object_path: An object path.
24868  * @cancellable: (allow-none): A #GCancellable or %NULL.
24869  * @error: Return location for error or %NULL
24870  *
24871  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-FlashControl.top_of_page">org.openbmc.FlashControl</link>. See g_dbus_proxy_new_sync() for more details.
24872  *
24873  * The calling thread is blocked until a reply is received.
24874  *
24875  * See flash_control_proxy_new() for the asynchronous version of this constructor.
24876  *
24877  * Returns: (transfer full) (type FlashControlProxy): The constructed proxy object or %NULL if @error is set.
24878  */
24879 FlashControl *
24880 flash_control_proxy_new_sync (
24881     GDBusConnection     *connection,
24882     GDBusProxyFlags      flags,
24883     const gchar         *name,
24884     const gchar         *object_path,
24885     GCancellable        *cancellable,
24886     GError             **error)
24887 {
24888   GInitable *ret;
24889   ret = g_initable_new (TYPE_FLASH_CONTROL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.FlashControl", NULL);
24890   if (ret != NULL)
24891     return FLASH_CONTROL (ret);
24892   else
24893     return NULL;
24894 }
24895 
24896 
24897 /**
24898  * flash_control_proxy_new_for_bus:
24899  * @bus_type: A #GBusType.
24900  * @flags: Flags from the #GDBusProxyFlags enumeration.
24901  * @name: A bus name (well-known or unique).
24902  * @object_path: An object path.
24903  * @cancellable: (allow-none): A #GCancellable or %NULL.
24904  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
24905  * @user_data: User data to pass to @callback.
24906  *
24907  * Like flash_control_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
24908  *
24909  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
24910  * You can then call flash_control_proxy_new_for_bus_finish() to get the result of the operation.
24911  *
24912  * See flash_control_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
24913  */
24914 void
24915 flash_control_proxy_new_for_bus (
24916     GBusType             bus_type,
24917     GDBusProxyFlags      flags,
24918     const gchar         *name,
24919     const gchar         *object_path,
24920     GCancellable        *cancellable,
24921     GAsyncReadyCallback  callback,
24922     gpointer             user_data)
24923 {
24924   g_async_initable_new_async (TYPE_FLASH_CONTROL_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.openbmc.FlashControl", NULL);
24925 }
24926 
24927 /**
24928  * flash_control_proxy_new_for_bus_finish:
24929  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to flash_control_proxy_new_for_bus().
24930  * @error: Return location for error or %NULL
24931  *
24932  * Finishes an operation started with flash_control_proxy_new_for_bus().
24933  *
24934  * Returns: (transfer full) (type FlashControlProxy): The constructed proxy object or %NULL if @error is set.
24935  */
24936 FlashControl *
24937 flash_control_proxy_new_for_bus_finish (
24938     GAsyncResult        *res,
24939     GError             **error)
24940 {
24941   GObject *ret;
24942   GObject *source_object;
24943   source_object = g_async_result_get_source_object (res);
24944   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
24945   g_object_unref (source_object);
24946   if (ret != NULL)
24947     return FLASH_CONTROL (ret);
24948   else
24949     return NULL;
24950 }
24951 
24952 /**
24953  * flash_control_proxy_new_for_bus_sync:
24954  * @bus_type: A #GBusType.
24955  * @flags: Flags from the #GDBusProxyFlags enumeration.
24956  * @name: A bus name (well-known or unique).
24957  * @object_path: An object path.
24958  * @cancellable: (allow-none): A #GCancellable or %NULL.
24959  * @error: Return location for error or %NULL
24960  *
24961  * Like flash_control_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
24962  *
24963  * The calling thread is blocked until a reply is received.
24964  *
24965  * See flash_control_proxy_new_for_bus() for the asynchronous version of this constructor.
24966  *
24967  * Returns: (transfer full) (type FlashControlProxy): The constructed proxy object or %NULL if @error is set.
24968  */
24969 FlashControl *
24970 flash_control_proxy_new_for_bus_sync (
24971     GBusType             bus_type,
24972     GDBusProxyFlags      flags,
24973     const gchar         *name,
24974     const gchar         *object_path,
24975     GCancellable        *cancellable,
24976     GError             **error)
24977 {
24978   GInitable *ret;
24979   ret = g_initable_new (TYPE_FLASH_CONTROL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.FlashControl", NULL);
24980   if (ret != NULL)
24981     return FLASH_CONTROL (ret);
24982   else
24983     return NULL;
24984 }
24985 
24986 
24987 /* ------------------------------------------------------------------------ */
24988 
24989 /**
24990  * FlashControlSkeleton:
24991  *
24992  * The #FlashControlSkeleton structure contains only private data and should only be accessed using the provided API.
24993  */
24994 
24995 /**
24996  * FlashControlSkeletonClass:
24997  * @parent_class: The parent class.
24998  *
24999  * Class structure for #FlashControlSkeleton.
25000  */
25001 
25002 struct _FlashControlSkeletonPrivate
25003 {
25004   GValue *properties;
25005   GList *changed_properties;
25006   GSource *changed_properties_idle_source;
25007   GMainContext *context;
25008   GMutex lock;
25009 };
25010 
25011 static void
25012 _flash_control_skeleton_handle_method_call (
25013   GDBusConnection *connection G_GNUC_UNUSED,
25014   const gchar *sender G_GNUC_UNUSED,
25015   const gchar *object_path G_GNUC_UNUSED,
25016   const gchar *interface_name,
25017   const gchar *method_name,
25018   GVariant *parameters,
25019   GDBusMethodInvocation *invocation,
25020   gpointer user_data)
25021 {
25022   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (user_data);
25023   _ExtendedGDBusMethodInfo *info;
25024   GVariantIter iter;
25025   GVariant *child;
25026   GValue *paramv;
25027   guint num_params;
25028   guint num_extra;
25029   guint n;
25030   guint signal_id;
25031   GValue return_value = G_VALUE_INIT;
25032   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
25033   g_assert (info != NULL);
25034   num_params = g_variant_n_children (parameters);
25035   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
25036   n = 0;
25037   g_value_init (&paramv[n], TYPE_FLASH_CONTROL);
25038   g_value_set_object (&paramv[n++], skeleton);
25039   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
25040   g_value_set_object (&paramv[n++], invocation);
25041   if (info->pass_fdlist)
25042     {
25043 #ifdef G_OS_UNIX
25044       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
25045       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
25046 #else
25047       g_assert_not_reached ();
25048 #endif
25049     }
25050   g_variant_iter_init (&iter, parameters);
25051   while ((child = g_variant_iter_next_value (&iter)) != NULL)
25052     {
25053       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
25054       if (arg_info->use_gvariant)
25055         {
25056           g_value_init (&paramv[n], G_TYPE_VARIANT);
25057           g_value_set_variant (&paramv[n], child);
25058           n++;
25059         }
25060       else
25061         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
25062       g_variant_unref (child);
25063     }
25064   signal_id = g_signal_lookup (info->signal_name, TYPE_FLASH_CONTROL);
25065   g_value_init (&return_value, G_TYPE_BOOLEAN);
25066   g_signal_emitv (paramv, signal_id, 0, &return_value);
25067   if (!g_value_get_boolean (&return_value))
25068     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);
25069   g_value_unset (&return_value);
25070   for (n = 0; n < num_params + num_extra; n++)
25071     g_value_unset (&paramv[n]);
25072   g_free (paramv);
25073 }
25074 
25075 static GVariant *
25076 _flash_control_skeleton_handle_get_property (
25077   GDBusConnection *connection G_GNUC_UNUSED,
25078   const gchar *sender G_GNUC_UNUSED,
25079   const gchar *object_path G_GNUC_UNUSED,
25080   const gchar *interface_name G_GNUC_UNUSED,
25081   const gchar *property_name,
25082   GError **error,
25083   gpointer user_data)
25084 {
25085   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (user_data);
25086   GValue value = G_VALUE_INIT;
25087   GParamSpec *pspec;
25088   _ExtendedGDBusPropertyInfo *info;
25089   GVariant *ret;
25090   ret = NULL;
25091   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_flash_control_interface_info.parent_struct, property_name);
25092   g_assert (info != NULL);
25093   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
25094   if (pspec == NULL)
25095     {
25096       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
25097     }
25098   else
25099     {
25100       g_value_init (&value, pspec->value_type);
25101       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
25102       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
25103       g_value_unset (&value);
25104     }
25105   return ret;
25106 }
25107 
25108 static gboolean
25109 _flash_control_skeleton_handle_set_property (
25110   GDBusConnection *connection G_GNUC_UNUSED,
25111   const gchar *sender G_GNUC_UNUSED,
25112   const gchar *object_path G_GNUC_UNUSED,
25113   const gchar *interface_name G_GNUC_UNUSED,
25114   const gchar *property_name,
25115   GVariant *variant,
25116   GError **error,
25117   gpointer user_data)
25118 {
25119   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (user_data);
25120   GValue value = G_VALUE_INIT;
25121   GParamSpec *pspec;
25122   _ExtendedGDBusPropertyInfo *info;
25123   gboolean ret;
25124   ret = FALSE;
25125   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_flash_control_interface_info.parent_struct, property_name);
25126   g_assert (info != NULL);
25127   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
25128   if (pspec == NULL)
25129     {
25130       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
25131     }
25132   else
25133     {
25134       if (info->use_gvariant)
25135         g_value_set_variant (&value, variant);
25136       else
25137         g_dbus_gvariant_to_gvalue (variant, &value);
25138       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
25139       g_value_unset (&value);
25140       ret = TRUE;
25141     }
25142   return ret;
25143 }
25144 
25145 static const GDBusInterfaceVTable _flash_control_skeleton_vtable =
25146 {
25147   _flash_control_skeleton_handle_method_call,
25148   _flash_control_skeleton_handle_get_property,
25149   _flash_control_skeleton_handle_set_property,
25150   {NULL}
25151 };
25152 
25153 static GDBusInterfaceInfo *
25154 flash_control_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
25155 {
25156   return flash_control_interface_info ();
25157 }
25158 
25159 static GDBusInterfaceVTable *
25160 flash_control_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
25161 {
25162   return (GDBusInterfaceVTable *) &_flash_control_skeleton_vtable;
25163 }
25164 
25165 static GVariant *
25166 flash_control_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
25167 {
25168   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (_skeleton);
25169 
25170   GVariantBuilder builder;
25171   guint n;
25172   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
25173   if (_flash_control_interface_info.parent_struct.properties == NULL)
25174     goto out;
25175   for (n = 0; _flash_control_interface_info.parent_struct.properties[n] != NULL; n++)
25176     {
25177       GDBusPropertyInfo *info = _flash_control_interface_info.parent_struct.properties[n];
25178       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
25179         {
25180           GVariant *value;
25181           value = _flash_control_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.openbmc.FlashControl", info->name, NULL, skeleton);
25182           if (value != NULL)
25183             {
25184               g_variant_take_ref (value);
25185               g_variant_builder_add (&builder, "{sv}", info->name, value);
25186               g_variant_unref (value);
25187             }
25188         }
25189     }
25190 out:
25191   return g_variant_builder_end (&builder);
25192 }
25193 
25194 static gboolean _flash_control_emit_changed (gpointer user_data);
25195 
25196 static void
25197 flash_control_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
25198 {
25199   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (_skeleton);
25200   gboolean emit_changed = FALSE;
25201 
25202   g_mutex_lock (&skeleton->priv->lock);
25203   if (skeleton->priv->changed_properties_idle_source != NULL)
25204     {
25205       g_source_destroy (skeleton->priv->changed_properties_idle_source);
25206       skeleton->priv->changed_properties_idle_source = NULL;
25207       emit_changed = TRUE;
25208     }
25209   g_mutex_unlock (&skeleton->priv->lock);
25210 
25211   if (emit_changed)
25212     _flash_control_emit_changed (skeleton);
25213 }
25214 
25215 static void
25216 _flash_control_on_signal_done (
25217     FlashControl *object,
25218     const gchar *arg_filename)
25219 {
25220   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (object);
25221 
25222   GList      *connections, *l;
25223   GVariant   *signal_variant;
25224   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
25225 
25226   signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
25227                    arg_filename));
25228   for (l = connections; l != NULL; l = l->next)
25229     {
25230       GDBusConnection *connection = l->data;
25231       g_dbus_connection_emit_signal (connection,
25232         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.FlashControl", "Done",
25233         signal_variant, NULL);
25234     }
25235   g_variant_unref (signal_variant);
25236   g_list_free_full (connections, g_object_unref);
25237 }
25238 
25239 static void
25240 _flash_control_on_signal_error (
25241     FlashControl *object,
25242     const gchar *arg_filename)
25243 {
25244   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (object);
25245 
25246   GList      *connections, *l;
25247   GVariant   *signal_variant;
25248   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
25249 
25250   signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
25251                    arg_filename));
25252   for (l = connections; l != NULL; l = l->next)
25253     {
25254       GDBusConnection *connection = l->data;
25255       g_dbus_connection_emit_signal (connection,
25256         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.FlashControl", "Error",
25257         signal_variant, NULL);
25258     }
25259   g_variant_unref (signal_variant);
25260   g_list_free_full (connections, g_object_unref);
25261 }
25262 
25263 static void
25264 _flash_control_on_signal_progress (
25265     FlashControl *object,
25266     const gchar *arg_filename,
25267     guchar arg_progress)
25268 {
25269   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (object);
25270 
25271   GList      *connections, *l;
25272   GVariant   *signal_variant;
25273   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
25274 
25275   signal_variant = g_variant_ref_sink (g_variant_new ("(sy)",
25276                    arg_filename,
25277                    arg_progress));
25278   for (l = connections; l != NULL; l = l->next)
25279     {
25280       GDBusConnection *connection = l->data;
25281       g_dbus_connection_emit_signal (connection,
25282         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.FlashControl", "Progress",
25283         signal_variant, NULL);
25284     }
25285   g_variant_unref (signal_variant);
25286   g_list_free_full (connections, g_object_unref);
25287 }
25288 
25289 static void flash_control_skeleton_iface_init (FlashControlIface *iface);
25290 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
25291 G_DEFINE_TYPE_WITH_CODE (FlashControlSkeleton, flash_control_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
25292                          G_ADD_PRIVATE (FlashControlSkeleton)
25293                          G_IMPLEMENT_INTERFACE (TYPE_FLASH_CONTROL, flash_control_skeleton_iface_init));
25294 
25295 #else
25296 G_DEFINE_TYPE_WITH_CODE (FlashControlSkeleton, flash_control_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
25297                          G_IMPLEMENT_INTERFACE (TYPE_FLASH_CONTROL, flash_control_skeleton_iface_init));
25298 
25299 #endif
25300 static void
25301 flash_control_skeleton_finalize (GObject *object)
25302 {
25303   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (object);
25304   guint n;
25305   for (n = 0; n < 2; n++)
25306     g_value_unset (&skeleton->priv->properties[n]);
25307   g_free (skeleton->priv->properties);
25308   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
25309   if (skeleton->priv->changed_properties_idle_source != NULL)
25310     g_source_destroy (skeleton->priv->changed_properties_idle_source);
25311   g_main_context_unref (skeleton->priv->context);
25312   g_mutex_clear (&skeleton->priv->lock);
25313   G_OBJECT_CLASS (flash_control_skeleton_parent_class)->finalize (object);
25314 }
25315 
25316 static void
25317 flash_control_skeleton_get_property (GObject      *object,
25318   guint         prop_id,
25319   GValue       *value,
25320   GParamSpec   *pspec G_GNUC_UNUSED)
25321 {
25322   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (object);
25323   g_assert (prop_id != 0 && prop_id - 1 < 2);
25324   g_mutex_lock (&skeleton->priv->lock);
25325   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
25326   g_mutex_unlock (&skeleton->priv->lock);
25327 }
25328 
25329 static gboolean
25330 _flash_control_emit_changed (gpointer user_data)
25331 {
25332   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (user_data);
25333   GList *l;
25334   GVariantBuilder builder;
25335   GVariantBuilder invalidated_builder;
25336   guint num_changes;
25337 
25338   g_mutex_lock (&skeleton->priv->lock);
25339   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
25340   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
25341   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
25342     {
25343       ChangedProperty *cp = l->data;
25344       GVariant *variant;
25345       const GValue *cur_value;
25346 
25347       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
25348       if (!_g_value_equal (cur_value, &cp->orig_value))
25349         {
25350           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
25351           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
25352           g_variant_unref (variant);
25353           num_changes++;
25354         }
25355     }
25356   if (num_changes > 0)
25357     {
25358       GList *connections, *ll;
25359       GVariant *signal_variant;
25360       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.FlashControl",
25361                                            &builder, &invalidated_builder));
25362       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
25363       for (ll = connections; ll != NULL; ll = ll->next)
25364         {
25365           GDBusConnection *connection = ll->data;
25366 
25367           g_dbus_connection_emit_signal (connection,
25368                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
25369                                          "org.freedesktop.DBus.Properties",
25370                                          "PropertiesChanged",
25371                                          signal_variant,
25372                                          NULL);
25373         }
25374       g_variant_unref (signal_variant);
25375       g_list_free_full (connections, g_object_unref);
25376     }
25377   else
25378     {
25379       g_variant_builder_clear (&builder);
25380       g_variant_builder_clear (&invalidated_builder);
25381     }
25382   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
25383   skeleton->priv->changed_properties = NULL;
25384   skeleton->priv->changed_properties_idle_source = NULL;
25385   g_mutex_unlock (&skeleton->priv->lock);
25386   return FALSE;
25387 }
25388 
25389 static void
25390 _flash_control_schedule_emit_changed (FlashControlSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
25391 {
25392   ChangedProperty *cp;
25393   GList *l;
25394   cp = NULL;
25395   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
25396     {
25397       ChangedProperty *i_cp = l->data;
25398       if (i_cp->info == info)
25399         {
25400           cp = i_cp;
25401           break;
25402         }
25403     }
25404   if (cp == NULL)
25405     {
25406       cp = g_new0 (ChangedProperty, 1);
25407       cp->prop_id = prop_id;
25408       cp->info = info;
25409       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
25410       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
25411       g_value_copy (orig_value, &cp->orig_value);
25412     }
25413 }
25414 
25415 static void
25416 flash_control_skeleton_notify (GObject      *object,
25417   GParamSpec *pspec G_GNUC_UNUSED)
25418 {
25419   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (object);
25420   g_mutex_lock (&skeleton->priv->lock);
25421   if (skeleton->priv->changed_properties != NULL &&
25422       skeleton->priv->changed_properties_idle_source == NULL)
25423     {
25424       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
25425       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
25426       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _flash_control_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
25427       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
25428       g_source_unref (skeleton->priv->changed_properties_idle_source);
25429     }
25430   g_mutex_unlock (&skeleton->priv->lock);
25431 }
25432 
25433 static void
25434 flash_control_skeleton_set_property (GObject      *object,
25435   guint         prop_id,
25436   const GValue *value,
25437   GParamSpec   *pspec)
25438 {
25439   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (object);
25440   g_assert (prop_id != 0 && prop_id - 1 < 2);
25441   g_mutex_lock (&skeleton->priv->lock);
25442   g_object_freeze_notify (object);
25443   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
25444     {
25445       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
25446         _flash_control_schedule_emit_changed (skeleton, _flash_control_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
25447       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
25448       g_object_notify_by_pspec (object, pspec);
25449     }
25450   g_mutex_unlock (&skeleton->priv->lock);
25451   g_object_thaw_notify (object);
25452 }
25453 
25454 static void
25455 flash_control_skeleton_init (FlashControlSkeleton *skeleton)
25456 {
25457 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
25458   skeleton->priv = flash_control_skeleton_get_instance_private (skeleton);
25459 #else
25460   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_FLASH_CONTROL_SKELETON, FlashControlSkeletonPrivate);
25461 #endif
25462 
25463   g_mutex_init (&skeleton->priv->lock);
25464   skeleton->priv->context = g_main_context_ref_thread_default ();
25465   skeleton->priv->properties = g_new0 (GValue, 2);
25466   g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING);
25467   g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING);
25468 }
25469 
25470 static const gchar *
25471 flash_control_skeleton_get_filename (FlashControl *object)
25472 {
25473   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (object);
25474   const gchar *value;
25475   g_mutex_lock (&skeleton->priv->lock);
25476   value = g_value_get_string (&(skeleton->priv->properties[0]));
25477   g_mutex_unlock (&skeleton->priv->lock);
25478   return value;
25479 }
25480 
25481 static const gchar *
25482 flash_control_skeleton_get_type_ (FlashControl *object)
25483 {
25484   FlashControlSkeleton *skeleton = FLASH_CONTROL_SKELETON (object);
25485   const gchar *value;
25486   g_mutex_lock (&skeleton->priv->lock);
25487   value = g_value_get_string (&(skeleton->priv->properties[1]));
25488   g_mutex_unlock (&skeleton->priv->lock);
25489   return value;
25490 }
25491 
25492 static void
25493 flash_control_skeleton_class_init (FlashControlSkeletonClass *klass)
25494 {
25495   GObjectClass *gobject_class;
25496   GDBusInterfaceSkeletonClass *skeleton_class;
25497 
25498   gobject_class = G_OBJECT_CLASS (klass);
25499   gobject_class->finalize = flash_control_skeleton_finalize;
25500   gobject_class->get_property = flash_control_skeleton_get_property;
25501   gobject_class->set_property = flash_control_skeleton_set_property;
25502   gobject_class->notify       = flash_control_skeleton_notify;
25503 
25504 
25505   flash_control_override_properties (gobject_class, 1);
25506 
25507   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
25508   skeleton_class->get_info = flash_control_skeleton_dbus_interface_get_info;
25509   skeleton_class->get_properties = flash_control_skeleton_dbus_interface_get_properties;
25510   skeleton_class->flush = flash_control_skeleton_dbus_interface_flush;
25511   skeleton_class->get_vtable = flash_control_skeleton_dbus_interface_get_vtable;
25512 
25513 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
25514   g_type_class_add_private (klass, sizeof (FlashControlSkeletonPrivate));
25515 #endif
25516 }
25517 
25518 static void
25519 flash_control_skeleton_iface_init (FlashControlIface *iface)
25520 {
25521   iface->done = _flash_control_on_signal_done;
25522   iface->error = _flash_control_on_signal_error;
25523   iface->progress = _flash_control_on_signal_progress;
25524   iface->get_filename = flash_control_skeleton_get_filename;
25525   iface->get_type_ = flash_control_skeleton_get_type_;
25526 }
25527 
25528 /**
25529  * flash_control_skeleton_new:
25530  *
25531  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-FlashControl.top_of_page">org.openbmc.FlashControl</link>.
25532  *
25533  * Returns: (transfer full) (type FlashControlSkeleton): The skeleton object.
25534  */
25535 FlashControl *
25536 flash_control_skeleton_new (void)
25537 {
25538   return FLASH_CONTROL (g_object_new (TYPE_FLASH_CONTROL_SKELETON, NULL));
25539 }
25540 
25541 /* ------------------------------------------------------------------------
25542  * Code for interface org.openbmc.Button
25543  * ------------------------------------------------------------------------
25544  */
25545 
25546 /**
25547  * SECTION:Button
25548  * @title: Button
25549  * @short_description: Generated C code for the org.openbmc.Button D-Bus interface
25550  *
25551  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-Button.top_of_page">org.openbmc.Button</link> D-Bus interface in C.
25552  */
25553 
25554 /* ---- Introspection data for org.openbmc.Button ---- */
25555 
25556 static const _ExtendedGDBusArgInfo _button_method_info_is_on_OUT_ARG_state =
25557 {
25558   {
25559     -1,
25560     (gchar *) "state",
25561     (gchar *) "b",
25562     NULL
25563   },
25564   FALSE
25565 };
25566 
25567 static const _ExtendedGDBusArgInfo * const _button_method_info_is_on_OUT_ARG_pointers[] =
25568 {
25569   &_button_method_info_is_on_OUT_ARG_state,
25570   NULL
25571 };
25572 
25573 static const _ExtendedGDBusMethodInfo _button_method_info_is_on =
25574 {
25575   {
25576     -1,
25577     (gchar *) "isOn",
25578     NULL,
25579     (GDBusArgInfo **) &_button_method_info_is_on_OUT_ARG_pointers,
25580     NULL
25581   },
25582   "handle-is-on",
25583   FALSE
25584 };
25585 
25586 static const _ExtendedGDBusMethodInfo _button_method_info_sim_press =
25587 {
25588   {
25589     -1,
25590     (gchar *) "simPress",
25591     NULL,
25592     NULL,
25593     NULL
25594   },
25595   "handle-sim-press",
25596   FALSE
25597 };
25598 
25599 static const _ExtendedGDBusMethodInfo _button_method_info_sim_long_press =
25600 {
25601   {
25602     -1,
25603     (gchar *) "simLongPress",
25604     NULL,
25605     NULL,
25606     NULL
25607   },
25608   "handle-sim-long-press",
25609   FALSE
25610 };
25611 
25612 static const _ExtendedGDBusMethodInfo * const _button_method_info_pointers[] =
25613 {
25614   &_button_method_info_is_on,
25615   &_button_method_info_sim_press,
25616   &_button_method_info_sim_long_press,
25617   NULL
25618 };
25619 
25620 static const _ExtendedGDBusSignalInfo _button_signal_info_released =
25621 {
25622   {
25623     -1,
25624     (gchar *) "Released",
25625     NULL,
25626     NULL
25627   },
25628   "released"
25629 };
25630 
25631 static const _ExtendedGDBusSignalInfo _button_signal_info_pressed =
25632 {
25633   {
25634     -1,
25635     (gchar *) "Pressed",
25636     NULL,
25637     NULL
25638   },
25639   "pressed"
25640 };
25641 
25642 static const _ExtendedGDBusSignalInfo _button_signal_info_pressed_long =
25643 {
25644   {
25645     -1,
25646     (gchar *) "PressedLong",
25647     NULL,
25648     NULL
25649   },
25650   "pressed-long"
25651 };
25652 
25653 static const _ExtendedGDBusSignalInfo * const _button_signal_info_pointers[] =
25654 {
25655   &_button_signal_info_released,
25656   &_button_signal_info_pressed,
25657   &_button_signal_info_pressed_long,
25658   NULL
25659 };
25660 
25661 static const _ExtendedGDBusPropertyInfo _button_property_info_state =
25662 {
25663   {
25664     -1,
25665     (gchar *) "state",
25666     (gchar *) "b",
25667     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
25668     NULL
25669   },
25670   "state",
25671   FALSE
25672 };
25673 
25674 static const _ExtendedGDBusPropertyInfo _button_property_info_timer =
25675 {
25676   {
25677     -1,
25678     (gchar *) "timer",
25679     (gchar *) "t",
25680     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
25681     NULL
25682   },
25683   "timer",
25684   FALSE
25685 };
25686 
25687 static const _ExtendedGDBusPropertyInfo * const _button_property_info_pointers[] =
25688 {
25689   &_button_property_info_state,
25690   &_button_property_info_timer,
25691   NULL
25692 };
25693 
25694 static const _ExtendedGDBusInterfaceInfo _button_interface_info =
25695 {
25696   {
25697     -1,
25698     (gchar *) "org.openbmc.Button",
25699     (GDBusMethodInfo **) &_button_method_info_pointers,
25700     (GDBusSignalInfo **) &_button_signal_info_pointers,
25701     (GDBusPropertyInfo **) &_button_property_info_pointers,
25702     NULL
25703   },
25704   "button",
25705 };
25706 
25707 
25708 /**
25709  * button_interface_info:
25710  *
25711  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-Button.top_of_page">org.openbmc.Button</link> D-Bus interface.
25712  *
25713  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
25714  */
25715 GDBusInterfaceInfo *
25716 button_interface_info (void)
25717 {
25718   return (GDBusInterfaceInfo *) &_button_interface_info.parent_struct;
25719 }
25720 
25721 /**
25722  * button_override_properties:
25723  * @klass: The class structure for a #GObject<!-- -->-derived class.
25724  * @property_id_begin: The property id to assign to the first overridden property.
25725  *
25726  * Overrides all #GObject properties in the #Button interface for a concrete class.
25727  * The properties are overridden in the order they are defined.
25728  *
25729  * Returns: The last property id.
25730  */
25731 guint
25732 button_override_properties (GObjectClass *klass, guint property_id_begin)
25733 {
25734   g_object_class_override_property (klass, property_id_begin++, "state");
25735   g_object_class_override_property (klass, property_id_begin++, "timer");
25736   return property_id_begin - 1;
25737 }
25738 
25739 
25740 
25741 /**
25742  * Button:
25743  *
25744  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Button.top_of_page">org.openbmc.Button</link>.
25745  */
25746 
25747 /**
25748  * ButtonIface:
25749  * @parent_iface: The parent interface.
25750  * @handle_is_on: Handler for the #Button::handle-is-on signal.
25751  * @handle_sim_long_press: Handler for the #Button::handle-sim-long-press signal.
25752  * @handle_sim_press: Handler for the #Button::handle-sim-press signal.
25753  * @get_state: Getter for the #Button:state property.
25754  * @get_timer: Getter for the #Button:timer property.
25755  * @pressed: Handler for the #Button::pressed signal.
25756  * @pressed_long: Handler for the #Button::pressed-long signal.
25757  * @released: Handler for the #Button::released signal.
25758  *
25759  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Button.top_of_page">org.openbmc.Button</link>.
25760  */
25761 
25762 typedef ButtonIface ButtonInterface;
25763 G_DEFINE_INTERFACE (Button, button, G_TYPE_OBJECT);
25764 
25765 static void
25766 button_default_init (ButtonIface *iface)
25767 {
25768   /* GObject signals for incoming D-Bus method calls: */
25769   /**
25770    * Button::handle-is-on:
25771    * @object: A #Button.
25772    * @invocation: A #GDBusMethodInvocation.
25773    *
25774    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Button.isOn">isOn()</link> D-Bus method.
25775    *
25776    * 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 button_complete_is_on() 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.
25777    *
25778    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
25779    */
25780   g_signal_new ("handle-is-on",
25781     G_TYPE_FROM_INTERFACE (iface),
25782     G_SIGNAL_RUN_LAST,
25783     G_STRUCT_OFFSET (ButtonIface, handle_is_on),
25784     g_signal_accumulator_true_handled,
25785     NULL,
25786     g_cclosure_marshal_generic,
25787     G_TYPE_BOOLEAN,
25788     1,
25789     G_TYPE_DBUS_METHOD_INVOCATION);
25790 
25791   /**
25792    * Button::handle-sim-press:
25793    * @object: A #Button.
25794    * @invocation: A #GDBusMethodInvocation.
25795    *
25796    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Button.simPress">simPress()</link> D-Bus method.
25797    *
25798    * 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 button_complete_sim_press() 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.
25799    *
25800    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
25801    */
25802   g_signal_new ("handle-sim-press",
25803     G_TYPE_FROM_INTERFACE (iface),
25804     G_SIGNAL_RUN_LAST,
25805     G_STRUCT_OFFSET (ButtonIface, handle_sim_press),
25806     g_signal_accumulator_true_handled,
25807     NULL,
25808     g_cclosure_marshal_generic,
25809     G_TYPE_BOOLEAN,
25810     1,
25811     G_TYPE_DBUS_METHOD_INVOCATION);
25812 
25813   /**
25814    * Button::handle-sim-long-press:
25815    * @object: A #Button.
25816    * @invocation: A #GDBusMethodInvocation.
25817    *
25818    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Button.simLongPress">simLongPress()</link> D-Bus method.
25819    *
25820    * 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 button_complete_sim_long_press() 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.
25821    *
25822    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
25823    */
25824   g_signal_new ("handle-sim-long-press",
25825     G_TYPE_FROM_INTERFACE (iface),
25826     G_SIGNAL_RUN_LAST,
25827     G_STRUCT_OFFSET (ButtonIface, handle_sim_long_press),
25828     g_signal_accumulator_true_handled,
25829     NULL,
25830     g_cclosure_marshal_generic,
25831     G_TYPE_BOOLEAN,
25832     1,
25833     G_TYPE_DBUS_METHOD_INVOCATION);
25834 
25835   /* GObject signals for received D-Bus signals: */
25836   /**
25837    * Button::released:
25838    * @object: A #Button.
25839    *
25840    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Button.Released">"Released"</link> is received.
25841    *
25842    * 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.
25843    */
25844   g_signal_new ("released",
25845     G_TYPE_FROM_INTERFACE (iface),
25846     G_SIGNAL_RUN_LAST,
25847     G_STRUCT_OFFSET (ButtonIface, released),
25848     NULL,
25849     NULL,
25850     g_cclosure_marshal_generic,
25851     G_TYPE_NONE,
25852     0);
25853 
25854   /**
25855    * Button::pressed:
25856    * @object: A #Button.
25857    *
25858    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Button.Pressed">"Pressed"</link> is received.
25859    *
25860    * 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.
25861    */
25862   g_signal_new ("pressed",
25863     G_TYPE_FROM_INTERFACE (iface),
25864     G_SIGNAL_RUN_LAST,
25865     G_STRUCT_OFFSET (ButtonIface, pressed),
25866     NULL,
25867     NULL,
25868     g_cclosure_marshal_generic,
25869     G_TYPE_NONE,
25870     0);
25871 
25872   /**
25873    * Button::pressed-long:
25874    * @object: A #Button.
25875    *
25876    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Button.PressedLong">"PressedLong"</link> is received.
25877    *
25878    * 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.
25879    */
25880   g_signal_new ("pressed-long",
25881     G_TYPE_FROM_INTERFACE (iface),
25882     G_SIGNAL_RUN_LAST,
25883     G_STRUCT_OFFSET (ButtonIface, pressed_long),
25884     NULL,
25885     NULL,
25886     g_cclosure_marshal_generic,
25887     G_TYPE_NONE,
25888     0);
25889 
25890   /* GObject properties for D-Bus properties: */
25891   /**
25892    * Button:state:
25893    *
25894    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Button.state">"state"</link>.
25895    *
25896    * 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.
25897    */
25898   g_object_interface_install_property (iface,
25899     g_param_spec_boolean ("state", "state", "state", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
25900   /**
25901    * Button:timer:
25902    *
25903    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Button.timer">"timer"</link>.
25904    *
25905    * 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.
25906    */
25907   g_object_interface_install_property (iface,
25908     g_param_spec_uint64 ("timer", "timer", "timer", 0, G_MAXUINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
25909 }
25910 
25911 /**
25912  * button_get_state: (skip)
25913  * @object: A #Button.
25914  *
25915  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Button.state">"state"</link> D-Bus property.
25916  *
25917  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
25918  *
25919  * Returns: The property value.
25920  */
25921 gboolean
25922 button_get_state (Button *object)
25923 {
25924   return BUTTON_GET_IFACE (object)->get_state (object);
25925 }
25926 
25927 /**
25928  * button_set_state: (skip)
25929  * @object: A #Button.
25930  * @value: The value to set.
25931  *
25932  * Sets the <link linkend="gdbus-property-org-openbmc-Button.state">"state"</link> D-Bus property to @value.
25933  *
25934  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
25935  */
25936 void
25937 button_set_state (Button *object, gboolean value)
25938 {
25939   g_object_set (G_OBJECT (object), "state", value, NULL);
25940 }
25941 
25942 /**
25943  * button_get_timer: (skip)
25944  * @object: A #Button.
25945  *
25946  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Button.timer">"timer"</link> D-Bus property.
25947  *
25948  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
25949  *
25950  * Returns: The property value.
25951  */
25952 guint64
25953 button_get_timer (Button *object)
25954 {
25955   return BUTTON_GET_IFACE (object)->get_timer (object);
25956 }
25957 
25958 /**
25959  * button_set_timer: (skip)
25960  * @object: A #Button.
25961  * @value: The value to set.
25962  *
25963  * Sets the <link linkend="gdbus-property-org-openbmc-Button.timer">"timer"</link> D-Bus property to @value.
25964  *
25965  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
25966  */
25967 void
25968 button_set_timer (Button *object, guint64 value)
25969 {
25970   g_object_set (G_OBJECT (object), "timer", value, NULL);
25971 }
25972 
25973 /**
25974  * button_emit_released:
25975  * @object: A #Button.
25976  *
25977  * Emits the <link linkend="gdbus-signal-org-openbmc-Button.Released">"Released"</link> D-Bus signal.
25978  */
25979 void
25980 button_emit_released (
25981     Button *object)
25982 {
25983   g_signal_emit_by_name (object, "released");
25984 }
25985 
25986 /**
25987  * button_emit_pressed:
25988  * @object: A #Button.
25989  *
25990  * Emits the <link linkend="gdbus-signal-org-openbmc-Button.Pressed">"Pressed"</link> D-Bus signal.
25991  */
25992 void
25993 button_emit_pressed (
25994     Button *object)
25995 {
25996   g_signal_emit_by_name (object, "pressed");
25997 }
25998 
25999 /**
26000  * button_emit_pressed_long:
26001  * @object: A #Button.
26002  *
26003  * Emits the <link linkend="gdbus-signal-org-openbmc-Button.PressedLong">"PressedLong"</link> D-Bus signal.
26004  */
26005 void
26006 button_emit_pressed_long (
26007     Button *object)
26008 {
26009   g_signal_emit_by_name (object, "pressed-long");
26010 }
26011 
26012 /**
26013  * button_call_is_on:
26014  * @proxy: A #ButtonProxy.
26015  * @cancellable: (allow-none): A #GCancellable or %NULL.
26016  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
26017  * @user_data: User data to pass to @callback.
26018  *
26019  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Button.isOn">isOn()</link> D-Bus method on @proxy.
26020  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
26021  * You can then call button_call_is_on_finish() to get the result of the operation.
26022  *
26023  * See button_call_is_on_sync() for the synchronous, blocking version of this method.
26024  */
26025 void
26026 button_call_is_on (
26027     Button *proxy,
26028     GCancellable *cancellable,
26029     GAsyncReadyCallback callback,
26030     gpointer user_data)
26031 {
26032   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
26033     "isOn",
26034     g_variant_new ("()"),
26035     G_DBUS_CALL_FLAGS_NONE,
26036     -1,
26037     cancellable,
26038     callback,
26039     user_data);
26040 }
26041 
26042 /**
26043  * button_call_is_on_finish:
26044  * @proxy: A #ButtonProxy.
26045  * @out_state: (out): Return location for return parameter or %NULL to ignore.
26046  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to button_call_is_on().
26047  * @error: Return location for error or %NULL.
26048  *
26049  * Finishes an operation started with button_call_is_on().
26050  *
26051  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
26052  */
26053 gboolean
26054 button_call_is_on_finish (
26055     Button *proxy,
26056     gboolean *out_state,
26057     GAsyncResult *res,
26058     GError **error)
26059 {
26060   GVariant *_ret;
26061   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
26062   if (_ret == NULL)
26063     goto _out;
26064   g_variant_get (_ret,
26065                  "(b)",
26066                  out_state);
26067   g_variant_unref (_ret);
26068 _out:
26069   return _ret != NULL;
26070 }
26071 
26072 /**
26073  * button_call_is_on_sync:
26074  * @proxy: A #ButtonProxy.
26075  * @out_state: (out): Return location for return parameter or %NULL to ignore.
26076  * @cancellable: (allow-none): A #GCancellable or %NULL.
26077  * @error: Return location for error or %NULL.
26078  *
26079  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Button.isOn">isOn()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
26080  *
26081  * See button_call_is_on() for the asynchronous version of this method.
26082  *
26083  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
26084  */
26085 gboolean
26086 button_call_is_on_sync (
26087     Button *proxy,
26088     gboolean *out_state,
26089     GCancellable *cancellable,
26090     GError **error)
26091 {
26092   GVariant *_ret;
26093   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
26094     "isOn",
26095     g_variant_new ("()"),
26096     G_DBUS_CALL_FLAGS_NONE,
26097     -1,
26098     cancellable,
26099     error);
26100   if (_ret == NULL)
26101     goto _out;
26102   g_variant_get (_ret,
26103                  "(b)",
26104                  out_state);
26105   g_variant_unref (_ret);
26106 _out:
26107   return _ret != NULL;
26108 }
26109 
26110 /**
26111  * button_call_sim_press:
26112  * @proxy: A #ButtonProxy.
26113  * @cancellable: (allow-none): A #GCancellable or %NULL.
26114  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
26115  * @user_data: User data to pass to @callback.
26116  *
26117  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Button.simPress">simPress()</link> D-Bus method on @proxy.
26118  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
26119  * You can then call button_call_sim_press_finish() to get the result of the operation.
26120  *
26121  * See button_call_sim_press_sync() for the synchronous, blocking version of this method.
26122  */
26123 void
26124 button_call_sim_press (
26125     Button *proxy,
26126     GCancellable *cancellable,
26127     GAsyncReadyCallback callback,
26128     gpointer user_data)
26129 {
26130   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
26131     "simPress",
26132     g_variant_new ("()"),
26133     G_DBUS_CALL_FLAGS_NONE,
26134     -1,
26135     cancellable,
26136     callback,
26137     user_data);
26138 }
26139 
26140 /**
26141  * button_call_sim_press_finish:
26142  * @proxy: A #ButtonProxy.
26143  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to button_call_sim_press().
26144  * @error: Return location for error or %NULL.
26145  *
26146  * Finishes an operation started with button_call_sim_press().
26147  *
26148  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
26149  */
26150 gboolean
26151 button_call_sim_press_finish (
26152     Button *proxy,
26153     GAsyncResult *res,
26154     GError **error)
26155 {
26156   GVariant *_ret;
26157   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
26158   if (_ret == NULL)
26159     goto _out;
26160   g_variant_get (_ret,
26161                  "()");
26162   g_variant_unref (_ret);
26163 _out:
26164   return _ret != NULL;
26165 }
26166 
26167 /**
26168  * button_call_sim_press_sync:
26169  * @proxy: A #ButtonProxy.
26170  * @cancellable: (allow-none): A #GCancellable or %NULL.
26171  * @error: Return location for error or %NULL.
26172  *
26173  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Button.simPress">simPress()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
26174  *
26175  * See button_call_sim_press() for the asynchronous version of this method.
26176  *
26177  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
26178  */
26179 gboolean
26180 button_call_sim_press_sync (
26181     Button *proxy,
26182     GCancellable *cancellable,
26183     GError **error)
26184 {
26185   GVariant *_ret;
26186   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
26187     "simPress",
26188     g_variant_new ("()"),
26189     G_DBUS_CALL_FLAGS_NONE,
26190     -1,
26191     cancellable,
26192     error);
26193   if (_ret == NULL)
26194     goto _out;
26195   g_variant_get (_ret,
26196                  "()");
26197   g_variant_unref (_ret);
26198 _out:
26199   return _ret != NULL;
26200 }
26201 
26202 /**
26203  * button_call_sim_long_press:
26204  * @proxy: A #ButtonProxy.
26205  * @cancellable: (allow-none): A #GCancellable or %NULL.
26206  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
26207  * @user_data: User data to pass to @callback.
26208  *
26209  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Button.simLongPress">simLongPress()</link> D-Bus method on @proxy.
26210  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
26211  * You can then call button_call_sim_long_press_finish() to get the result of the operation.
26212  *
26213  * See button_call_sim_long_press_sync() for the synchronous, blocking version of this method.
26214  */
26215 void
26216 button_call_sim_long_press (
26217     Button *proxy,
26218     GCancellable *cancellable,
26219     GAsyncReadyCallback callback,
26220     gpointer user_data)
26221 {
26222   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
26223     "simLongPress",
26224     g_variant_new ("()"),
26225     G_DBUS_CALL_FLAGS_NONE,
26226     -1,
26227     cancellable,
26228     callback,
26229     user_data);
26230 }
26231 
26232 /**
26233  * button_call_sim_long_press_finish:
26234  * @proxy: A #ButtonProxy.
26235  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to button_call_sim_long_press().
26236  * @error: Return location for error or %NULL.
26237  *
26238  * Finishes an operation started with button_call_sim_long_press().
26239  *
26240  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
26241  */
26242 gboolean
26243 button_call_sim_long_press_finish (
26244     Button *proxy,
26245     GAsyncResult *res,
26246     GError **error)
26247 {
26248   GVariant *_ret;
26249   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
26250   if (_ret == NULL)
26251     goto _out;
26252   g_variant_get (_ret,
26253                  "()");
26254   g_variant_unref (_ret);
26255 _out:
26256   return _ret != NULL;
26257 }
26258 
26259 /**
26260  * button_call_sim_long_press_sync:
26261  * @proxy: A #ButtonProxy.
26262  * @cancellable: (allow-none): A #GCancellable or %NULL.
26263  * @error: Return location for error or %NULL.
26264  *
26265  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Button.simLongPress">simLongPress()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
26266  *
26267  * See button_call_sim_long_press() for the asynchronous version of this method.
26268  *
26269  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
26270  */
26271 gboolean
26272 button_call_sim_long_press_sync (
26273     Button *proxy,
26274     GCancellable *cancellable,
26275     GError **error)
26276 {
26277   GVariant *_ret;
26278   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
26279     "simLongPress",
26280     g_variant_new ("()"),
26281     G_DBUS_CALL_FLAGS_NONE,
26282     -1,
26283     cancellable,
26284     error);
26285   if (_ret == NULL)
26286     goto _out;
26287   g_variant_get (_ret,
26288                  "()");
26289   g_variant_unref (_ret);
26290 _out:
26291   return _ret != NULL;
26292 }
26293 
26294 /**
26295  * button_complete_is_on:
26296  * @object: A #Button.
26297  * @invocation: (transfer full): A #GDBusMethodInvocation.
26298  * @state: Parameter to return.
26299  *
26300  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Button.isOn">isOn()</link> 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.
26301  *
26302  * This method will free @invocation, you cannot use it afterwards.
26303  */
26304 void
26305 button_complete_is_on (
26306     Button *object,
26307     GDBusMethodInvocation *invocation,
26308     gboolean state)
26309 {
26310   g_dbus_method_invocation_return_value (invocation,
26311     g_variant_new ("(b)",
26312                    state));
26313 }
26314 
26315 /**
26316  * button_complete_sim_press:
26317  * @object: A #Button.
26318  * @invocation: (transfer full): A #GDBusMethodInvocation.
26319  *
26320  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Button.simPress">simPress()</link> 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.
26321  *
26322  * This method will free @invocation, you cannot use it afterwards.
26323  */
26324 void
26325 button_complete_sim_press (
26326     Button *object,
26327     GDBusMethodInvocation *invocation)
26328 {
26329   g_dbus_method_invocation_return_value (invocation,
26330     g_variant_new ("()"));
26331 }
26332 
26333 /**
26334  * button_complete_sim_long_press:
26335  * @object: A #Button.
26336  * @invocation: (transfer full): A #GDBusMethodInvocation.
26337  *
26338  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Button.simLongPress">simLongPress()</link> 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.
26339  *
26340  * This method will free @invocation, you cannot use it afterwards.
26341  */
26342 void
26343 button_complete_sim_long_press (
26344     Button *object,
26345     GDBusMethodInvocation *invocation)
26346 {
26347   g_dbus_method_invocation_return_value (invocation,
26348     g_variant_new ("()"));
26349 }
26350 
26351 /* ------------------------------------------------------------------------ */
26352 
26353 /**
26354  * ButtonProxy:
26355  *
26356  * The #ButtonProxy structure contains only private data and should only be accessed using the provided API.
26357  */
26358 
26359 /**
26360  * ButtonProxyClass:
26361  * @parent_class: The parent class.
26362  *
26363  * Class structure for #ButtonProxy.
26364  */
26365 
26366 struct _ButtonProxyPrivate
26367 {
26368   GData *qdata;
26369 };
26370 
26371 static void button_proxy_iface_init (ButtonIface *iface);
26372 
26373 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
26374 G_DEFINE_TYPE_WITH_CODE (ButtonProxy, button_proxy, G_TYPE_DBUS_PROXY,
26375                          G_ADD_PRIVATE (ButtonProxy)
26376                          G_IMPLEMENT_INTERFACE (TYPE_BUTTON, button_proxy_iface_init));
26377 
26378 #else
26379 G_DEFINE_TYPE_WITH_CODE (ButtonProxy, button_proxy, G_TYPE_DBUS_PROXY,
26380                          G_IMPLEMENT_INTERFACE (TYPE_BUTTON, button_proxy_iface_init));
26381 
26382 #endif
26383 static void
26384 button_proxy_finalize (GObject *object)
26385 {
26386   ButtonProxy *proxy = BUTTON_PROXY (object);
26387   g_datalist_clear (&proxy->priv->qdata);
26388   G_OBJECT_CLASS (button_proxy_parent_class)->finalize (object);
26389 }
26390 
26391 static void
26392 button_proxy_get_property (GObject      *object,
26393   guint         prop_id,
26394   GValue       *value,
26395   GParamSpec   *pspec G_GNUC_UNUSED)
26396 {
26397   const _ExtendedGDBusPropertyInfo *info;
26398   GVariant *variant;
26399   g_assert (prop_id != 0 && prop_id - 1 < 2);
26400   info = _button_property_info_pointers[prop_id - 1];
26401   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
26402   if (info->use_gvariant)
26403     {
26404       g_value_set_variant (value, variant);
26405     }
26406   else
26407     {
26408       if (variant != NULL)
26409         g_dbus_gvariant_to_gvalue (variant, value);
26410     }
26411   if (variant != NULL)
26412     g_variant_unref (variant);
26413 }
26414 
26415 static void
26416 button_proxy_set_property_cb (GDBusProxy *proxy,
26417   GAsyncResult *res,
26418   gpointer      user_data)
26419 {
26420   const _ExtendedGDBusPropertyInfo *info = user_data;
26421   GError *error;
26422   GVariant *_ret;
26423   error = NULL;
26424   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
26425   if (!_ret)
26426     {
26427       g_warning ("Error setting property '%s' on interface org.openbmc.Button: %s (%s, %d)",
26428                  info->parent_struct.name,
26429                  error->message, g_quark_to_string (error->domain), error->code);
26430       g_error_free (error);
26431     }
26432   else
26433     {
26434       g_variant_unref (_ret);
26435     }
26436 }
26437 
26438 static void
26439 button_proxy_set_property (GObject      *object,
26440   guint         prop_id,
26441   const GValue *value,
26442   GParamSpec   *pspec G_GNUC_UNUSED)
26443 {
26444   const _ExtendedGDBusPropertyInfo *info;
26445   GVariant *variant;
26446   g_assert (prop_id != 0 && prop_id - 1 < 2);
26447   info = _button_property_info_pointers[prop_id - 1];
26448   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
26449   g_dbus_proxy_call (G_DBUS_PROXY (object),
26450     "org.freedesktop.DBus.Properties.Set",
26451     g_variant_new ("(ssv)", "org.openbmc.Button", info->parent_struct.name, variant),
26452     G_DBUS_CALL_FLAGS_NONE,
26453     -1,
26454     NULL, (GAsyncReadyCallback) button_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
26455   g_variant_unref (variant);
26456 }
26457 
26458 static void
26459 button_proxy_g_signal (GDBusProxy *proxy,
26460   const gchar *sender_name G_GNUC_UNUSED,
26461   const gchar *signal_name,
26462   GVariant *parameters)
26463 {
26464   _ExtendedGDBusSignalInfo *info;
26465   GVariantIter iter;
26466   GVariant *child;
26467   GValue *paramv;
26468   guint num_params;
26469   guint n;
26470   guint signal_id;
26471   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_button_interface_info.parent_struct, signal_name);
26472   if (info == NULL)
26473     return;
26474   num_params = g_variant_n_children (parameters);
26475   paramv = g_new0 (GValue, num_params + 1);
26476   g_value_init (&paramv[0], TYPE_BUTTON);
26477   g_value_set_object (&paramv[0], proxy);
26478   g_variant_iter_init (&iter, parameters);
26479   n = 1;
26480   while ((child = g_variant_iter_next_value (&iter)) != NULL)
26481     {
26482       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
26483       if (arg_info->use_gvariant)
26484         {
26485           g_value_init (&paramv[n], G_TYPE_VARIANT);
26486           g_value_set_variant (&paramv[n], child);
26487           n++;
26488         }
26489       else
26490         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
26491       g_variant_unref (child);
26492     }
26493   signal_id = g_signal_lookup (info->signal_name, TYPE_BUTTON);
26494   g_signal_emitv (paramv, signal_id, 0, NULL);
26495   for (n = 0; n < num_params + 1; n++)
26496     g_value_unset (&paramv[n]);
26497   g_free (paramv);
26498 }
26499 
26500 static void
26501 button_proxy_g_properties_changed (GDBusProxy *_proxy,
26502   GVariant *changed_properties,
26503   const gchar *const *invalidated_properties)
26504 {
26505   ButtonProxy *proxy = BUTTON_PROXY (_proxy);
26506   guint n;
26507   const gchar *key;
26508   GVariantIter *iter;
26509   _ExtendedGDBusPropertyInfo *info;
26510   g_variant_get (changed_properties, "a{sv}", &iter);
26511   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
26512     {
26513       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_button_interface_info.parent_struct, key);
26514       g_datalist_remove_data (&proxy->priv->qdata, key);
26515       if (info != NULL)
26516         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
26517     }
26518   g_variant_iter_free (iter);
26519   for (n = 0; invalidated_properties[n] != NULL; n++)
26520     {
26521       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_button_interface_info.parent_struct, invalidated_properties[n]);
26522       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
26523       if (info != NULL)
26524         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
26525     }
26526 }
26527 
26528 static gboolean
26529 button_proxy_get_state (Button *object)
26530 {
26531   ButtonProxy *proxy = BUTTON_PROXY (object);
26532   GVariant *variant;
26533   gboolean value = 0;
26534   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "state");
26535   if (variant != NULL)
26536     {
26537       value = g_variant_get_boolean (variant);
26538       g_variant_unref (variant);
26539     }
26540   return value;
26541 }
26542 
26543 static guint64
26544 button_proxy_get_timer (Button *object)
26545 {
26546   ButtonProxy *proxy = BUTTON_PROXY (object);
26547   GVariant *variant;
26548   guint64 value = 0;
26549   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "timer");
26550   if (variant != NULL)
26551     {
26552       value = g_variant_get_uint64 (variant);
26553       g_variant_unref (variant);
26554     }
26555   return value;
26556 }
26557 
26558 static void
26559 button_proxy_init (ButtonProxy *proxy)
26560 {
26561 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
26562   proxy->priv = button_proxy_get_instance_private (proxy);
26563 #else
26564   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_BUTTON_PROXY, ButtonProxyPrivate);
26565 #endif
26566 
26567   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), button_interface_info ());
26568 }
26569 
26570 static void
26571 button_proxy_class_init (ButtonProxyClass *klass)
26572 {
26573   GObjectClass *gobject_class;
26574   GDBusProxyClass *proxy_class;
26575 
26576   gobject_class = G_OBJECT_CLASS (klass);
26577   gobject_class->finalize     = button_proxy_finalize;
26578   gobject_class->get_property = button_proxy_get_property;
26579   gobject_class->set_property = button_proxy_set_property;
26580 
26581   proxy_class = G_DBUS_PROXY_CLASS (klass);
26582   proxy_class->g_signal = button_proxy_g_signal;
26583   proxy_class->g_properties_changed = button_proxy_g_properties_changed;
26584 
26585   button_override_properties (gobject_class, 1);
26586 
26587 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
26588   g_type_class_add_private (klass, sizeof (ButtonProxyPrivate));
26589 #endif
26590 }
26591 
26592 static void
26593 button_proxy_iface_init (ButtonIface *iface)
26594 {
26595   iface->get_state = button_proxy_get_state;
26596   iface->get_timer = button_proxy_get_timer;
26597 }
26598 
26599 /**
26600  * button_proxy_new:
26601  * @connection: A #GDBusConnection.
26602  * @flags: Flags from the #GDBusProxyFlags enumeration.
26603  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
26604  * @object_path: An object path.
26605  * @cancellable: (allow-none): A #GCancellable or %NULL.
26606  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
26607  * @user_data: User data to pass to @callback.
26608  *
26609  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Button.top_of_page">org.openbmc.Button</link>. See g_dbus_proxy_new() for more details.
26610  *
26611  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
26612  * You can then call button_proxy_new_finish() to get the result of the operation.
26613  *
26614  * See button_proxy_new_sync() for the synchronous, blocking version of this constructor.
26615  */
26616 void
26617 button_proxy_new (
26618     GDBusConnection     *connection,
26619     GDBusProxyFlags      flags,
26620     const gchar         *name,
26621     const gchar         *object_path,
26622     GCancellable        *cancellable,
26623     GAsyncReadyCallback  callback,
26624     gpointer             user_data)
26625 {
26626   g_async_initable_new_async (TYPE_BUTTON_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.openbmc.Button", NULL);
26627 }
26628 
26629 /**
26630  * button_proxy_new_finish:
26631  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to button_proxy_new().
26632  * @error: Return location for error or %NULL
26633  *
26634  * Finishes an operation started with button_proxy_new().
26635  *
26636  * Returns: (transfer full) (type ButtonProxy): The constructed proxy object or %NULL if @error is set.
26637  */
26638 Button *
26639 button_proxy_new_finish (
26640     GAsyncResult        *res,
26641     GError             **error)
26642 {
26643   GObject *ret;
26644   GObject *source_object;
26645   source_object = g_async_result_get_source_object (res);
26646   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
26647   g_object_unref (source_object);
26648   if (ret != NULL)
26649     return BUTTON (ret);
26650   else
26651     return NULL;
26652 }
26653 
26654 /**
26655  * button_proxy_new_sync:
26656  * @connection: A #GDBusConnection.
26657  * @flags: Flags from the #GDBusProxyFlags enumeration.
26658  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
26659  * @object_path: An object path.
26660  * @cancellable: (allow-none): A #GCancellable or %NULL.
26661  * @error: Return location for error or %NULL
26662  *
26663  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Button.top_of_page">org.openbmc.Button</link>. See g_dbus_proxy_new_sync() for more details.
26664  *
26665  * The calling thread is blocked until a reply is received.
26666  *
26667  * See button_proxy_new() for the asynchronous version of this constructor.
26668  *
26669  * Returns: (transfer full) (type ButtonProxy): The constructed proxy object or %NULL if @error is set.
26670  */
26671 Button *
26672 button_proxy_new_sync (
26673     GDBusConnection     *connection,
26674     GDBusProxyFlags      flags,
26675     const gchar         *name,
26676     const gchar         *object_path,
26677     GCancellable        *cancellable,
26678     GError             **error)
26679 {
26680   GInitable *ret;
26681   ret = g_initable_new (TYPE_BUTTON_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.Button", NULL);
26682   if (ret != NULL)
26683     return BUTTON (ret);
26684   else
26685     return NULL;
26686 }
26687 
26688 
26689 /**
26690  * button_proxy_new_for_bus:
26691  * @bus_type: A #GBusType.
26692  * @flags: Flags from the #GDBusProxyFlags enumeration.
26693  * @name: A bus name (well-known or unique).
26694  * @object_path: An object path.
26695  * @cancellable: (allow-none): A #GCancellable or %NULL.
26696  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
26697  * @user_data: User data to pass to @callback.
26698  *
26699  * Like button_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
26700  *
26701  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
26702  * You can then call button_proxy_new_for_bus_finish() to get the result of the operation.
26703  *
26704  * See button_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
26705  */
26706 void
26707 button_proxy_new_for_bus (
26708     GBusType             bus_type,
26709     GDBusProxyFlags      flags,
26710     const gchar         *name,
26711     const gchar         *object_path,
26712     GCancellable        *cancellable,
26713     GAsyncReadyCallback  callback,
26714     gpointer             user_data)
26715 {
26716   g_async_initable_new_async (TYPE_BUTTON_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.openbmc.Button", NULL);
26717 }
26718 
26719 /**
26720  * button_proxy_new_for_bus_finish:
26721  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to button_proxy_new_for_bus().
26722  * @error: Return location for error or %NULL
26723  *
26724  * Finishes an operation started with button_proxy_new_for_bus().
26725  *
26726  * Returns: (transfer full) (type ButtonProxy): The constructed proxy object or %NULL if @error is set.
26727  */
26728 Button *
26729 button_proxy_new_for_bus_finish (
26730     GAsyncResult        *res,
26731     GError             **error)
26732 {
26733   GObject *ret;
26734   GObject *source_object;
26735   source_object = g_async_result_get_source_object (res);
26736   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
26737   g_object_unref (source_object);
26738   if (ret != NULL)
26739     return BUTTON (ret);
26740   else
26741     return NULL;
26742 }
26743 
26744 /**
26745  * button_proxy_new_for_bus_sync:
26746  * @bus_type: A #GBusType.
26747  * @flags: Flags from the #GDBusProxyFlags enumeration.
26748  * @name: A bus name (well-known or unique).
26749  * @object_path: An object path.
26750  * @cancellable: (allow-none): A #GCancellable or %NULL.
26751  * @error: Return location for error or %NULL
26752  *
26753  * Like button_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
26754  *
26755  * The calling thread is blocked until a reply is received.
26756  *
26757  * See button_proxy_new_for_bus() for the asynchronous version of this constructor.
26758  *
26759  * Returns: (transfer full) (type ButtonProxy): The constructed proxy object or %NULL if @error is set.
26760  */
26761 Button *
26762 button_proxy_new_for_bus_sync (
26763     GBusType             bus_type,
26764     GDBusProxyFlags      flags,
26765     const gchar         *name,
26766     const gchar         *object_path,
26767     GCancellable        *cancellable,
26768     GError             **error)
26769 {
26770   GInitable *ret;
26771   ret = g_initable_new (TYPE_BUTTON_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.Button", NULL);
26772   if (ret != NULL)
26773     return BUTTON (ret);
26774   else
26775     return NULL;
26776 }
26777 
26778 
26779 /* ------------------------------------------------------------------------ */
26780 
26781 /**
26782  * ButtonSkeleton:
26783  *
26784  * The #ButtonSkeleton structure contains only private data and should only be accessed using the provided API.
26785  */
26786 
26787 /**
26788  * ButtonSkeletonClass:
26789  * @parent_class: The parent class.
26790  *
26791  * Class structure for #ButtonSkeleton.
26792  */
26793 
26794 struct _ButtonSkeletonPrivate
26795 {
26796   GValue *properties;
26797   GList *changed_properties;
26798   GSource *changed_properties_idle_source;
26799   GMainContext *context;
26800   GMutex lock;
26801 };
26802 
26803 static void
26804 _button_skeleton_handle_method_call (
26805   GDBusConnection *connection G_GNUC_UNUSED,
26806   const gchar *sender G_GNUC_UNUSED,
26807   const gchar *object_path G_GNUC_UNUSED,
26808   const gchar *interface_name,
26809   const gchar *method_name,
26810   GVariant *parameters,
26811   GDBusMethodInvocation *invocation,
26812   gpointer user_data)
26813 {
26814   ButtonSkeleton *skeleton = BUTTON_SKELETON (user_data);
26815   _ExtendedGDBusMethodInfo *info;
26816   GVariantIter iter;
26817   GVariant *child;
26818   GValue *paramv;
26819   guint num_params;
26820   guint num_extra;
26821   guint n;
26822   guint signal_id;
26823   GValue return_value = G_VALUE_INIT;
26824   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
26825   g_assert (info != NULL);
26826   num_params = g_variant_n_children (parameters);
26827   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
26828   n = 0;
26829   g_value_init (&paramv[n], TYPE_BUTTON);
26830   g_value_set_object (&paramv[n++], skeleton);
26831   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
26832   g_value_set_object (&paramv[n++], invocation);
26833   if (info->pass_fdlist)
26834     {
26835 #ifdef G_OS_UNIX
26836       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
26837       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
26838 #else
26839       g_assert_not_reached ();
26840 #endif
26841     }
26842   g_variant_iter_init (&iter, parameters);
26843   while ((child = g_variant_iter_next_value (&iter)) != NULL)
26844     {
26845       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
26846       if (arg_info->use_gvariant)
26847         {
26848           g_value_init (&paramv[n], G_TYPE_VARIANT);
26849           g_value_set_variant (&paramv[n], child);
26850           n++;
26851         }
26852       else
26853         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
26854       g_variant_unref (child);
26855     }
26856   signal_id = g_signal_lookup (info->signal_name, TYPE_BUTTON);
26857   g_value_init (&return_value, G_TYPE_BOOLEAN);
26858   g_signal_emitv (paramv, signal_id, 0, &return_value);
26859   if (!g_value_get_boolean (&return_value))
26860     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);
26861   g_value_unset (&return_value);
26862   for (n = 0; n < num_params + num_extra; n++)
26863     g_value_unset (&paramv[n]);
26864   g_free (paramv);
26865 }
26866 
26867 static GVariant *
26868 _button_skeleton_handle_get_property (
26869   GDBusConnection *connection G_GNUC_UNUSED,
26870   const gchar *sender G_GNUC_UNUSED,
26871   const gchar *object_path G_GNUC_UNUSED,
26872   const gchar *interface_name G_GNUC_UNUSED,
26873   const gchar *property_name,
26874   GError **error,
26875   gpointer user_data)
26876 {
26877   ButtonSkeleton *skeleton = BUTTON_SKELETON (user_data);
26878   GValue value = G_VALUE_INIT;
26879   GParamSpec *pspec;
26880   _ExtendedGDBusPropertyInfo *info;
26881   GVariant *ret;
26882   ret = NULL;
26883   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_button_interface_info.parent_struct, property_name);
26884   g_assert (info != NULL);
26885   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
26886   if (pspec == NULL)
26887     {
26888       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
26889     }
26890   else
26891     {
26892       g_value_init (&value, pspec->value_type);
26893       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
26894       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
26895       g_value_unset (&value);
26896     }
26897   return ret;
26898 }
26899 
26900 static gboolean
26901 _button_skeleton_handle_set_property (
26902   GDBusConnection *connection G_GNUC_UNUSED,
26903   const gchar *sender G_GNUC_UNUSED,
26904   const gchar *object_path G_GNUC_UNUSED,
26905   const gchar *interface_name G_GNUC_UNUSED,
26906   const gchar *property_name,
26907   GVariant *variant,
26908   GError **error,
26909   gpointer user_data)
26910 {
26911   ButtonSkeleton *skeleton = BUTTON_SKELETON (user_data);
26912   GValue value = G_VALUE_INIT;
26913   GParamSpec *pspec;
26914   _ExtendedGDBusPropertyInfo *info;
26915   gboolean ret;
26916   ret = FALSE;
26917   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_button_interface_info.parent_struct, property_name);
26918   g_assert (info != NULL);
26919   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
26920   if (pspec == NULL)
26921     {
26922       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
26923     }
26924   else
26925     {
26926       if (info->use_gvariant)
26927         g_value_set_variant (&value, variant);
26928       else
26929         g_dbus_gvariant_to_gvalue (variant, &value);
26930       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
26931       g_value_unset (&value);
26932       ret = TRUE;
26933     }
26934   return ret;
26935 }
26936 
26937 static const GDBusInterfaceVTable _button_skeleton_vtable =
26938 {
26939   _button_skeleton_handle_method_call,
26940   _button_skeleton_handle_get_property,
26941   _button_skeleton_handle_set_property,
26942   {NULL}
26943 };
26944 
26945 static GDBusInterfaceInfo *
26946 button_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
26947 {
26948   return button_interface_info ();
26949 }
26950 
26951 static GDBusInterfaceVTable *
26952 button_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
26953 {
26954   return (GDBusInterfaceVTable *) &_button_skeleton_vtable;
26955 }
26956 
26957 static GVariant *
26958 button_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
26959 {
26960   ButtonSkeleton *skeleton = BUTTON_SKELETON (_skeleton);
26961 
26962   GVariantBuilder builder;
26963   guint n;
26964   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
26965   if (_button_interface_info.parent_struct.properties == NULL)
26966     goto out;
26967   for (n = 0; _button_interface_info.parent_struct.properties[n] != NULL; n++)
26968     {
26969       GDBusPropertyInfo *info = _button_interface_info.parent_struct.properties[n];
26970       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
26971         {
26972           GVariant *value;
26973           value = _button_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.openbmc.Button", info->name, NULL, skeleton);
26974           if (value != NULL)
26975             {
26976               g_variant_take_ref (value);
26977               g_variant_builder_add (&builder, "{sv}", info->name, value);
26978               g_variant_unref (value);
26979             }
26980         }
26981     }
26982 out:
26983   return g_variant_builder_end (&builder);
26984 }
26985 
26986 static gboolean _button_emit_changed (gpointer user_data);
26987 
26988 static void
26989 button_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
26990 {
26991   ButtonSkeleton *skeleton = BUTTON_SKELETON (_skeleton);
26992   gboolean emit_changed = FALSE;
26993 
26994   g_mutex_lock (&skeleton->priv->lock);
26995   if (skeleton->priv->changed_properties_idle_source != NULL)
26996     {
26997       g_source_destroy (skeleton->priv->changed_properties_idle_source);
26998       skeleton->priv->changed_properties_idle_source = NULL;
26999       emit_changed = TRUE;
27000     }
27001   g_mutex_unlock (&skeleton->priv->lock);
27002 
27003   if (emit_changed)
27004     _button_emit_changed (skeleton);
27005 }
27006 
27007 static void
27008 _button_on_signal_released (
27009     Button *object)
27010 {
27011   ButtonSkeleton *skeleton = BUTTON_SKELETON (object);
27012 
27013   GList      *connections, *l;
27014   GVariant   *signal_variant;
27015   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
27016 
27017   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
27018   for (l = connections; l != NULL; l = l->next)
27019     {
27020       GDBusConnection *connection = l->data;
27021       g_dbus_connection_emit_signal (connection,
27022         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Button", "Released",
27023         signal_variant, NULL);
27024     }
27025   g_variant_unref (signal_variant);
27026   g_list_free_full (connections, g_object_unref);
27027 }
27028 
27029 static void
27030 _button_on_signal_pressed (
27031     Button *object)
27032 {
27033   ButtonSkeleton *skeleton = BUTTON_SKELETON (object);
27034 
27035   GList      *connections, *l;
27036   GVariant   *signal_variant;
27037   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
27038 
27039   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
27040   for (l = connections; l != NULL; l = l->next)
27041     {
27042       GDBusConnection *connection = l->data;
27043       g_dbus_connection_emit_signal (connection,
27044         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Button", "Pressed",
27045         signal_variant, NULL);
27046     }
27047   g_variant_unref (signal_variant);
27048   g_list_free_full (connections, g_object_unref);
27049 }
27050 
27051 static void
27052 _button_on_signal_pressed_long (
27053     Button *object)
27054 {
27055   ButtonSkeleton *skeleton = BUTTON_SKELETON (object);
27056 
27057   GList      *connections, *l;
27058   GVariant   *signal_variant;
27059   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
27060 
27061   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
27062   for (l = connections; l != NULL; l = l->next)
27063     {
27064       GDBusConnection *connection = l->data;
27065       g_dbus_connection_emit_signal (connection,
27066         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Button", "PressedLong",
27067         signal_variant, NULL);
27068     }
27069   g_variant_unref (signal_variant);
27070   g_list_free_full (connections, g_object_unref);
27071 }
27072 
27073 static void button_skeleton_iface_init (ButtonIface *iface);
27074 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
27075 G_DEFINE_TYPE_WITH_CODE (ButtonSkeleton, button_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
27076                          G_ADD_PRIVATE (ButtonSkeleton)
27077                          G_IMPLEMENT_INTERFACE (TYPE_BUTTON, button_skeleton_iface_init));
27078 
27079 #else
27080 G_DEFINE_TYPE_WITH_CODE (ButtonSkeleton, button_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
27081                          G_IMPLEMENT_INTERFACE (TYPE_BUTTON, button_skeleton_iface_init));
27082 
27083 #endif
27084 static void
27085 button_skeleton_finalize (GObject *object)
27086 {
27087   ButtonSkeleton *skeleton = BUTTON_SKELETON (object);
27088   guint n;
27089   for (n = 0; n < 2; n++)
27090     g_value_unset (&skeleton->priv->properties[n]);
27091   g_free (skeleton->priv->properties);
27092   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
27093   if (skeleton->priv->changed_properties_idle_source != NULL)
27094     g_source_destroy (skeleton->priv->changed_properties_idle_source);
27095   g_main_context_unref (skeleton->priv->context);
27096   g_mutex_clear (&skeleton->priv->lock);
27097   G_OBJECT_CLASS (button_skeleton_parent_class)->finalize (object);
27098 }
27099 
27100 static void
27101 button_skeleton_get_property (GObject      *object,
27102   guint         prop_id,
27103   GValue       *value,
27104   GParamSpec   *pspec G_GNUC_UNUSED)
27105 {
27106   ButtonSkeleton *skeleton = BUTTON_SKELETON (object);
27107   g_assert (prop_id != 0 && prop_id - 1 < 2);
27108   g_mutex_lock (&skeleton->priv->lock);
27109   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
27110   g_mutex_unlock (&skeleton->priv->lock);
27111 }
27112 
27113 static gboolean
27114 _button_emit_changed (gpointer user_data)
27115 {
27116   ButtonSkeleton *skeleton = BUTTON_SKELETON (user_data);
27117   GList *l;
27118   GVariantBuilder builder;
27119   GVariantBuilder invalidated_builder;
27120   guint num_changes;
27121 
27122   g_mutex_lock (&skeleton->priv->lock);
27123   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
27124   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
27125   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
27126     {
27127       ChangedProperty *cp = l->data;
27128       GVariant *variant;
27129       const GValue *cur_value;
27130 
27131       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
27132       if (!_g_value_equal (cur_value, &cp->orig_value))
27133         {
27134           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
27135           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
27136           g_variant_unref (variant);
27137           num_changes++;
27138         }
27139     }
27140   if (num_changes > 0)
27141     {
27142       GList *connections, *ll;
27143       GVariant *signal_variant;
27144       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.Button",
27145                                            &builder, &invalidated_builder));
27146       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
27147       for (ll = connections; ll != NULL; ll = ll->next)
27148         {
27149           GDBusConnection *connection = ll->data;
27150 
27151           g_dbus_connection_emit_signal (connection,
27152                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
27153                                          "org.freedesktop.DBus.Properties",
27154                                          "PropertiesChanged",
27155                                          signal_variant,
27156                                          NULL);
27157         }
27158       g_variant_unref (signal_variant);
27159       g_list_free_full (connections, g_object_unref);
27160     }
27161   else
27162     {
27163       g_variant_builder_clear (&builder);
27164       g_variant_builder_clear (&invalidated_builder);
27165     }
27166   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
27167   skeleton->priv->changed_properties = NULL;
27168   skeleton->priv->changed_properties_idle_source = NULL;
27169   g_mutex_unlock (&skeleton->priv->lock);
27170   return FALSE;
27171 }
27172 
27173 static void
27174 _button_schedule_emit_changed (ButtonSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
27175 {
27176   ChangedProperty *cp;
27177   GList *l;
27178   cp = NULL;
27179   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
27180     {
27181       ChangedProperty *i_cp = l->data;
27182       if (i_cp->info == info)
27183         {
27184           cp = i_cp;
27185           break;
27186         }
27187     }
27188   if (cp == NULL)
27189     {
27190       cp = g_new0 (ChangedProperty, 1);
27191       cp->prop_id = prop_id;
27192       cp->info = info;
27193       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
27194       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
27195       g_value_copy (orig_value, &cp->orig_value);
27196     }
27197 }
27198 
27199 static void
27200 button_skeleton_notify (GObject      *object,
27201   GParamSpec *pspec G_GNUC_UNUSED)
27202 {
27203   ButtonSkeleton *skeleton = BUTTON_SKELETON (object);
27204   g_mutex_lock (&skeleton->priv->lock);
27205   if (skeleton->priv->changed_properties != NULL &&
27206       skeleton->priv->changed_properties_idle_source == NULL)
27207     {
27208       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
27209       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
27210       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _button_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
27211       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
27212       g_source_unref (skeleton->priv->changed_properties_idle_source);
27213     }
27214   g_mutex_unlock (&skeleton->priv->lock);
27215 }
27216 
27217 static void
27218 button_skeleton_set_property (GObject      *object,
27219   guint         prop_id,
27220   const GValue *value,
27221   GParamSpec   *pspec)
27222 {
27223   ButtonSkeleton *skeleton = BUTTON_SKELETON (object);
27224   g_assert (prop_id != 0 && prop_id - 1 < 2);
27225   g_mutex_lock (&skeleton->priv->lock);
27226   g_object_freeze_notify (object);
27227   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
27228     {
27229       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
27230         _button_schedule_emit_changed (skeleton, _button_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
27231       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
27232       g_object_notify_by_pspec (object, pspec);
27233     }
27234   g_mutex_unlock (&skeleton->priv->lock);
27235   g_object_thaw_notify (object);
27236 }
27237 
27238 static void
27239 button_skeleton_init (ButtonSkeleton *skeleton)
27240 {
27241 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
27242   skeleton->priv = button_skeleton_get_instance_private (skeleton);
27243 #else
27244   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_BUTTON_SKELETON, ButtonSkeletonPrivate);
27245 #endif
27246 
27247   g_mutex_init (&skeleton->priv->lock);
27248   skeleton->priv->context = g_main_context_ref_thread_default ();
27249   skeleton->priv->properties = g_new0 (GValue, 2);
27250   g_value_init (&skeleton->priv->properties[0], G_TYPE_BOOLEAN);
27251   g_value_init (&skeleton->priv->properties[1], G_TYPE_UINT64);
27252 }
27253 
27254 static gboolean
27255 button_skeleton_get_state (Button *object)
27256 {
27257   ButtonSkeleton *skeleton = BUTTON_SKELETON (object);
27258   gboolean value;
27259   g_mutex_lock (&skeleton->priv->lock);
27260   value = g_value_get_boolean (&(skeleton->priv->properties[0]));
27261   g_mutex_unlock (&skeleton->priv->lock);
27262   return value;
27263 }
27264 
27265 static guint64
27266 button_skeleton_get_timer (Button *object)
27267 {
27268   ButtonSkeleton *skeleton = BUTTON_SKELETON (object);
27269   guint64 value;
27270   g_mutex_lock (&skeleton->priv->lock);
27271   value = g_value_get_uint64 (&(skeleton->priv->properties[1]));
27272   g_mutex_unlock (&skeleton->priv->lock);
27273   return value;
27274 }
27275 
27276 static void
27277 button_skeleton_class_init (ButtonSkeletonClass *klass)
27278 {
27279   GObjectClass *gobject_class;
27280   GDBusInterfaceSkeletonClass *skeleton_class;
27281 
27282   gobject_class = G_OBJECT_CLASS (klass);
27283   gobject_class->finalize = button_skeleton_finalize;
27284   gobject_class->get_property = button_skeleton_get_property;
27285   gobject_class->set_property = button_skeleton_set_property;
27286   gobject_class->notify       = button_skeleton_notify;
27287 
27288 
27289   button_override_properties (gobject_class, 1);
27290 
27291   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
27292   skeleton_class->get_info = button_skeleton_dbus_interface_get_info;
27293   skeleton_class->get_properties = button_skeleton_dbus_interface_get_properties;
27294   skeleton_class->flush = button_skeleton_dbus_interface_flush;
27295   skeleton_class->get_vtable = button_skeleton_dbus_interface_get_vtable;
27296 
27297 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
27298   g_type_class_add_private (klass, sizeof (ButtonSkeletonPrivate));
27299 #endif
27300 }
27301 
27302 static void
27303 button_skeleton_iface_init (ButtonIface *iface)
27304 {
27305   iface->released = _button_on_signal_released;
27306   iface->pressed = _button_on_signal_pressed;
27307   iface->pressed_long = _button_on_signal_pressed_long;
27308   iface->get_state = button_skeleton_get_state;
27309   iface->get_timer = button_skeleton_get_timer;
27310 }
27311 
27312 /**
27313  * button_skeleton_new:
27314  *
27315  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Button.top_of_page">org.openbmc.Button</link>.
27316  *
27317  * Returns: (transfer full) (type ButtonSkeleton): The skeleton object.
27318  */
27319 Button *
27320 button_skeleton_new (void)
27321 {
27322   return BUTTON (g_object_new (TYPE_BUTTON_SKELETON, NULL));
27323 }
27324 
27325 /* ------------------------------------------------------------------------
27326  * Code for interface org.openbmc.Led
27327  * ------------------------------------------------------------------------
27328  */
27329 
27330 /**
27331  * SECTION:Led
27332  * @title: Led
27333  * @short_description: Generated C code for the org.openbmc.Led D-Bus interface
27334  *
27335  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-Led.top_of_page">org.openbmc.Led</link> D-Bus interface in C.
27336  */
27337 
27338 /* ---- Introspection data for org.openbmc.Led ---- */
27339 
27340 static const _ExtendedGDBusMethodInfo _led_method_info_set_on =
27341 {
27342   {
27343     -1,
27344     (gchar *) "setOn",
27345     NULL,
27346     NULL,
27347     NULL
27348   },
27349   "handle-set-on",
27350   FALSE
27351 };
27352 
27353 static const _ExtendedGDBusMethodInfo _led_method_info_set_off =
27354 {
27355   {
27356     -1,
27357     (gchar *) "setOff",
27358     NULL,
27359     NULL,
27360     NULL
27361   },
27362   "handle-set-off",
27363   FALSE
27364 };
27365 
27366 static const _ExtendedGDBusMethodInfo _led_method_info_set_blink_slow =
27367 {
27368   {
27369     -1,
27370     (gchar *) "setBlinkSlow",
27371     NULL,
27372     NULL,
27373     NULL
27374   },
27375   "handle-set-blink-slow",
27376   FALSE
27377 };
27378 
27379 static const _ExtendedGDBusMethodInfo _led_method_info_set_blink_fast =
27380 {
27381   {
27382     -1,
27383     (gchar *) "setBlinkFast",
27384     NULL,
27385     NULL,
27386     NULL
27387   },
27388   "handle-set-blink-fast",
27389   FALSE
27390 };
27391 
27392 static const _ExtendedGDBusMethodInfo * const _led_method_info_pointers[] =
27393 {
27394   &_led_method_info_set_on,
27395   &_led_method_info_set_off,
27396   &_led_method_info_set_blink_slow,
27397   &_led_method_info_set_blink_fast,
27398   NULL
27399 };
27400 
27401 static const _ExtendedGDBusPropertyInfo _led_property_info_color =
27402 {
27403   {
27404     -1,
27405     (gchar *) "color",
27406     (gchar *) "i",
27407     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
27408     NULL
27409   },
27410   "color",
27411   FALSE
27412 };
27413 
27414 static const _ExtendedGDBusPropertyInfo _led_property_info_function =
27415 {
27416   {
27417     -1,
27418     (gchar *) "function",
27419     (gchar *) "s",
27420     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
27421     NULL
27422   },
27423   "function",
27424   FALSE
27425 };
27426 
27427 static const _ExtendedGDBusPropertyInfo _led_property_info_state =
27428 {
27429   {
27430     -1,
27431     (gchar *) "state",
27432     (gchar *) "s",
27433     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
27434     NULL
27435   },
27436   "state",
27437   FALSE
27438 };
27439 
27440 static const _ExtendedGDBusPropertyInfo * const _led_property_info_pointers[] =
27441 {
27442   &_led_property_info_color,
27443   &_led_property_info_function,
27444   &_led_property_info_state,
27445   NULL
27446 };
27447 
27448 static const _ExtendedGDBusInterfaceInfo _led_interface_info =
27449 {
27450   {
27451     -1,
27452     (gchar *) "org.openbmc.Led",
27453     (GDBusMethodInfo **) &_led_method_info_pointers,
27454     NULL,
27455     (GDBusPropertyInfo **) &_led_property_info_pointers,
27456     NULL
27457   },
27458   "led",
27459 };
27460 
27461 
27462 /**
27463  * led_interface_info:
27464  *
27465  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-Led.top_of_page">org.openbmc.Led</link> D-Bus interface.
27466  *
27467  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
27468  */
27469 GDBusInterfaceInfo *
27470 led_interface_info (void)
27471 {
27472   return (GDBusInterfaceInfo *) &_led_interface_info.parent_struct;
27473 }
27474 
27475 /**
27476  * led_override_properties:
27477  * @klass: The class structure for a #GObject<!-- -->-derived class.
27478  * @property_id_begin: The property id to assign to the first overridden property.
27479  *
27480  * Overrides all #GObject properties in the #Led interface for a concrete class.
27481  * The properties are overridden in the order they are defined.
27482  *
27483  * Returns: The last property id.
27484  */
27485 guint
27486 led_override_properties (GObjectClass *klass, guint property_id_begin)
27487 {
27488   g_object_class_override_property (klass, property_id_begin++, "color");
27489   g_object_class_override_property (klass, property_id_begin++, "function");
27490   g_object_class_override_property (klass, property_id_begin++, "state");
27491   return property_id_begin - 1;
27492 }
27493 
27494 
27495 
27496 /**
27497  * Led:
27498  *
27499  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Led.top_of_page">org.openbmc.Led</link>.
27500  */
27501 
27502 /**
27503  * LedIface:
27504  * @parent_iface: The parent interface.
27505  * @handle_set_blink_fast: Handler for the #Led::handle-set-blink-fast signal.
27506  * @handle_set_blink_slow: Handler for the #Led::handle-set-blink-slow signal.
27507  * @handle_set_off: Handler for the #Led::handle-set-off signal.
27508  * @handle_set_on: Handler for the #Led::handle-set-on signal.
27509  * @get_color: Getter for the #Led:color property.
27510  * @get_function: Getter for the #Led:function property.
27511  * @get_state: Getter for the #Led:state property.
27512  *
27513  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Led.top_of_page">org.openbmc.Led</link>.
27514  */
27515 
27516 typedef LedIface LedInterface;
27517 G_DEFINE_INTERFACE (Led, led, G_TYPE_OBJECT);
27518 
27519 static void
27520 led_default_init (LedIface *iface)
27521 {
27522   /* GObject signals for incoming D-Bus method calls: */
27523   /**
27524    * Led::handle-set-on:
27525    * @object: A #Led.
27526    * @invocation: A #GDBusMethodInvocation.
27527    *
27528    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Led.setOn">setOn()</link> D-Bus method.
27529    *
27530    * 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 led_complete_set_on() 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.
27531    *
27532    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
27533    */
27534   g_signal_new ("handle-set-on",
27535     G_TYPE_FROM_INTERFACE (iface),
27536     G_SIGNAL_RUN_LAST,
27537     G_STRUCT_OFFSET (LedIface, handle_set_on),
27538     g_signal_accumulator_true_handled,
27539     NULL,
27540     g_cclosure_marshal_generic,
27541     G_TYPE_BOOLEAN,
27542     1,
27543     G_TYPE_DBUS_METHOD_INVOCATION);
27544 
27545   /**
27546    * Led::handle-set-off:
27547    * @object: A #Led.
27548    * @invocation: A #GDBusMethodInvocation.
27549    *
27550    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Led.setOff">setOff()</link> D-Bus method.
27551    *
27552    * 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 led_complete_set_off() 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.
27553    *
27554    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
27555    */
27556   g_signal_new ("handle-set-off",
27557     G_TYPE_FROM_INTERFACE (iface),
27558     G_SIGNAL_RUN_LAST,
27559     G_STRUCT_OFFSET (LedIface, handle_set_off),
27560     g_signal_accumulator_true_handled,
27561     NULL,
27562     g_cclosure_marshal_generic,
27563     G_TYPE_BOOLEAN,
27564     1,
27565     G_TYPE_DBUS_METHOD_INVOCATION);
27566 
27567   /**
27568    * Led::handle-set-blink-slow:
27569    * @object: A #Led.
27570    * @invocation: A #GDBusMethodInvocation.
27571    *
27572    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Led.setBlinkSlow">setBlinkSlow()</link> D-Bus method.
27573    *
27574    * 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 led_complete_set_blink_slow() 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.
27575    *
27576    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
27577    */
27578   g_signal_new ("handle-set-blink-slow",
27579     G_TYPE_FROM_INTERFACE (iface),
27580     G_SIGNAL_RUN_LAST,
27581     G_STRUCT_OFFSET (LedIface, handle_set_blink_slow),
27582     g_signal_accumulator_true_handled,
27583     NULL,
27584     g_cclosure_marshal_generic,
27585     G_TYPE_BOOLEAN,
27586     1,
27587     G_TYPE_DBUS_METHOD_INVOCATION);
27588 
27589   /**
27590    * Led::handle-set-blink-fast:
27591    * @object: A #Led.
27592    * @invocation: A #GDBusMethodInvocation.
27593    *
27594    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-Led.setBlinkFast">setBlinkFast()</link> D-Bus method.
27595    *
27596    * 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 led_complete_set_blink_fast() 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.
27597    *
27598    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
27599    */
27600   g_signal_new ("handle-set-blink-fast",
27601     G_TYPE_FROM_INTERFACE (iface),
27602     G_SIGNAL_RUN_LAST,
27603     G_STRUCT_OFFSET (LedIface, handle_set_blink_fast),
27604     g_signal_accumulator_true_handled,
27605     NULL,
27606     g_cclosure_marshal_generic,
27607     G_TYPE_BOOLEAN,
27608     1,
27609     G_TYPE_DBUS_METHOD_INVOCATION);
27610 
27611   /* GObject properties for D-Bus properties: */
27612   /**
27613    * Led:color:
27614    *
27615    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Led.color">"color"</link>.
27616    *
27617    * 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.
27618    */
27619   g_object_interface_install_property (iface,
27620     g_param_spec_int ("color", "color", "color", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
27621   /**
27622    * Led:function:
27623    *
27624    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Led.function">"function"</link>.
27625    *
27626    * 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.
27627    */
27628   g_object_interface_install_property (iface,
27629     g_param_spec_string ("function", "function", "function", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
27630   /**
27631    * Led:state:
27632    *
27633    * Represents the D-Bus property <link linkend="gdbus-property-org-openbmc-Led.state">"state"</link>.
27634    *
27635    * 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.
27636    */
27637   g_object_interface_install_property (iface,
27638     g_param_spec_string ("state", "state", "state", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
27639 }
27640 
27641 /**
27642  * led_get_color: (skip)
27643  * @object: A #Led.
27644  *
27645  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Led.color">"color"</link> D-Bus property.
27646  *
27647  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
27648  *
27649  * Returns: The property value.
27650  */
27651 gint
27652 led_get_color (Led *object)
27653 {
27654   return LED_GET_IFACE (object)->get_color (object);
27655 }
27656 
27657 /**
27658  * led_set_color: (skip)
27659  * @object: A #Led.
27660  * @value: The value to set.
27661  *
27662  * Sets the <link linkend="gdbus-property-org-openbmc-Led.color">"color"</link> D-Bus property to @value.
27663  *
27664  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
27665  */
27666 void
27667 led_set_color (Led *object, gint value)
27668 {
27669   g_object_set (G_OBJECT (object), "color", value, NULL);
27670 }
27671 
27672 /**
27673  * led_get_function: (skip)
27674  * @object: A #Led.
27675  *
27676  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Led.function">"function"</link> D-Bus property.
27677  *
27678  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
27679  *
27680  * <warning>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 led_dup_function() if on another thread.</warning>
27681  *
27682  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
27683  */
27684 const gchar *
27685 led_get_function (Led *object)
27686 {
27687   return LED_GET_IFACE (object)->get_function (object);
27688 }
27689 
27690 /**
27691  * led_dup_function: (skip)
27692  * @object: A #Led.
27693  *
27694  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-Led.function">"function"</link> D-Bus property.
27695  *
27696  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
27697  *
27698  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
27699  */
27700 gchar *
27701 led_dup_function (Led *object)
27702 {
27703   gchar *value;
27704   g_object_get (G_OBJECT (object), "function", &value, NULL);
27705   return value;
27706 }
27707 
27708 /**
27709  * led_set_function: (skip)
27710  * @object: A #Led.
27711  * @value: The value to set.
27712  *
27713  * Sets the <link linkend="gdbus-property-org-openbmc-Led.function">"function"</link> D-Bus property to @value.
27714  *
27715  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
27716  */
27717 void
27718 led_set_function (Led *object, const gchar *value)
27719 {
27720   g_object_set (G_OBJECT (object), "function", value, NULL);
27721 }
27722 
27723 /**
27724  * led_get_state: (skip)
27725  * @object: A #Led.
27726  *
27727  * Gets the value of the <link linkend="gdbus-property-org-openbmc-Led.state">"state"</link> D-Bus property.
27728  *
27729  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
27730  *
27731  * <warning>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 led_dup_state() if on another thread.</warning>
27732  *
27733  * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
27734  */
27735 const gchar *
27736 led_get_state (Led *object)
27737 {
27738   return LED_GET_IFACE (object)->get_state (object);
27739 }
27740 
27741 /**
27742  * led_dup_state: (skip)
27743  * @object: A #Led.
27744  *
27745  * Gets a copy of the <link linkend="gdbus-property-org-openbmc-Led.state">"state"</link> D-Bus property.
27746  *
27747  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
27748  *
27749  * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
27750  */
27751 gchar *
27752 led_dup_state (Led *object)
27753 {
27754   gchar *value;
27755   g_object_get (G_OBJECT (object), "state", &value, NULL);
27756   return value;
27757 }
27758 
27759 /**
27760  * led_set_state: (skip)
27761  * @object: A #Led.
27762  * @value: The value to set.
27763  *
27764  * Sets the <link linkend="gdbus-property-org-openbmc-Led.state">"state"</link> D-Bus property to @value.
27765  *
27766  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
27767  */
27768 void
27769 led_set_state (Led *object, const gchar *value)
27770 {
27771   g_object_set (G_OBJECT (object), "state", value, NULL);
27772 }
27773 
27774 /**
27775  * led_call_set_on:
27776  * @proxy: A #LedProxy.
27777  * @cancellable: (allow-none): A #GCancellable or %NULL.
27778  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
27779  * @user_data: User data to pass to @callback.
27780  *
27781  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Led.setOn">setOn()</link> D-Bus method on @proxy.
27782  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
27783  * You can then call led_call_set_on_finish() to get the result of the operation.
27784  *
27785  * See led_call_set_on_sync() for the synchronous, blocking version of this method.
27786  */
27787 void
27788 led_call_set_on (
27789     Led *proxy,
27790     GCancellable *cancellable,
27791     GAsyncReadyCallback callback,
27792     gpointer user_data)
27793 {
27794   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
27795     "setOn",
27796     g_variant_new ("()"),
27797     G_DBUS_CALL_FLAGS_NONE,
27798     -1,
27799     cancellable,
27800     callback,
27801     user_data);
27802 }
27803 
27804 /**
27805  * led_call_set_on_finish:
27806  * @proxy: A #LedProxy.
27807  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to led_call_set_on().
27808  * @error: Return location for error or %NULL.
27809  *
27810  * Finishes an operation started with led_call_set_on().
27811  *
27812  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
27813  */
27814 gboolean
27815 led_call_set_on_finish (
27816     Led *proxy,
27817     GAsyncResult *res,
27818     GError **error)
27819 {
27820   GVariant *_ret;
27821   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
27822   if (_ret == NULL)
27823     goto _out;
27824   g_variant_get (_ret,
27825                  "()");
27826   g_variant_unref (_ret);
27827 _out:
27828   return _ret != NULL;
27829 }
27830 
27831 /**
27832  * led_call_set_on_sync:
27833  * @proxy: A #LedProxy.
27834  * @cancellable: (allow-none): A #GCancellable or %NULL.
27835  * @error: Return location for error or %NULL.
27836  *
27837  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Led.setOn">setOn()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
27838  *
27839  * See led_call_set_on() for the asynchronous version of this method.
27840  *
27841  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
27842  */
27843 gboolean
27844 led_call_set_on_sync (
27845     Led *proxy,
27846     GCancellable *cancellable,
27847     GError **error)
27848 {
27849   GVariant *_ret;
27850   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
27851     "setOn",
27852     g_variant_new ("()"),
27853     G_DBUS_CALL_FLAGS_NONE,
27854     -1,
27855     cancellable,
27856     error);
27857   if (_ret == NULL)
27858     goto _out;
27859   g_variant_get (_ret,
27860                  "()");
27861   g_variant_unref (_ret);
27862 _out:
27863   return _ret != NULL;
27864 }
27865 
27866 /**
27867  * led_call_set_off:
27868  * @proxy: A #LedProxy.
27869  * @cancellable: (allow-none): A #GCancellable or %NULL.
27870  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
27871  * @user_data: User data to pass to @callback.
27872  *
27873  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Led.setOff">setOff()</link> D-Bus method on @proxy.
27874  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
27875  * You can then call led_call_set_off_finish() to get the result of the operation.
27876  *
27877  * See led_call_set_off_sync() for the synchronous, blocking version of this method.
27878  */
27879 void
27880 led_call_set_off (
27881     Led *proxy,
27882     GCancellable *cancellable,
27883     GAsyncReadyCallback callback,
27884     gpointer user_data)
27885 {
27886   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
27887     "setOff",
27888     g_variant_new ("()"),
27889     G_DBUS_CALL_FLAGS_NONE,
27890     -1,
27891     cancellable,
27892     callback,
27893     user_data);
27894 }
27895 
27896 /**
27897  * led_call_set_off_finish:
27898  * @proxy: A #LedProxy.
27899  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to led_call_set_off().
27900  * @error: Return location for error or %NULL.
27901  *
27902  * Finishes an operation started with led_call_set_off().
27903  *
27904  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
27905  */
27906 gboolean
27907 led_call_set_off_finish (
27908     Led *proxy,
27909     GAsyncResult *res,
27910     GError **error)
27911 {
27912   GVariant *_ret;
27913   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
27914   if (_ret == NULL)
27915     goto _out;
27916   g_variant_get (_ret,
27917                  "()");
27918   g_variant_unref (_ret);
27919 _out:
27920   return _ret != NULL;
27921 }
27922 
27923 /**
27924  * led_call_set_off_sync:
27925  * @proxy: A #LedProxy.
27926  * @cancellable: (allow-none): A #GCancellable or %NULL.
27927  * @error: Return location for error or %NULL.
27928  *
27929  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Led.setOff">setOff()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
27930  *
27931  * See led_call_set_off() for the asynchronous version of this method.
27932  *
27933  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
27934  */
27935 gboolean
27936 led_call_set_off_sync (
27937     Led *proxy,
27938     GCancellable *cancellable,
27939     GError **error)
27940 {
27941   GVariant *_ret;
27942   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
27943     "setOff",
27944     g_variant_new ("()"),
27945     G_DBUS_CALL_FLAGS_NONE,
27946     -1,
27947     cancellable,
27948     error);
27949   if (_ret == NULL)
27950     goto _out;
27951   g_variant_get (_ret,
27952                  "()");
27953   g_variant_unref (_ret);
27954 _out:
27955   return _ret != NULL;
27956 }
27957 
27958 /**
27959  * led_call_set_blink_slow:
27960  * @proxy: A #LedProxy.
27961  * @cancellable: (allow-none): A #GCancellable or %NULL.
27962  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
27963  * @user_data: User data to pass to @callback.
27964  *
27965  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Led.setBlinkSlow">setBlinkSlow()</link> D-Bus method on @proxy.
27966  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
27967  * You can then call led_call_set_blink_slow_finish() to get the result of the operation.
27968  *
27969  * See led_call_set_blink_slow_sync() for the synchronous, blocking version of this method.
27970  */
27971 void
27972 led_call_set_blink_slow (
27973     Led *proxy,
27974     GCancellable *cancellable,
27975     GAsyncReadyCallback callback,
27976     gpointer user_data)
27977 {
27978   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
27979     "setBlinkSlow",
27980     g_variant_new ("()"),
27981     G_DBUS_CALL_FLAGS_NONE,
27982     -1,
27983     cancellable,
27984     callback,
27985     user_data);
27986 }
27987 
27988 /**
27989  * led_call_set_blink_slow_finish:
27990  * @proxy: A #LedProxy.
27991  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to led_call_set_blink_slow().
27992  * @error: Return location for error or %NULL.
27993  *
27994  * Finishes an operation started with led_call_set_blink_slow().
27995  *
27996  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
27997  */
27998 gboolean
27999 led_call_set_blink_slow_finish (
28000     Led *proxy,
28001     GAsyncResult *res,
28002     GError **error)
28003 {
28004   GVariant *_ret;
28005   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
28006   if (_ret == NULL)
28007     goto _out;
28008   g_variant_get (_ret,
28009                  "()");
28010   g_variant_unref (_ret);
28011 _out:
28012   return _ret != NULL;
28013 }
28014 
28015 /**
28016  * led_call_set_blink_slow_sync:
28017  * @proxy: A #LedProxy.
28018  * @cancellable: (allow-none): A #GCancellable or %NULL.
28019  * @error: Return location for error or %NULL.
28020  *
28021  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Led.setBlinkSlow">setBlinkSlow()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
28022  *
28023  * See led_call_set_blink_slow() for the asynchronous version of this method.
28024  *
28025  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
28026  */
28027 gboolean
28028 led_call_set_blink_slow_sync (
28029     Led *proxy,
28030     GCancellable *cancellable,
28031     GError **error)
28032 {
28033   GVariant *_ret;
28034   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
28035     "setBlinkSlow",
28036     g_variant_new ("()"),
28037     G_DBUS_CALL_FLAGS_NONE,
28038     -1,
28039     cancellable,
28040     error);
28041   if (_ret == NULL)
28042     goto _out;
28043   g_variant_get (_ret,
28044                  "()");
28045   g_variant_unref (_ret);
28046 _out:
28047   return _ret != NULL;
28048 }
28049 
28050 /**
28051  * led_call_set_blink_fast:
28052  * @proxy: A #LedProxy.
28053  * @cancellable: (allow-none): A #GCancellable or %NULL.
28054  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
28055  * @user_data: User data to pass to @callback.
28056  *
28057  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-Led.setBlinkFast">setBlinkFast()</link> D-Bus method on @proxy.
28058  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
28059  * You can then call led_call_set_blink_fast_finish() to get the result of the operation.
28060  *
28061  * See led_call_set_blink_fast_sync() for the synchronous, blocking version of this method.
28062  */
28063 void
28064 led_call_set_blink_fast (
28065     Led *proxy,
28066     GCancellable *cancellable,
28067     GAsyncReadyCallback callback,
28068     gpointer user_data)
28069 {
28070   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
28071     "setBlinkFast",
28072     g_variant_new ("()"),
28073     G_DBUS_CALL_FLAGS_NONE,
28074     -1,
28075     cancellable,
28076     callback,
28077     user_data);
28078 }
28079 
28080 /**
28081  * led_call_set_blink_fast_finish:
28082  * @proxy: A #LedProxy.
28083  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to led_call_set_blink_fast().
28084  * @error: Return location for error or %NULL.
28085  *
28086  * Finishes an operation started with led_call_set_blink_fast().
28087  *
28088  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
28089  */
28090 gboolean
28091 led_call_set_blink_fast_finish (
28092     Led *proxy,
28093     GAsyncResult *res,
28094     GError **error)
28095 {
28096   GVariant *_ret;
28097   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
28098   if (_ret == NULL)
28099     goto _out;
28100   g_variant_get (_ret,
28101                  "()");
28102   g_variant_unref (_ret);
28103 _out:
28104   return _ret != NULL;
28105 }
28106 
28107 /**
28108  * led_call_set_blink_fast_sync:
28109  * @proxy: A #LedProxy.
28110  * @cancellable: (allow-none): A #GCancellable or %NULL.
28111  * @error: Return location for error or %NULL.
28112  *
28113  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-Led.setBlinkFast">setBlinkFast()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
28114  *
28115  * See led_call_set_blink_fast() for the asynchronous version of this method.
28116  *
28117  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
28118  */
28119 gboolean
28120 led_call_set_blink_fast_sync (
28121     Led *proxy,
28122     GCancellable *cancellable,
28123     GError **error)
28124 {
28125   GVariant *_ret;
28126   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
28127     "setBlinkFast",
28128     g_variant_new ("()"),
28129     G_DBUS_CALL_FLAGS_NONE,
28130     -1,
28131     cancellable,
28132     error);
28133   if (_ret == NULL)
28134     goto _out;
28135   g_variant_get (_ret,
28136                  "()");
28137   g_variant_unref (_ret);
28138 _out:
28139   return _ret != NULL;
28140 }
28141 
28142 /**
28143  * led_complete_set_on:
28144  * @object: A #Led.
28145  * @invocation: (transfer full): A #GDBusMethodInvocation.
28146  *
28147  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Led.setOn">setOn()</link> 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.
28148  *
28149  * This method will free @invocation, you cannot use it afterwards.
28150  */
28151 void
28152 led_complete_set_on (
28153     Led *object,
28154     GDBusMethodInvocation *invocation)
28155 {
28156   g_dbus_method_invocation_return_value (invocation,
28157     g_variant_new ("()"));
28158 }
28159 
28160 /**
28161  * led_complete_set_off:
28162  * @object: A #Led.
28163  * @invocation: (transfer full): A #GDBusMethodInvocation.
28164  *
28165  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Led.setOff">setOff()</link> 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.
28166  *
28167  * This method will free @invocation, you cannot use it afterwards.
28168  */
28169 void
28170 led_complete_set_off (
28171     Led *object,
28172     GDBusMethodInvocation *invocation)
28173 {
28174   g_dbus_method_invocation_return_value (invocation,
28175     g_variant_new ("()"));
28176 }
28177 
28178 /**
28179  * led_complete_set_blink_slow:
28180  * @object: A #Led.
28181  * @invocation: (transfer full): A #GDBusMethodInvocation.
28182  *
28183  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Led.setBlinkSlow">setBlinkSlow()</link> 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.
28184  *
28185  * This method will free @invocation, you cannot use it afterwards.
28186  */
28187 void
28188 led_complete_set_blink_slow (
28189     Led *object,
28190     GDBusMethodInvocation *invocation)
28191 {
28192   g_dbus_method_invocation_return_value (invocation,
28193     g_variant_new ("()"));
28194 }
28195 
28196 /**
28197  * led_complete_set_blink_fast:
28198  * @object: A #Led.
28199  * @invocation: (transfer full): A #GDBusMethodInvocation.
28200  *
28201  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-Led.setBlinkFast">setBlinkFast()</link> 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.
28202  *
28203  * This method will free @invocation, you cannot use it afterwards.
28204  */
28205 void
28206 led_complete_set_blink_fast (
28207     Led *object,
28208     GDBusMethodInvocation *invocation)
28209 {
28210   g_dbus_method_invocation_return_value (invocation,
28211     g_variant_new ("()"));
28212 }
28213 
28214 /* ------------------------------------------------------------------------ */
28215 
28216 /**
28217  * LedProxy:
28218  *
28219  * The #LedProxy structure contains only private data and should only be accessed using the provided API.
28220  */
28221 
28222 /**
28223  * LedProxyClass:
28224  * @parent_class: The parent class.
28225  *
28226  * Class structure for #LedProxy.
28227  */
28228 
28229 struct _LedProxyPrivate
28230 {
28231   GData *qdata;
28232 };
28233 
28234 static void led_proxy_iface_init (LedIface *iface);
28235 
28236 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
28237 G_DEFINE_TYPE_WITH_CODE (LedProxy, led_proxy, G_TYPE_DBUS_PROXY,
28238                          G_ADD_PRIVATE (LedProxy)
28239                          G_IMPLEMENT_INTERFACE (TYPE_LED, led_proxy_iface_init));
28240 
28241 #else
28242 G_DEFINE_TYPE_WITH_CODE (LedProxy, led_proxy, G_TYPE_DBUS_PROXY,
28243                          G_IMPLEMENT_INTERFACE (TYPE_LED, led_proxy_iface_init));
28244 
28245 #endif
28246 static void
28247 led_proxy_finalize (GObject *object)
28248 {
28249   LedProxy *proxy = LED_PROXY (object);
28250   g_datalist_clear (&proxy->priv->qdata);
28251   G_OBJECT_CLASS (led_proxy_parent_class)->finalize (object);
28252 }
28253 
28254 static void
28255 led_proxy_get_property (GObject      *object,
28256   guint         prop_id,
28257   GValue       *value,
28258   GParamSpec   *pspec G_GNUC_UNUSED)
28259 {
28260   const _ExtendedGDBusPropertyInfo *info;
28261   GVariant *variant;
28262   g_assert (prop_id != 0 && prop_id - 1 < 3);
28263   info = _led_property_info_pointers[prop_id - 1];
28264   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
28265   if (info->use_gvariant)
28266     {
28267       g_value_set_variant (value, variant);
28268     }
28269   else
28270     {
28271       if (variant != NULL)
28272         g_dbus_gvariant_to_gvalue (variant, value);
28273     }
28274   if (variant != NULL)
28275     g_variant_unref (variant);
28276 }
28277 
28278 static void
28279 led_proxy_set_property_cb (GDBusProxy *proxy,
28280   GAsyncResult *res,
28281   gpointer      user_data)
28282 {
28283   const _ExtendedGDBusPropertyInfo *info = user_data;
28284   GError *error;
28285   GVariant *_ret;
28286   error = NULL;
28287   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
28288   if (!_ret)
28289     {
28290       g_warning ("Error setting property '%s' on interface org.openbmc.Led: %s (%s, %d)",
28291                  info->parent_struct.name,
28292                  error->message, g_quark_to_string (error->domain), error->code);
28293       g_error_free (error);
28294     }
28295   else
28296     {
28297       g_variant_unref (_ret);
28298     }
28299 }
28300 
28301 static void
28302 led_proxy_set_property (GObject      *object,
28303   guint         prop_id,
28304   const GValue *value,
28305   GParamSpec   *pspec G_GNUC_UNUSED)
28306 {
28307   const _ExtendedGDBusPropertyInfo *info;
28308   GVariant *variant;
28309   g_assert (prop_id != 0 && prop_id - 1 < 3);
28310   info = _led_property_info_pointers[prop_id - 1];
28311   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
28312   g_dbus_proxy_call (G_DBUS_PROXY (object),
28313     "org.freedesktop.DBus.Properties.Set",
28314     g_variant_new ("(ssv)", "org.openbmc.Led", info->parent_struct.name, variant),
28315     G_DBUS_CALL_FLAGS_NONE,
28316     -1,
28317     NULL, (GAsyncReadyCallback) led_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
28318   g_variant_unref (variant);
28319 }
28320 
28321 static void
28322 led_proxy_g_signal (GDBusProxy *proxy,
28323   const gchar *sender_name G_GNUC_UNUSED,
28324   const gchar *signal_name,
28325   GVariant *parameters)
28326 {
28327   _ExtendedGDBusSignalInfo *info;
28328   GVariantIter iter;
28329   GVariant *child;
28330   GValue *paramv;
28331   guint num_params;
28332   guint n;
28333   guint signal_id;
28334   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_led_interface_info.parent_struct, signal_name);
28335   if (info == NULL)
28336     return;
28337   num_params = g_variant_n_children (parameters);
28338   paramv = g_new0 (GValue, num_params + 1);
28339   g_value_init (&paramv[0], TYPE_LED);
28340   g_value_set_object (&paramv[0], proxy);
28341   g_variant_iter_init (&iter, parameters);
28342   n = 1;
28343   while ((child = g_variant_iter_next_value (&iter)) != NULL)
28344     {
28345       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
28346       if (arg_info->use_gvariant)
28347         {
28348           g_value_init (&paramv[n], G_TYPE_VARIANT);
28349           g_value_set_variant (&paramv[n], child);
28350           n++;
28351         }
28352       else
28353         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
28354       g_variant_unref (child);
28355     }
28356   signal_id = g_signal_lookup (info->signal_name, TYPE_LED);
28357   g_signal_emitv (paramv, signal_id, 0, NULL);
28358   for (n = 0; n < num_params + 1; n++)
28359     g_value_unset (&paramv[n]);
28360   g_free (paramv);
28361 }
28362 
28363 static void
28364 led_proxy_g_properties_changed (GDBusProxy *_proxy,
28365   GVariant *changed_properties,
28366   const gchar *const *invalidated_properties)
28367 {
28368   LedProxy *proxy = LED_PROXY (_proxy);
28369   guint n;
28370   const gchar *key;
28371   GVariantIter *iter;
28372   _ExtendedGDBusPropertyInfo *info;
28373   g_variant_get (changed_properties, "a{sv}", &iter);
28374   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
28375     {
28376       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_led_interface_info.parent_struct, key);
28377       g_datalist_remove_data (&proxy->priv->qdata, key);
28378       if (info != NULL)
28379         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
28380     }
28381   g_variant_iter_free (iter);
28382   for (n = 0; invalidated_properties[n] != NULL; n++)
28383     {
28384       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_led_interface_info.parent_struct, invalidated_properties[n]);
28385       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
28386       if (info != NULL)
28387         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
28388     }
28389 }
28390 
28391 static gint
28392 led_proxy_get_color (Led *object)
28393 {
28394   LedProxy *proxy = LED_PROXY (object);
28395   GVariant *variant;
28396   gint value = 0;
28397   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "color");
28398   if (variant != NULL)
28399     {
28400       value = g_variant_get_int32 (variant);
28401       g_variant_unref (variant);
28402     }
28403   return value;
28404 }
28405 
28406 static const gchar *
28407 led_proxy_get_function (Led *object)
28408 {
28409   LedProxy *proxy = LED_PROXY (object);
28410   GVariant *variant;
28411   const gchar *value = NULL;
28412   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "function");
28413   if (variant != NULL)
28414     {
28415       value = g_variant_get_string (variant, NULL);
28416       g_variant_unref (variant);
28417     }
28418   return value;
28419 }
28420 
28421 static const gchar *
28422 led_proxy_get_state (Led *object)
28423 {
28424   LedProxy *proxy = LED_PROXY (object);
28425   GVariant *variant;
28426   const gchar *value = NULL;
28427   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "state");
28428   if (variant != NULL)
28429     {
28430       value = g_variant_get_string (variant, NULL);
28431       g_variant_unref (variant);
28432     }
28433   return value;
28434 }
28435 
28436 static void
28437 led_proxy_init (LedProxy *proxy)
28438 {
28439 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
28440   proxy->priv = led_proxy_get_instance_private (proxy);
28441 #else
28442   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_LED_PROXY, LedProxyPrivate);
28443 #endif
28444 
28445   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), led_interface_info ());
28446 }
28447 
28448 static void
28449 led_proxy_class_init (LedProxyClass *klass)
28450 {
28451   GObjectClass *gobject_class;
28452   GDBusProxyClass *proxy_class;
28453 
28454   gobject_class = G_OBJECT_CLASS (klass);
28455   gobject_class->finalize     = led_proxy_finalize;
28456   gobject_class->get_property = led_proxy_get_property;
28457   gobject_class->set_property = led_proxy_set_property;
28458 
28459   proxy_class = G_DBUS_PROXY_CLASS (klass);
28460   proxy_class->g_signal = led_proxy_g_signal;
28461   proxy_class->g_properties_changed = led_proxy_g_properties_changed;
28462 
28463   led_override_properties (gobject_class, 1);
28464 
28465 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
28466   g_type_class_add_private (klass, sizeof (LedProxyPrivate));
28467 #endif
28468 }
28469 
28470 static void
28471 led_proxy_iface_init (LedIface *iface)
28472 {
28473   iface->get_color = led_proxy_get_color;
28474   iface->get_function = led_proxy_get_function;
28475   iface->get_state = led_proxy_get_state;
28476 }
28477 
28478 /**
28479  * led_proxy_new:
28480  * @connection: A #GDBusConnection.
28481  * @flags: Flags from the #GDBusProxyFlags enumeration.
28482  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
28483  * @object_path: An object path.
28484  * @cancellable: (allow-none): A #GCancellable or %NULL.
28485  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
28486  * @user_data: User data to pass to @callback.
28487  *
28488  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Led.top_of_page">org.openbmc.Led</link>. See g_dbus_proxy_new() for more details.
28489  *
28490  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
28491  * You can then call led_proxy_new_finish() to get the result of the operation.
28492  *
28493  * See led_proxy_new_sync() for the synchronous, blocking version of this constructor.
28494  */
28495 void
28496 led_proxy_new (
28497     GDBusConnection     *connection,
28498     GDBusProxyFlags      flags,
28499     const gchar         *name,
28500     const gchar         *object_path,
28501     GCancellable        *cancellable,
28502     GAsyncReadyCallback  callback,
28503     gpointer             user_data)
28504 {
28505   g_async_initable_new_async (TYPE_LED_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.openbmc.Led", NULL);
28506 }
28507 
28508 /**
28509  * led_proxy_new_finish:
28510  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to led_proxy_new().
28511  * @error: Return location for error or %NULL
28512  *
28513  * Finishes an operation started with led_proxy_new().
28514  *
28515  * Returns: (transfer full) (type LedProxy): The constructed proxy object or %NULL if @error is set.
28516  */
28517 Led *
28518 led_proxy_new_finish (
28519     GAsyncResult        *res,
28520     GError             **error)
28521 {
28522   GObject *ret;
28523   GObject *source_object;
28524   source_object = g_async_result_get_source_object (res);
28525   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
28526   g_object_unref (source_object);
28527   if (ret != NULL)
28528     return LED (ret);
28529   else
28530     return NULL;
28531 }
28532 
28533 /**
28534  * led_proxy_new_sync:
28535  * @connection: A #GDBusConnection.
28536  * @flags: Flags from the #GDBusProxyFlags enumeration.
28537  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
28538  * @object_path: An object path.
28539  * @cancellable: (allow-none): A #GCancellable or %NULL.
28540  * @error: Return location for error or %NULL
28541  *
28542  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Led.top_of_page">org.openbmc.Led</link>. See g_dbus_proxy_new_sync() for more details.
28543  *
28544  * The calling thread is blocked until a reply is received.
28545  *
28546  * See led_proxy_new() for the asynchronous version of this constructor.
28547  *
28548  * Returns: (transfer full) (type LedProxy): The constructed proxy object or %NULL if @error is set.
28549  */
28550 Led *
28551 led_proxy_new_sync (
28552     GDBusConnection     *connection,
28553     GDBusProxyFlags      flags,
28554     const gchar         *name,
28555     const gchar         *object_path,
28556     GCancellable        *cancellable,
28557     GError             **error)
28558 {
28559   GInitable *ret;
28560   ret = g_initable_new (TYPE_LED_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.Led", NULL);
28561   if (ret != NULL)
28562     return LED (ret);
28563   else
28564     return NULL;
28565 }
28566 
28567 
28568 /**
28569  * led_proxy_new_for_bus:
28570  * @bus_type: A #GBusType.
28571  * @flags: Flags from the #GDBusProxyFlags enumeration.
28572  * @name: A bus name (well-known or unique).
28573  * @object_path: An object path.
28574  * @cancellable: (allow-none): A #GCancellable or %NULL.
28575  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
28576  * @user_data: User data to pass to @callback.
28577  *
28578  * Like led_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
28579  *
28580  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
28581  * You can then call led_proxy_new_for_bus_finish() to get the result of the operation.
28582  *
28583  * See led_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
28584  */
28585 void
28586 led_proxy_new_for_bus (
28587     GBusType             bus_type,
28588     GDBusProxyFlags      flags,
28589     const gchar         *name,
28590     const gchar         *object_path,
28591     GCancellable        *cancellable,
28592     GAsyncReadyCallback  callback,
28593     gpointer             user_data)
28594 {
28595   g_async_initable_new_async (TYPE_LED_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.openbmc.Led", NULL);
28596 }
28597 
28598 /**
28599  * led_proxy_new_for_bus_finish:
28600  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to led_proxy_new_for_bus().
28601  * @error: Return location for error or %NULL
28602  *
28603  * Finishes an operation started with led_proxy_new_for_bus().
28604  *
28605  * Returns: (transfer full) (type LedProxy): The constructed proxy object or %NULL if @error is set.
28606  */
28607 Led *
28608 led_proxy_new_for_bus_finish (
28609     GAsyncResult        *res,
28610     GError             **error)
28611 {
28612   GObject *ret;
28613   GObject *source_object;
28614   source_object = g_async_result_get_source_object (res);
28615   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
28616   g_object_unref (source_object);
28617   if (ret != NULL)
28618     return LED (ret);
28619   else
28620     return NULL;
28621 }
28622 
28623 /**
28624  * led_proxy_new_for_bus_sync:
28625  * @bus_type: A #GBusType.
28626  * @flags: Flags from the #GDBusProxyFlags enumeration.
28627  * @name: A bus name (well-known or unique).
28628  * @object_path: An object path.
28629  * @cancellable: (allow-none): A #GCancellable or %NULL.
28630  * @error: Return location for error or %NULL
28631  *
28632  * Like led_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
28633  *
28634  * The calling thread is blocked until a reply is received.
28635  *
28636  * See led_proxy_new_for_bus() for the asynchronous version of this constructor.
28637  *
28638  * Returns: (transfer full) (type LedProxy): The constructed proxy object or %NULL if @error is set.
28639  */
28640 Led *
28641 led_proxy_new_for_bus_sync (
28642     GBusType             bus_type,
28643     GDBusProxyFlags      flags,
28644     const gchar         *name,
28645     const gchar         *object_path,
28646     GCancellable        *cancellable,
28647     GError             **error)
28648 {
28649   GInitable *ret;
28650   ret = g_initable_new (TYPE_LED_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.Led", NULL);
28651   if (ret != NULL)
28652     return LED (ret);
28653   else
28654     return NULL;
28655 }
28656 
28657 
28658 /* ------------------------------------------------------------------------ */
28659 
28660 /**
28661  * LedSkeleton:
28662  *
28663  * The #LedSkeleton structure contains only private data and should only be accessed using the provided API.
28664  */
28665 
28666 /**
28667  * LedSkeletonClass:
28668  * @parent_class: The parent class.
28669  *
28670  * Class structure for #LedSkeleton.
28671  */
28672 
28673 struct _LedSkeletonPrivate
28674 {
28675   GValue *properties;
28676   GList *changed_properties;
28677   GSource *changed_properties_idle_source;
28678   GMainContext *context;
28679   GMutex lock;
28680 };
28681 
28682 static void
28683 _led_skeleton_handle_method_call (
28684   GDBusConnection *connection G_GNUC_UNUSED,
28685   const gchar *sender G_GNUC_UNUSED,
28686   const gchar *object_path G_GNUC_UNUSED,
28687   const gchar *interface_name,
28688   const gchar *method_name,
28689   GVariant *parameters,
28690   GDBusMethodInvocation *invocation,
28691   gpointer user_data)
28692 {
28693   LedSkeleton *skeleton = LED_SKELETON (user_data);
28694   _ExtendedGDBusMethodInfo *info;
28695   GVariantIter iter;
28696   GVariant *child;
28697   GValue *paramv;
28698   guint num_params;
28699   guint num_extra;
28700   guint n;
28701   guint signal_id;
28702   GValue return_value = G_VALUE_INIT;
28703   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
28704   g_assert (info != NULL);
28705   num_params = g_variant_n_children (parameters);
28706   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
28707   n = 0;
28708   g_value_init (&paramv[n], TYPE_LED);
28709   g_value_set_object (&paramv[n++], skeleton);
28710   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
28711   g_value_set_object (&paramv[n++], invocation);
28712   if (info->pass_fdlist)
28713     {
28714 #ifdef G_OS_UNIX
28715       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
28716       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
28717 #else
28718       g_assert_not_reached ();
28719 #endif
28720     }
28721   g_variant_iter_init (&iter, parameters);
28722   while ((child = g_variant_iter_next_value (&iter)) != NULL)
28723     {
28724       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
28725       if (arg_info->use_gvariant)
28726         {
28727           g_value_init (&paramv[n], G_TYPE_VARIANT);
28728           g_value_set_variant (&paramv[n], child);
28729           n++;
28730         }
28731       else
28732         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
28733       g_variant_unref (child);
28734     }
28735   signal_id = g_signal_lookup (info->signal_name, TYPE_LED);
28736   g_value_init (&return_value, G_TYPE_BOOLEAN);
28737   g_signal_emitv (paramv, signal_id, 0, &return_value);
28738   if (!g_value_get_boolean (&return_value))
28739     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);
28740   g_value_unset (&return_value);
28741   for (n = 0; n < num_params + num_extra; n++)
28742     g_value_unset (&paramv[n]);
28743   g_free (paramv);
28744 }
28745 
28746 static GVariant *
28747 _led_skeleton_handle_get_property (
28748   GDBusConnection *connection G_GNUC_UNUSED,
28749   const gchar *sender G_GNUC_UNUSED,
28750   const gchar *object_path G_GNUC_UNUSED,
28751   const gchar *interface_name G_GNUC_UNUSED,
28752   const gchar *property_name,
28753   GError **error,
28754   gpointer user_data)
28755 {
28756   LedSkeleton *skeleton = LED_SKELETON (user_data);
28757   GValue value = G_VALUE_INIT;
28758   GParamSpec *pspec;
28759   _ExtendedGDBusPropertyInfo *info;
28760   GVariant *ret;
28761   ret = NULL;
28762   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_led_interface_info.parent_struct, property_name);
28763   g_assert (info != NULL);
28764   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
28765   if (pspec == NULL)
28766     {
28767       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
28768     }
28769   else
28770     {
28771       g_value_init (&value, pspec->value_type);
28772       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
28773       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
28774       g_value_unset (&value);
28775     }
28776   return ret;
28777 }
28778 
28779 static gboolean
28780 _led_skeleton_handle_set_property (
28781   GDBusConnection *connection G_GNUC_UNUSED,
28782   const gchar *sender G_GNUC_UNUSED,
28783   const gchar *object_path G_GNUC_UNUSED,
28784   const gchar *interface_name G_GNUC_UNUSED,
28785   const gchar *property_name,
28786   GVariant *variant,
28787   GError **error,
28788   gpointer user_data)
28789 {
28790   LedSkeleton *skeleton = LED_SKELETON (user_data);
28791   GValue value = G_VALUE_INIT;
28792   GParamSpec *pspec;
28793   _ExtendedGDBusPropertyInfo *info;
28794   gboolean ret;
28795   ret = FALSE;
28796   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_led_interface_info.parent_struct, property_name);
28797   g_assert (info != NULL);
28798   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
28799   if (pspec == NULL)
28800     {
28801       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
28802     }
28803   else
28804     {
28805       if (info->use_gvariant)
28806         g_value_set_variant (&value, variant);
28807       else
28808         g_dbus_gvariant_to_gvalue (variant, &value);
28809       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
28810       g_value_unset (&value);
28811       ret = TRUE;
28812     }
28813   return ret;
28814 }
28815 
28816 static const GDBusInterfaceVTable _led_skeleton_vtable =
28817 {
28818   _led_skeleton_handle_method_call,
28819   _led_skeleton_handle_get_property,
28820   _led_skeleton_handle_set_property,
28821   {NULL}
28822 };
28823 
28824 static GDBusInterfaceInfo *
28825 led_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
28826 {
28827   return led_interface_info ();
28828 }
28829 
28830 static GDBusInterfaceVTable *
28831 led_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
28832 {
28833   return (GDBusInterfaceVTable *) &_led_skeleton_vtable;
28834 }
28835 
28836 static GVariant *
28837 led_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
28838 {
28839   LedSkeleton *skeleton = LED_SKELETON (_skeleton);
28840 
28841   GVariantBuilder builder;
28842   guint n;
28843   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
28844   if (_led_interface_info.parent_struct.properties == NULL)
28845     goto out;
28846   for (n = 0; _led_interface_info.parent_struct.properties[n] != NULL; n++)
28847     {
28848       GDBusPropertyInfo *info = _led_interface_info.parent_struct.properties[n];
28849       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
28850         {
28851           GVariant *value;
28852           value = _led_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.openbmc.Led", info->name, NULL, skeleton);
28853           if (value != NULL)
28854             {
28855               g_variant_take_ref (value);
28856               g_variant_builder_add (&builder, "{sv}", info->name, value);
28857               g_variant_unref (value);
28858             }
28859         }
28860     }
28861 out:
28862   return g_variant_builder_end (&builder);
28863 }
28864 
28865 static gboolean _led_emit_changed (gpointer user_data);
28866 
28867 static void
28868 led_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
28869 {
28870   LedSkeleton *skeleton = LED_SKELETON (_skeleton);
28871   gboolean emit_changed = FALSE;
28872 
28873   g_mutex_lock (&skeleton->priv->lock);
28874   if (skeleton->priv->changed_properties_idle_source != NULL)
28875     {
28876       g_source_destroy (skeleton->priv->changed_properties_idle_source);
28877       skeleton->priv->changed_properties_idle_source = NULL;
28878       emit_changed = TRUE;
28879     }
28880   g_mutex_unlock (&skeleton->priv->lock);
28881 
28882   if (emit_changed)
28883     _led_emit_changed (skeleton);
28884 }
28885 
28886 static void led_skeleton_iface_init (LedIface *iface);
28887 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
28888 G_DEFINE_TYPE_WITH_CODE (LedSkeleton, led_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
28889                          G_ADD_PRIVATE (LedSkeleton)
28890                          G_IMPLEMENT_INTERFACE (TYPE_LED, led_skeleton_iface_init));
28891 
28892 #else
28893 G_DEFINE_TYPE_WITH_CODE (LedSkeleton, led_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
28894                          G_IMPLEMENT_INTERFACE (TYPE_LED, led_skeleton_iface_init));
28895 
28896 #endif
28897 static void
28898 led_skeleton_finalize (GObject *object)
28899 {
28900   LedSkeleton *skeleton = LED_SKELETON (object);
28901   guint n;
28902   for (n = 0; n < 3; n++)
28903     g_value_unset (&skeleton->priv->properties[n]);
28904   g_free (skeleton->priv->properties);
28905   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
28906   if (skeleton->priv->changed_properties_idle_source != NULL)
28907     g_source_destroy (skeleton->priv->changed_properties_idle_source);
28908   g_main_context_unref (skeleton->priv->context);
28909   g_mutex_clear (&skeleton->priv->lock);
28910   G_OBJECT_CLASS (led_skeleton_parent_class)->finalize (object);
28911 }
28912 
28913 static void
28914 led_skeleton_get_property (GObject      *object,
28915   guint         prop_id,
28916   GValue       *value,
28917   GParamSpec   *pspec G_GNUC_UNUSED)
28918 {
28919   LedSkeleton *skeleton = LED_SKELETON (object);
28920   g_assert (prop_id != 0 && prop_id - 1 < 3);
28921   g_mutex_lock (&skeleton->priv->lock);
28922   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
28923   g_mutex_unlock (&skeleton->priv->lock);
28924 }
28925 
28926 static gboolean
28927 _led_emit_changed (gpointer user_data)
28928 {
28929   LedSkeleton *skeleton = LED_SKELETON (user_data);
28930   GList *l;
28931   GVariantBuilder builder;
28932   GVariantBuilder invalidated_builder;
28933   guint num_changes;
28934 
28935   g_mutex_lock (&skeleton->priv->lock);
28936   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
28937   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
28938   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
28939     {
28940       ChangedProperty *cp = l->data;
28941       GVariant *variant;
28942       const GValue *cur_value;
28943 
28944       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
28945       if (!_g_value_equal (cur_value, &cp->orig_value))
28946         {
28947           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
28948           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
28949           g_variant_unref (variant);
28950           num_changes++;
28951         }
28952     }
28953   if (num_changes > 0)
28954     {
28955       GList *connections, *ll;
28956       GVariant *signal_variant;
28957       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.openbmc.Led",
28958                                            &builder, &invalidated_builder));
28959       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
28960       for (ll = connections; ll != NULL; ll = ll->next)
28961         {
28962           GDBusConnection *connection = ll->data;
28963 
28964           g_dbus_connection_emit_signal (connection,
28965                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
28966                                          "org.freedesktop.DBus.Properties",
28967                                          "PropertiesChanged",
28968                                          signal_variant,
28969                                          NULL);
28970         }
28971       g_variant_unref (signal_variant);
28972       g_list_free_full (connections, g_object_unref);
28973     }
28974   else
28975     {
28976       g_variant_builder_clear (&builder);
28977       g_variant_builder_clear (&invalidated_builder);
28978     }
28979   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
28980   skeleton->priv->changed_properties = NULL;
28981   skeleton->priv->changed_properties_idle_source = NULL;
28982   g_mutex_unlock (&skeleton->priv->lock);
28983   return FALSE;
28984 }
28985 
28986 static void
28987 _led_schedule_emit_changed (LedSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
28988 {
28989   ChangedProperty *cp;
28990   GList *l;
28991   cp = NULL;
28992   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
28993     {
28994       ChangedProperty *i_cp = l->data;
28995       if (i_cp->info == info)
28996         {
28997           cp = i_cp;
28998           break;
28999         }
29000     }
29001   if (cp == NULL)
29002     {
29003       cp = g_new0 (ChangedProperty, 1);
29004       cp->prop_id = prop_id;
29005       cp->info = info;
29006       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
29007       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
29008       g_value_copy (orig_value, &cp->orig_value);
29009     }
29010 }
29011 
29012 static void
29013 led_skeleton_notify (GObject      *object,
29014   GParamSpec *pspec G_GNUC_UNUSED)
29015 {
29016   LedSkeleton *skeleton = LED_SKELETON (object);
29017   g_mutex_lock (&skeleton->priv->lock);
29018   if (skeleton->priv->changed_properties != NULL &&
29019       skeleton->priv->changed_properties_idle_source == NULL)
29020     {
29021       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
29022       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
29023       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _led_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
29024       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
29025       g_source_unref (skeleton->priv->changed_properties_idle_source);
29026     }
29027   g_mutex_unlock (&skeleton->priv->lock);
29028 }
29029 
29030 static void
29031 led_skeleton_set_property (GObject      *object,
29032   guint         prop_id,
29033   const GValue *value,
29034   GParamSpec   *pspec)
29035 {
29036   LedSkeleton *skeleton = LED_SKELETON (object);
29037   g_assert (prop_id != 0 && prop_id - 1 < 3);
29038   g_mutex_lock (&skeleton->priv->lock);
29039   g_object_freeze_notify (object);
29040   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
29041     {
29042       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
29043         _led_schedule_emit_changed (skeleton, _led_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
29044       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
29045       g_object_notify_by_pspec (object, pspec);
29046     }
29047   g_mutex_unlock (&skeleton->priv->lock);
29048   g_object_thaw_notify (object);
29049 }
29050 
29051 static void
29052 led_skeleton_init (LedSkeleton *skeleton)
29053 {
29054 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
29055   skeleton->priv = led_skeleton_get_instance_private (skeleton);
29056 #else
29057   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_LED_SKELETON, LedSkeletonPrivate);
29058 #endif
29059 
29060   g_mutex_init (&skeleton->priv->lock);
29061   skeleton->priv->context = g_main_context_ref_thread_default ();
29062   skeleton->priv->properties = g_new0 (GValue, 3);
29063   g_value_init (&skeleton->priv->properties[0], G_TYPE_INT);
29064   g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING);
29065   g_value_init (&skeleton->priv->properties[2], G_TYPE_STRING);
29066 }
29067 
29068 static gint
29069 led_skeleton_get_color (Led *object)
29070 {
29071   LedSkeleton *skeleton = LED_SKELETON (object);
29072   gint value;
29073   g_mutex_lock (&skeleton->priv->lock);
29074   value = g_value_get_int (&(skeleton->priv->properties[0]));
29075   g_mutex_unlock (&skeleton->priv->lock);
29076   return value;
29077 }
29078 
29079 static const gchar *
29080 led_skeleton_get_function (Led *object)
29081 {
29082   LedSkeleton *skeleton = LED_SKELETON (object);
29083   const gchar *value;
29084   g_mutex_lock (&skeleton->priv->lock);
29085   value = g_value_get_string (&(skeleton->priv->properties[1]));
29086   g_mutex_unlock (&skeleton->priv->lock);
29087   return value;
29088 }
29089 
29090 static const gchar *
29091 led_skeleton_get_state (Led *object)
29092 {
29093   LedSkeleton *skeleton = LED_SKELETON (object);
29094   const gchar *value;
29095   g_mutex_lock (&skeleton->priv->lock);
29096   value = g_value_get_string (&(skeleton->priv->properties[2]));
29097   g_mutex_unlock (&skeleton->priv->lock);
29098   return value;
29099 }
29100 
29101 static void
29102 led_skeleton_class_init (LedSkeletonClass *klass)
29103 {
29104   GObjectClass *gobject_class;
29105   GDBusInterfaceSkeletonClass *skeleton_class;
29106 
29107   gobject_class = G_OBJECT_CLASS (klass);
29108   gobject_class->finalize = led_skeleton_finalize;
29109   gobject_class->get_property = led_skeleton_get_property;
29110   gobject_class->set_property = led_skeleton_set_property;
29111   gobject_class->notify       = led_skeleton_notify;
29112 
29113 
29114   led_override_properties (gobject_class, 1);
29115 
29116   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
29117   skeleton_class->get_info = led_skeleton_dbus_interface_get_info;
29118   skeleton_class->get_properties = led_skeleton_dbus_interface_get_properties;
29119   skeleton_class->flush = led_skeleton_dbus_interface_flush;
29120   skeleton_class->get_vtable = led_skeleton_dbus_interface_get_vtable;
29121 
29122 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
29123   g_type_class_add_private (klass, sizeof (LedSkeletonPrivate));
29124 #endif
29125 }
29126 
29127 static void
29128 led_skeleton_iface_init (LedIface *iface)
29129 {
29130   iface->get_color = led_skeleton_get_color;
29131   iface->get_function = led_skeleton_get_function;
29132   iface->get_state = led_skeleton_get_state;
29133 }
29134 
29135 /**
29136  * led_skeleton_new:
29137  *
29138  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Led.top_of_page">org.openbmc.Led</link>.
29139  *
29140  * Returns: (transfer full) (type LedSkeleton): The skeleton object.
29141  */
29142 Led *
29143 led_skeleton_new (void)
29144 {
29145   return LED (g_object_new (TYPE_LED_SKELETON, NULL));
29146 }
29147 
29148 /* ------------------------------------------------------------------------
29149  * Code for interface org.openbmc.HostIpmi
29150  * ------------------------------------------------------------------------
29151  */
29152 
29153 /**
29154  * SECTION:HostIpmi
29155  * @title: HostIpmi
29156  * @short_description: Generated C code for the org.openbmc.HostIpmi D-Bus interface
29157  *
29158  * This section contains code for working with the <link linkend="gdbus-interface-org-openbmc-HostIpmi.top_of_page">org.openbmc.HostIpmi</link> D-Bus interface in C.
29159  */
29160 
29161 /* ---- Introspection data for org.openbmc.HostIpmi ---- */
29162 
29163 static const _ExtendedGDBusArgInfo _host_ipmi_method_info_send_message_IN_ARG_seq =
29164 {
29165   {
29166     -1,
29167     (gchar *) "seq",
29168     (gchar *) "y",
29169     NULL
29170   },
29171   FALSE
29172 };
29173 
29174 static const _ExtendedGDBusArgInfo _host_ipmi_method_info_send_message_IN_ARG_netfn =
29175 {
29176   {
29177     -1,
29178     (gchar *) "netfn",
29179     (gchar *) "y",
29180     NULL
29181   },
29182   FALSE
29183 };
29184 
29185 static const _ExtendedGDBusArgInfo _host_ipmi_method_info_send_message_IN_ARG_cmd =
29186 {
29187   {
29188     -1,
29189     (gchar *) "cmd",
29190     (gchar *) "y",
29191     NULL
29192   },
29193   FALSE
29194 };
29195 
29196 static const _ExtendedGDBusArgInfo _host_ipmi_method_info_send_message_IN_ARG_data =
29197 {
29198   {
29199     -1,
29200     (gchar *) "data",
29201     (gchar *) "ay",
29202     NULL
29203   },
29204   FALSE
29205 };
29206 
29207 static const _ExtendedGDBusArgInfo * const _host_ipmi_method_info_send_message_IN_ARG_pointers[] =
29208 {
29209   &_host_ipmi_method_info_send_message_IN_ARG_seq,
29210   &_host_ipmi_method_info_send_message_IN_ARG_netfn,
29211   &_host_ipmi_method_info_send_message_IN_ARG_cmd,
29212   &_host_ipmi_method_info_send_message_IN_ARG_data,
29213   NULL
29214 };
29215 
29216 static const _ExtendedGDBusArgInfo _host_ipmi_method_info_send_message_OUT_ARG_unnamed_arg4 =
29217 {
29218   {
29219     -1,
29220     (gchar *) "unnamed_arg4",
29221     (gchar *) "x",
29222     NULL
29223   },
29224   FALSE
29225 };
29226 
29227 static const _ExtendedGDBusArgInfo * const _host_ipmi_method_info_send_message_OUT_ARG_pointers[] =
29228 {
29229   &_host_ipmi_method_info_send_message_OUT_ARG_unnamed_arg4,
29230   NULL
29231 };
29232 
29233 static const _ExtendedGDBusMethodInfo _host_ipmi_method_info_send_message =
29234 {
29235   {
29236     -1,
29237     (gchar *) "sendMessage",
29238     (GDBusArgInfo **) &_host_ipmi_method_info_send_message_IN_ARG_pointers,
29239     (GDBusArgInfo **) &_host_ipmi_method_info_send_message_OUT_ARG_pointers,
29240     NULL
29241   },
29242   "handle-send-message",
29243   FALSE
29244 };
29245 
29246 static const _ExtendedGDBusMethodInfo * const _host_ipmi_method_info_pointers[] =
29247 {
29248   &_host_ipmi_method_info_send_message,
29249   NULL
29250 };
29251 
29252 static const _ExtendedGDBusArgInfo _host_ipmi_signal_info_received_message_ARG_seq =
29253 {
29254   {
29255     -1,
29256     (gchar *) "seq",
29257     (gchar *) "y",
29258     NULL
29259   },
29260   FALSE
29261 };
29262 
29263 static const _ExtendedGDBusArgInfo _host_ipmi_signal_info_received_message_ARG_netfn =
29264 {
29265   {
29266     -1,
29267     (gchar *) "netfn",
29268     (gchar *) "y",
29269     NULL
29270   },
29271   FALSE
29272 };
29273 
29274 static const _ExtendedGDBusArgInfo _host_ipmi_signal_info_received_message_ARG_cmd =
29275 {
29276   {
29277     -1,
29278     (gchar *) "cmd",
29279     (gchar *) "y",
29280     NULL
29281   },
29282   FALSE
29283 };
29284 
29285 static const _ExtendedGDBusArgInfo _host_ipmi_signal_info_received_message_ARG_data =
29286 {
29287   {
29288     -1,
29289     (gchar *) "data",
29290     (gchar *) "ay",
29291     NULL
29292   },
29293   FALSE
29294 };
29295 
29296 static const _ExtendedGDBusArgInfo * const _host_ipmi_signal_info_received_message_ARG_pointers[] =
29297 {
29298   &_host_ipmi_signal_info_received_message_ARG_seq,
29299   &_host_ipmi_signal_info_received_message_ARG_netfn,
29300   &_host_ipmi_signal_info_received_message_ARG_cmd,
29301   &_host_ipmi_signal_info_received_message_ARG_data,
29302   NULL
29303 };
29304 
29305 static const _ExtendedGDBusSignalInfo _host_ipmi_signal_info_received_message =
29306 {
29307   {
29308     -1,
29309     (gchar *) "ReceivedMessage",
29310     (GDBusArgInfo **) &_host_ipmi_signal_info_received_message_ARG_pointers,
29311     NULL
29312   },
29313   "received-message"
29314 };
29315 
29316 static const _ExtendedGDBusSignalInfo * const _host_ipmi_signal_info_pointers[] =
29317 {
29318   &_host_ipmi_signal_info_received_message,
29319   NULL
29320 };
29321 
29322 static const _ExtendedGDBusInterfaceInfo _host_ipmi_interface_info =
29323 {
29324   {
29325     -1,
29326     (gchar *) "org.openbmc.HostIpmi",
29327     (GDBusMethodInfo **) &_host_ipmi_method_info_pointers,
29328     (GDBusSignalInfo **) &_host_ipmi_signal_info_pointers,
29329     NULL,
29330     NULL
29331   },
29332   "host-ipmi",
29333 };
29334 
29335 
29336 /**
29337  * host_ipmi_interface_info:
29338  *
29339  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-openbmc-HostIpmi.top_of_page">org.openbmc.HostIpmi</link> D-Bus interface.
29340  *
29341  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
29342  */
29343 GDBusInterfaceInfo *
29344 host_ipmi_interface_info (void)
29345 {
29346   return (GDBusInterfaceInfo *) &_host_ipmi_interface_info.parent_struct;
29347 }
29348 
29349 /**
29350  * host_ipmi_override_properties:
29351  * @klass: The class structure for a #GObject<!-- -->-derived class.
29352  * @property_id_begin: The property id to assign to the first overridden property.
29353  *
29354  * Overrides all #GObject properties in the #HostIpmi interface for a concrete class.
29355  * The properties are overridden in the order they are defined.
29356  *
29357  * Returns: The last property id.
29358  */
29359 guint
29360 host_ipmi_override_properties (GObjectClass *klass, guint property_id_begin)
29361 {
29362   return property_id_begin - 1;
29363 }
29364 
29365 
29366 
29367 /**
29368  * HostIpmi:
29369  *
29370  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-HostIpmi.top_of_page">org.openbmc.HostIpmi</link>.
29371  */
29372 
29373 /**
29374  * HostIpmiIface:
29375  * @parent_iface: The parent interface.
29376  * @handle_send_message: Handler for the #HostIpmi::handle-send-message signal.
29377  * @received_message: Handler for the #HostIpmi::received-message signal.
29378  *
29379  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-HostIpmi.top_of_page">org.openbmc.HostIpmi</link>.
29380  */
29381 
29382 typedef HostIpmiIface HostIpmiInterface;
29383 G_DEFINE_INTERFACE (HostIpmi, host_ipmi, G_TYPE_OBJECT);
29384 
29385 static void
29386 host_ipmi_default_init (HostIpmiIface *iface)
29387 {
29388   /* GObject signals for incoming D-Bus method calls: */
29389   /**
29390    * HostIpmi::handle-send-message:
29391    * @object: A #HostIpmi.
29392    * @invocation: A #GDBusMethodInvocation.
29393    * @arg_seq: Argument passed by remote caller.
29394    * @arg_netfn: Argument passed by remote caller.
29395    * @arg_cmd: Argument passed by remote caller.
29396    * @arg_data: Argument passed by remote caller.
29397    *
29398    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-HostIpmi.sendMessage">sendMessage()</link> D-Bus method.
29399    *
29400    * 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 host_ipmi_complete_send_message() 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.
29401    *
29402    * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
29403    */
29404   g_signal_new ("handle-send-message",
29405     G_TYPE_FROM_INTERFACE (iface),
29406     G_SIGNAL_RUN_LAST,
29407     G_STRUCT_OFFSET (HostIpmiIface, handle_send_message),
29408     g_signal_accumulator_true_handled,
29409     NULL,
29410     g_cclosure_marshal_generic,
29411     G_TYPE_BOOLEAN,
29412     5,
29413     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_UCHAR, G_TYPE_UCHAR, G_TYPE_UCHAR, G_TYPE_STRING);
29414 
29415   /* GObject signals for received D-Bus signals: */
29416   /**
29417    * HostIpmi::received-message:
29418    * @object: A #HostIpmi.
29419    * @arg_seq: Argument.
29420    * @arg_netfn: Argument.
29421    * @arg_cmd: Argument.
29422    * @arg_data: Argument.
29423    *
29424    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-HostIpmi.ReceivedMessage">"ReceivedMessage"</link> is received.
29425    *
29426    * 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.
29427    */
29428   g_signal_new ("received-message",
29429     G_TYPE_FROM_INTERFACE (iface),
29430     G_SIGNAL_RUN_LAST,
29431     G_STRUCT_OFFSET (HostIpmiIface, received_message),
29432     NULL,
29433     NULL,
29434     g_cclosure_marshal_generic,
29435     G_TYPE_NONE,
29436     4, G_TYPE_UCHAR, G_TYPE_UCHAR, G_TYPE_UCHAR, G_TYPE_STRING);
29437 
29438 }
29439 
29440 /**
29441  * host_ipmi_emit_received_message:
29442  * @object: A #HostIpmi.
29443  * @arg_seq: Argument to pass with the signal.
29444  * @arg_netfn: Argument to pass with the signal.
29445  * @arg_cmd: Argument to pass with the signal.
29446  * @arg_data: Argument to pass with the signal.
29447  *
29448  * Emits the <link linkend="gdbus-signal-org-openbmc-HostIpmi.ReceivedMessage">"ReceivedMessage"</link> D-Bus signal.
29449  */
29450 void
29451 host_ipmi_emit_received_message (
29452     HostIpmi *object,
29453     guchar arg_seq,
29454     guchar arg_netfn,
29455     guchar arg_cmd,
29456     const gchar *arg_data)
29457 {
29458   g_signal_emit_by_name (object, "received-message", arg_seq, arg_netfn, arg_cmd, arg_data);
29459 }
29460 
29461 /**
29462  * host_ipmi_call_send_message:
29463  * @proxy: A #HostIpmiProxy.
29464  * @arg_seq: Argument to pass with the method invocation.
29465  * @arg_netfn: Argument to pass with the method invocation.
29466  * @arg_cmd: Argument to pass with the method invocation.
29467  * @arg_data: Argument to pass with the method invocation.
29468  * @cancellable: (allow-none): A #GCancellable or %NULL.
29469  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
29470  * @user_data: User data to pass to @callback.
29471  *
29472  * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-HostIpmi.sendMessage">sendMessage()</link> D-Bus method on @proxy.
29473  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
29474  * You can then call host_ipmi_call_send_message_finish() to get the result of the operation.
29475  *
29476  * See host_ipmi_call_send_message_sync() for the synchronous, blocking version of this method.
29477  */
29478 void
29479 host_ipmi_call_send_message (
29480     HostIpmi *proxy,
29481     guchar arg_seq,
29482     guchar arg_netfn,
29483     guchar arg_cmd,
29484     const gchar *arg_data,
29485     GCancellable *cancellable,
29486     GAsyncReadyCallback callback,
29487     gpointer user_data)
29488 {
29489   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
29490     "sendMessage",
29491     g_variant_new ("(yyy^ay)",
29492                    arg_seq,
29493                    arg_netfn,
29494                    arg_cmd,
29495                    arg_data),
29496     G_DBUS_CALL_FLAGS_NONE,
29497     -1,
29498     cancellable,
29499     callback,
29500     user_data);
29501 }
29502 
29503 /**
29504  * host_ipmi_call_send_message_finish:
29505  * @proxy: A #HostIpmiProxy.
29506  * @out_unnamed_arg4: (out): Return location for return parameter or %NULL to ignore.
29507  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to host_ipmi_call_send_message().
29508  * @error: Return location for error or %NULL.
29509  *
29510  * Finishes an operation started with host_ipmi_call_send_message().
29511  *
29512  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
29513  */
29514 gboolean
29515 host_ipmi_call_send_message_finish (
29516     HostIpmi *proxy,
29517     gint64 *out_unnamed_arg4,
29518     GAsyncResult *res,
29519     GError **error)
29520 {
29521   GVariant *_ret;
29522   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
29523   if (_ret == NULL)
29524     goto _out;
29525   g_variant_get (_ret,
29526                  "(x)",
29527                  out_unnamed_arg4);
29528   g_variant_unref (_ret);
29529 _out:
29530   return _ret != NULL;
29531 }
29532 
29533 /**
29534  * host_ipmi_call_send_message_sync:
29535  * @proxy: A #HostIpmiProxy.
29536  * @arg_seq: Argument to pass with the method invocation.
29537  * @arg_netfn: Argument to pass with the method invocation.
29538  * @arg_cmd: Argument to pass with the method invocation.
29539  * @arg_data: Argument to pass with the method invocation.
29540  * @out_unnamed_arg4: (out): Return location for return parameter or %NULL to ignore.
29541  * @cancellable: (allow-none): A #GCancellable or %NULL.
29542  * @error: Return location for error or %NULL.
29543  *
29544  * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-HostIpmi.sendMessage">sendMessage()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
29545  *
29546  * See host_ipmi_call_send_message() for the asynchronous version of this method.
29547  *
29548  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
29549  */
29550 gboolean
29551 host_ipmi_call_send_message_sync (
29552     HostIpmi *proxy,
29553     guchar arg_seq,
29554     guchar arg_netfn,
29555     guchar arg_cmd,
29556     const gchar *arg_data,
29557     gint64 *out_unnamed_arg4,
29558     GCancellable *cancellable,
29559     GError **error)
29560 {
29561   GVariant *_ret;
29562   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
29563     "sendMessage",
29564     g_variant_new ("(yyy^ay)",
29565                    arg_seq,
29566                    arg_netfn,
29567                    arg_cmd,
29568                    arg_data),
29569     G_DBUS_CALL_FLAGS_NONE,
29570     -1,
29571     cancellable,
29572     error);
29573   if (_ret == NULL)
29574     goto _out;
29575   g_variant_get (_ret,
29576                  "(x)",
29577                  out_unnamed_arg4);
29578   g_variant_unref (_ret);
29579 _out:
29580   return _ret != NULL;
29581 }
29582 
29583 /**
29584  * host_ipmi_complete_send_message:
29585  * @object: A #HostIpmi.
29586  * @invocation: (transfer full): A #GDBusMethodInvocation.
29587  * @unnamed_arg4: Parameter to return.
29588  *
29589  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-HostIpmi.sendMessage">sendMessage()</link> 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.
29590  *
29591  * This method will free @invocation, you cannot use it afterwards.
29592  */
29593 void
29594 host_ipmi_complete_send_message (
29595     HostIpmi *object,
29596     GDBusMethodInvocation *invocation,
29597     gint64 unnamed_arg4)
29598 {
29599   g_dbus_method_invocation_return_value (invocation,
29600     g_variant_new ("(x)",
29601                    unnamed_arg4));
29602 }
29603 
29604 /* ------------------------------------------------------------------------ */
29605 
29606 /**
29607  * HostIpmiProxy:
29608  *
29609  * The #HostIpmiProxy structure contains only private data and should only be accessed using the provided API.
29610  */
29611 
29612 /**
29613  * HostIpmiProxyClass:
29614  * @parent_class: The parent class.
29615  *
29616  * Class structure for #HostIpmiProxy.
29617  */
29618 
29619 struct _HostIpmiProxyPrivate
29620 {
29621   GData *qdata;
29622 };
29623 
29624 static void host_ipmi_proxy_iface_init (HostIpmiIface *iface);
29625 
29626 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
29627 G_DEFINE_TYPE_WITH_CODE (HostIpmiProxy, host_ipmi_proxy, G_TYPE_DBUS_PROXY,
29628                          G_ADD_PRIVATE (HostIpmiProxy)
29629                          G_IMPLEMENT_INTERFACE (TYPE_HOST_IPMI, host_ipmi_proxy_iface_init));
29630 
29631 #else
29632 G_DEFINE_TYPE_WITH_CODE (HostIpmiProxy, host_ipmi_proxy, G_TYPE_DBUS_PROXY,
29633                          G_IMPLEMENT_INTERFACE (TYPE_HOST_IPMI, host_ipmi_proxy_iface_init));
29634 
29635 #endif
29636 static void
29637 host_ipmi_proxy_finalize (GObject *object)
29638 {
29639   HostIpmiProxy *proxy = HOST_IPMI_PROXY (object);
29640   g_datalist_clear (&proxy->priv->qdata);
29641   G_OBJECT_CLASS (host_ipmi_proxy_parent_class)->finalize (object);
29642 }
29643 
29644 static void
29645 host_ipmi_proxy_get_property (GObject      *object,
29646   guint         prop_id,
29647   GValue       *value,
29648   GParamSpec   *pspec G_GNUC_UNUSED)
29649 {
29650 }
29651 
29652 static void
29653 host_ipmi_proxy_set_property (GObject      *object,
29654   guint         prop_id,
29655   const GValue *value,
29656   GParamSpec   *pspec G_GNUC_UNUSED)
29657 {
29658 }
29659 
29660 static void
29661 host_ipmi_proxy_g_signal (GDBusProxy *proxy,
29662   const gchar *sender_name G_GNUC_UNUSED,
29663   const gchar *signal_name,
29664   GVariant *parameters)
29665 {
29666   _ExtendedGDBusSignalInfo *info;
29667   GVariantIter iter;
29668   GVariant *child;
29669   GValue *paramv;
29670   guint num_params;
29671   guint n;
29672   guint signal_id;
29673   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_host_ipmi_interface_info.parent_struct, signal_name);
29674   if (info == NULL)
29675     return;
29676   num_params = g_variant_n_children (parameters);
29677   paramv = g_new0 (GValue, num_params + 1);
29678   g_value_init (&paramv[0], TYPE_HOST_IPMI);
29679   g_value_set_object (&paramv[0], proxy);
29680   g_variant_iter_init (&iter, parameters);
29681   n = 1;
29682   while ((child = g_variant_iter_next_value (&iter)) != NULL)
29683     {
29684       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
29685       if (arg_info->use_gvariant)
29686         {
29687           g_value_init (&paramv[n], G_TYPE_VARIANT);
29688           g_value_set_variant (&paramv[n], child);
29689           n++;
29690         }
29691       else
29692         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
29693       g_variant_unref (child);
29694     }
29695   signal_id = g_signal_lookup (info->signal_name, TYPE_HOST_IPMI);
29696   g_signal_emitv (paramv, signal_id, 0, NULL);
29697   for (n = 0; n < num_params + 1; n++)
29698     g_value_unset (&paramv[n]);
29699   g_free (paramv);
29700 }
29701 
29702 static void
29703 host_ipmi_proxy_g_properties_changed (GDBusProxy *_proxy,
29704   GVariant *changed_properties,
29705   const gchar *const *invalidated_properties)
29706 {
29707   HostIpmiProxy *proxy = HOST_IPMI_PROXY (_proxy);
29708   guint n;
29709   const gchar *key;
29710   GVariantIter *iter;
29711   _ExtendedGDBusPropertyInfo *info;
29712   g_variant_get (changed_properties, "a{sv}", &iter);
29713   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
29714     {
29715       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_host_ipmi_interface_info.parent_struct, key);
29716       g_datalist_remove_data (&proxy->priv->qdata, key);
29717       if (info != NULL)
29718         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
29719     }
29720   g_variant_iter_free (iter);
29721   for (n = 0; invalidated_properties[n] != NULL; n++)
29722     {
29723       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_host_ipmi_interface_info.parent_struct, invalidated_properties[n]);
29724       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
29725       if (info != NULL)
29726         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
29727     }
29728 }
29729 
29730 static void
29731 host_ipmi_proxy_init (HostIpmiProxy *proxy)
29732 {
29733 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
29734   proxy->priv = host_ipmi_proxy_get_instance_private (proxy);
29735 #else
29736   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_HOST_IPMI_PROXY, HostIpmiProxyPrivate);
29737 #endif
29738 
29739   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), host_ipmi_interface_info ());
29740 }
29741 
29742 static void
29743 host_ipmi_proxy_class_init (HostIpmiProxyClass *klass)
29744 {
29745   GObjectClass *gobject_class;
29746   GDBusProxyClass *proxy_class;
29747 
29748   gobject_class = G_OBJECT_CLASS (klass);
29749   gobject_class->finalize     = host_ipmi_proxy_finalize;
29750   gobject_class->get_property = host_ipmi_proxy_get_property;
29751   gobject_class->set_property = host_ipmi_proxy_set_property;
29752 
29753   proxy_class = G_DBUS_PROXY_CLASS (klass);
29754   proxy_class->g_signal = host_ipmi_proxy_g_signal;
29755   proxy_class->g_properties_changed = host_ipmi_proxy_g_properties_changed;
29756 
29757 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
29758   g_type_class_add_private (klass, sizeof (HostIpmiProxyPrivate));
29759 #endif
29760 }
29761 
29762 static void
29763 host_ipmi_proxy_iface_init (HostIpmiIface *iface)
29764 {
29765 }
29766 
29767 /**
29768  * host_ipmi_proxy_new:
29769  * @connection: A #GDBusConnection.
29770  * @flags: Flags from the #GDBusProxyFlags enumeration.
29771  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
29772  * @object_path: An object path.
29773  * @cancellable: (allow-none): A #GCancellable or %NULL.
29774  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
29775  * @user_data: User data to pass to @callback.
29776  *
29777  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-HostIpmi.top_of_page">org.openbmc.HostIpmi</link>. See g_dbus_proxy_new() for more details.
29778  *
29779  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
29780  * You can then call host_ipmi_proxy_new_finish() to get the result of the operation.
29781  *
29782  * See host_ipmi_proxy_new_sync() for the synchronous, blocking version of this constructor.
29783  */
29784 void
29785 host_ipmi_proxy_new (
29786     GDBusConnection     *connection,
29787     GDBusProxyFlags      flags,
29788     const gchar         *name,
29789     const gchar         *object_path,
29790     GCancellable        *cancellable,
29791     GAsyncReadyCallback  callback,
29792     gpointer             user_data)
29793 {
29794   g_async_initable_new_async (TYPE_HOST_IPMI_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.openbmc.HostIpmi", NULL);
29795 }
29796 
29797 /**
29798  * host_ipmi_proxy_new_finish:
29799  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to host_ipmi_proxy_new().
29800  * @error: Return location for error or %NULL
29801  *
29802  * Finishes an operation started with host_ipmi_proxy_new().
29803  *
29804  * Returns: (transfer full) (type HostIpmiProxy): The constructed proxy object or %NULL if @error is set.
29805  */
29806 HostIpmi *
29807 host_ipmi_proxy_new_finish (
29808     GAsyncResult        *res,
29809     GError             **error)
29810 {
29811   GObject *ret;
29812   GObject *source_object;
29813   source_object = g_async_result_get_source_object (res);
29814   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
29815   g_object_unref (source_object);
29816   if (ret != NULL)
29817     return HOST_IPMI (ret);
29818   else
29819     return NULL;
29820 }
29821 
29822 /**
29823  * host_ipmi_proxy_new_sync:
29824  * @connection: A #GDBusConnection.
29825  * @flags: Flags from the #GDBusProxyFlags enumeration.
29826  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
29827  * @object_path: An object path.
29828  * @cancellable: (allow-none): A #GCancellable or %NULL.
29829  * @error: Return location for error or %NULL
29830  *
29831  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-HostIpmi.top_of_page">org.openbmc.HostIpmi</link>. See g_dbus_proxy_new_sync() for more details.
29832  *
29833  * The calling thread is blocked until a reply is received.
29834  *
29835  * See host_ipmi_proxy_new() for the asynchronous version of this constructor.
29836  *
29837  * Returns: (transfer full) (type HostIpmiProxy): The constructed proxy object or %NULL if @error is set.
29838  */
29839 HostIpmi *
29840 host_ipmi_proxy_new_sync (
29841     GDBusConnection     *connection,
29842     GDBusProxyFlags      flags,
29843     const gchar         *name,
29844     const gchar         *object_path,
29845     GCancellable        *cancellable,
29846     GError             **error)
29847 {
29848   GInitable *ret;
29849   ret = g_initable_new (TYPE_HOST_IPMI_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.openbmc.HostIpmi", NULL);
29850   if (ret != NULL)
29851     return HOST_IPMI (ret);
29852   else
29853     return NULL;
29854 }
29855 
29856 
29857 /**
29858  * host_ipmi_proxy_new_for_bus:
29859  * @bus_type: A #GBusType.
29860  * @flags: Flags from the #GDBusProxyFlags enumeration.
29861  * @name: A bus name (well-known or unique).
29862  * @object_path: An object path.
29863  * @cancellable: (allow-none): A #GCancellable or %NULL.
29864  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
29865  * @user_data: User data to pass to @callback.
29866  *
29867  * Like host_ipmi_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
29868  *
29869  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
29870  * You can then call host_ipmi_proxy_new_for_bus_finish() to get the result of the operation.
29871  *
29872  * See host_ipmi_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
29873  */
29874 void
29875 host_ipmi_proxy_new_for_bus (
29876     GBusType             bus_type,
29877     GDBusProxyFlags      flags,
29878     const gchar         *name,
29879     const gchar         *object_path,
29880     GCancellable        *cancellable,
29881     GAsyncReadyCallback  callback,
29882     gpointer             user_data)
29883 {
29884   g_async_initable_new_async (TYPE_HOST_IPMI_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.openbmc.HostIpmi", NULL);
29885 }
29886 
29887 /**
29888  * host_ipmi_proxy_new_for_bus_finish:
29889  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to host_ipmi_proxy_new_for_bus().
29890  * @error: Return location for error or %NULL
29891  *
29892  * Finishes an operation started with host_ipmi_proxy_new_for_bus().
29893  *
29894  * Returns: (transfer full) (type HostIpmiProxy): The constructed proxy object or %NULL if @error is set.
29895  */
29896 HostIpmi *
29897 host_ipmi_proxy_new_for_bus_finish (
29898     GAsyncResult        *res,
29899     GError             **error)
29900 {
29901   GObject *ret;
29902   GObject *source_object;
29903   source_object = g_async_result_get_source_object (res);
29904   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
29905   g_object_unref (source_object);
29906   if (ret != NULL)
29907     return HOST_IPMI (ret);
29908   else
29909     return NULL;
29910 }
29911 
29912 /**
29913  * host_ipmi_proxy_new_for_bus_sync:
29914  * @bus_type: A #GBusType.
29915  * @flags: Flags from the #GDBusProxyFlags enumeration.
29916  * @name: A bus name (well-known or unique).
29917  * @object_path: An object path.
29918  * @cancellable: (allow-none): A #GCancellable or %NULL.
29919  * @error: Return location for error or %NULL
29920  *
29921  * Like host_ipmi_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
29922  *
29923  * The calling thread is blocked until a reply is received.
29924  *
29925  * See host_ipmi_proxy_new_for_bus() for the asynchronous version of this constructor.
29926  *
29927  * Returns: (transfer full) (type HostIpmiProxy): The constructed proxy object or %NULL if @error is set.
29928  */
29929 HostIpmi *
29930 host_ipmi_proxy_new_for_bus_sync (
29931     GBusType             bus_type,
29932     GDBusProxyFlags      flags,
29933     const gchar         *name,
29934     const gchar         *object_path,
29935     GCancellable        *cancellable,
29936     GError             **error)
29937 {
29938   GInitable *ret;
29939   ret = g_initable_new (TYPE_HOST_IPMI_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.openbmc.HostIpmi", NULL);
29940   if (ret != NULL)
29941     return HOST_IPMI (ret);
29942   else
29943     return NULL;
29944 }
29945 
29946 
29947 /* ------------------------------------------------------------------------ */
29948 
29949 /**
29950  * HostIpmiSkeleton:
29951  *
29952  * The #HostIpmiSkeleton structure contains only private data and should only be accessed using the provided API.
29953  */
29954 
29955 /**
29956  * HostIpmiSkeletonClass:
29957  * @parent_class: The parent class.
29958  *
29959  * Class structure for #HostIpmiSkeleton.
29960  */
29961 
29962 struct _HostIpmiSkeletonPrivate
29963 {
29964   GValue *properties;
29965   GList *changed_properties;
29966   GSource *changed_properties_idle_source;
29967   GMainContext *context;
29968   GMutex lock;
29969 };
29970 
29971 static void
29972 _host_ipmi_skeleton_handle_method_call (
29973   GDBusConnection *connection G_GNUC_UNUSED,
29974   const gchar *sender G_GNUC_UNUSED,
29975   const gchar *object_path G_GNUC_UNUSED,
29976   const gchar *interface_name,
29977   const gchar *method_name,
29978   GVariant *parameters,
29979   GDBusMethodInvocation *invocation,
29980   gpointer user_data)
29981 {
29982   HostIpmiSkeleton *skeleton = HOST_IPMI_SKELETON (user_data);
29983   _ExtendedGDBusMethodInfo *info;
29984   GVariantIter iter;
29985   GVariant *child;
29986   GValue *paramv;
29987   guint num_params;
29988   guint num_extra;
29989   guint n;
29990   guint signal_id;
29991   GValue return_value = G_VALUE_INIT;
29992   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
29993   g_assert (info != NULL);
29994   num_params = g_variant_n_children (parameters);
29995   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
29996   n = 0;
29997   g_value_init (&paramv[n], TYPE_HOST_IPMI);
29998   g_value_set_object (&paramv[n++], skeleton);
29999   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
30000   g_value_set_object (&paramv[n++], invocation);
30001   if (info->pass_fdlist)
30002     {
30003 #ifdef G_OS_UNIX
30004       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
30005       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
30006 #else
30007       g_assert_not_reached ();
30008 #endif
30009     }
30010   g_variant_iter_init (&iter, parameters);
30011   while ((child = g_variant_iter_next_value (&iter)) != NULL)
30012     {
30013       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
30014       if (arg_info->use_gvariant)
30015         {
30016           g_value_init (&paramv[n], G_TYPE_VARIANT);
30017           g_value_set_variant (&paramv[n], child);
30018           n++;
30019         }
30020       else
30021         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
30022       g_variant_unref (child);
30023     }
30024   signal_id = g_signal_lookup (info->signal_name, TYPE_HOST_IPMI);
30025   g_value_init (&return_value, G_TYPE_BOOLEAN);
30026   g_signal_emitv (paramv, signal_id, 0, &return_value);
30027   if (!g_value_get_boolean (&return_value))
30028     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);
30029   g_value_unset (&return_value);
30030   for (n = 0; n < num_params + num_extra; n++)
30031     g_value_unset (&paramv[n]);
30032   g_free (paramv);
30033 }
30034 
30035 static GVariant *
30036 _host_ipmi_skeleton_handle_get_property (
30037   GDBusConnection *connection G_GNUC_UNUSED,
30038   const gchar *sender G_GNUC_UNUSED,
30039   const gchar *object_path G_GNUC_UNUSED,
30040   const gchar *interface_name G_GNUC_UNUSED,
30041   const gchar *property_name,
30042   GError **error,
30043   gpointer user_data)
30044 {
30045   HostIpmiSkeleton *skeleton = HOST_IPMI_SKELETON (user_data);
30046   GValue value = G_VALUE_INIT;
30047   GParamSpec *pspec;
30048   _ExtendedGDBusPropertyInfo *info;
30049   GVariant *ret;
30050   ret = NULL;
30051   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_host_ipmi_interface_info.parent_struct, property_name);
30052   g_assert (info != NULL);
30053   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
30054   if (pspec == NULL)
30055     {
30056       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
30057     }
30058   else
30059     {
30060       g_value_init (&value, pspec->value_type);
30061       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
30062       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
30063       g_value_unset (&value);
30064     }
30065   return ret;
30066 }
30067 
30068 static gboolean
30069 _host_ipmi_skeleton_handle_set_property (
30070   GDBusConnection *connection G_GNUC_UNUSED,
30071   const gchar *sender G_GNUC_UNUSED,
30072   const gchar *object_path G_GNUC_UNUSED,
30073   const gchar *interface_name G_GNUC_UNUSED,
30074   const gchar *property_name,
30075   GVariant *variant,
30076   GError **error,
30077   gpointer user_data)
30078 {
30079   HostIpmiSkeleton *skeleton = HOST_IPMI_SKELETON (user_data);
30080   GValue value = G_VALUE_INIT;
30081   GParamSpec *pspec;
30082   _ExtendedGDBusPropertyInfo *info;
30083   gboolean ret;
30084   ret = FALSE;
30085   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_host_ipmi_interface_info.parent_struct, property_name);
30086   g_assert (info != NULL);
30087   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
30088   if (pspec == NULL)
30089     {
30090       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
30091     }
30092   else
30093     {
30094       if (info->use_gvariant)
30095         g_value_set_variant (&value, variant);
30096       else
30097         g_dbus_gvariant_to_gvalue (variant, &value);
30098       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
30099       g_value_unset (&value);
30100       ret = TRUE;
30101     }
30102   return ret;
30103 }
30104 
30105 static const GDBusInterfaceVTable _host_ipmi_skeleton_vtable =
30106 {
30107   _host_ipmi_skeleton_handle_method_call,
30108   _host_ipmi_skeleton_handle_get_property,
30109   _host_ipmi_skeleton_handle_set_property,
30110   {NULL}
30111 };
30112 
30113 static GDBusInterfaceInfo *
30114 host_ipmi_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
30115 {
30116   return host_ipmi_interface_info ();
30117 }
30118 
30119 static GDBusInterfaceVTable *
30120 host_ipmi_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
30121 {
30122   return (GDBusInterfaceVTable *) &_host_ipmi_skeleton_vtable;
30123 }
30124 
30125 static GVariant *
30126 host_ipmi_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
30127 {
30128   HostIpmiSkeleton *skeleton = HOST_IPMI_SKELETON (_skeleton);
30129 
30130   GVariantBuilder builder;
30131   guint n;
30132   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
30133   if (_host_ipmi_interface_info.parent_struct.properties == NULL)
30134     goto out;
30135   for (n = 0; _host_ipmi_interface_info.parent_struct.properties[n] != NULL; n++)
30136     {
30137       GDBusPropertyInfo *info = _host_ipmi_interface_info.parent_struct.properties[n];
30138       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
30139         {
30140           GVariant *value;
30141           value = _host_ipmi_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.openbmc.HostIpmi", info->name, NULL, skeleton);
30142           if (value != NULL)
30143             {
30144               g_variant_take_ref (value);
30145               g_variant_builder_add (&builder, "{sv}", info->name, value);
30146               g_variant_unref (value);
30147             }
30148         }
30149     }
30150 out:
30151   return g_variant_builder_end (&builder);
30152 }
30153 
30154 static void
30155 host_ipmi_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
30156 {
30157 }
30158 
30159 static void
30160 _host_ipmi_on_signal_received_message (
30161     HostIpmi *object,
30162     guchar arg_seq,
30163     guchar arg_netfn,
30164     guchar arg_cmd,
30165     const gchar *arg_data)
30166 {
30167   HostIpmiSkeleton *skeleton = HOST_IPMI_SKELETON (object);
30168 
30169   GList      *connections, *l;
30170   GVariant   *signal_variant;
30171   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
30172 
30173   signal_variant = g_variant_ref_sink (g_variant_new ("(yyy^ay)",
30174                    arg_seq,
30175                    arg_netfn,
30176                    arg_cmd,
30177                    arg_data));
30178   for (l = connections; l != NULL; l = l->next)
30179     {
30180       GDBusConnection *connection = l->data;
30181       g_dbus_connection_emit_signal (connection,
30182         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.HostIpmi", "ReceivedMessage",
30183         signal_variant, NULL);
30184     }
30185   g_variant_unref (signal_variant);
30186   g_list_free_full (connections, g_object_unref);
30187 }
30188 
30189 static void host_ipmi_skeleton_iface_init (HostIpmiIface *iface);
30190 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
30191 G_DEFINE_TYPE_WITH_CODE (HostIpmiSkeleton, host_ipmi_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
30192                          G_ADD_PRIVATE (HostIpmiSkeleton)
30193                          G_IMPLEMENT_INTERFACE (TYPE_HOST_IPMI, host_ipmi_skeleton_iface_init));
30194 
30195 #else
30196 G_DEFINE_TYPE_WITH_CODE (HostIpmiSkeleton, host_ipmi_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
30197                          G_IMPLEMENT_INTERFACE (TYPE_HOST_IPMI, host_ipmi_skeleton_iface_init));
30198 
30199 #endif
30200 static void
30201 host_ipmi_skeleton_finalize (GObject *object)
30202 {
30203   HostIpmiSkeleton *skeleton = HOST_IPMI_SKELETON (object);
30204   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
30205   if (skeleton->priv->changed_properties_idle_source != NULL)
30206     g_source_destroy (skeleton->priv->changed_properties_idle_source);
30207   g_main_context_unref (skeleton->priv->context);
30208   g_mutex_clear (&skeleton->priv->lock);
30209   G_OBJECT_CLASS (host_ipmi_skeleton_parent_class)->finalize (object);
30210 }
30211 
30212 static void
30213 host_ipmi_skeleton_init (HostIpmiSkeleton *skeleton)
30214 {
30215 #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
30216   skeleton->priv = host_ipmi_skeleton_get_instance_private (skeleton);
30217 #else
30218   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_HOST_IPMI_SKELETON, HostIpmiSkeletonPrivate);
30219 #endif
30220 
30221   g_mutex_init (&skeleton->priv->lock);
30222   skeleton->priv->context = g_main_context_ref_thread_default ();
30223 }
30224 
30225 static void
30226 host_ipmi_skeleton_class_init (HostIpmiSkeletonClass *klass)
30227 {
30228   GObjectClass *gobject_class;
30229   GDBusInterfaceSkeletonClass *skeleton_class;
30230 
30231   gobject_class = G_OBJECT_CLASS (klass);
30232   gobject_class->finalize = host_ipmi_skeleton_finalize;
30233 
30234   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
30235   skeleton_class->get_info = host_ipmi_skeleton_dbus_interface_get_info;
30236   skeleton_class->get_properties = host_ipmi_skeleton_dbus_interface_get_properties;
30237   skeleton_class->flush = host_ipmi_skeleton_dbus_interface_flush;
30238   skeleton_class->get_vtable = host_ipmi_skeleton_dbus_interface_get_vtable;
30239 
30240 #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
30241   g_type_class_add_private (klass, sizeof (HostIpmiSkeletonPrivate));
30242 #endif
30243 }
30244 
30245 static void
30246 host_ipmi_skeleton_iface_init (HostIpmiIface *iface)
30247 {
30248   iface->received_message = _host_ipmi_on_signal_received_message;
30249 }
30250 
30251 /**
30252  * host_ipmi_skeleton_new:
30253  *
30254  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-HostIpmi.top_of_page">org.openbmc.HostIpmi</link>.
30255  *
30256  * Returns: (transfer full) (type HostIpmiSkeleton): The skeleton object.
30257  */
30258 HostIpmi *
30259 host_ipmi_skeleton_new (void)
30260 {
30261   return HOST_IPMI (g_object_new (TYPE_HOST_IPMI_SKELETON, NULL));
30262 }
30263 
30264 /* ------------------------------------------------------------------------
30265  * Code for Object, ObjectProxy and ObjectSkeleton
30266  * ------------------------------------------------------------------------
30267  */
30268 
30269 /**
30270  * SECTION:Object
30271  * @title: Object
30272  * @short_description: Specialized GDBusObject types
30273  *
30274  * This section contains the #Object, #ObjectProxy, and #ObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces.
30275  */
30276 
30277 /**
30278  * Object:
30279  *
30280  * The #Object type is a specialized container of interfaces.
30281  */
30282 
30283 /**
30284  * ObjectIface:
30285  * @parent_iface: The parent interface.
30286  *
30287  * Virtual table for the #Object interface.
30288  */
30289 
30290 typedef ObjectIface ObjectInterface;
30291 G_DEFINE_INTERFACE_WITH_CODE (Object, object, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT));
30292 
30293 static void
30294 object_default_init (ObjectIface *iface)
30295 {
30296   /**
30297    * Object:hwmon:
30298    *
30299    * The #Hwmon instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Hwmon.top_of_page">org.openbmc.Hwmon</link>, if any.
30300    *
30301    * Connect to the #GObject::notify signal to get informed of property changes.
30302    */
30303   g_object_interface_install_property (iface, g_param_spec_object ("hwmon", "hwmon", "hwmon", TYPE_HWMON, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30304 
30305   /**
30306    * Object:fan:
30307    *
30308    * The #Fan instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Fan.top_of_page">org.openbmc.Fan</link>, if any.
30309    *
30310    * Connect to the #GObject::notify signal to get informed of property changes.
30311    */
30312   g_object_interface_install_property (iface, g_param_spec_object ("fan", "fan", "fan", TYPE_FAN, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30313 
30314   /**
30315    * Object:sensor-value:
30316    *
30317    * The #SensorValue instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorValue.top_of_page">org.openbmc.SensorValue</link>, if any.
30318    *
30319    * Connect to the #GObject::notify signal to get informed of property changes.
30320    */
30321   g_object_interface_install_property (iface, g_param_spec_object ("sensor-value", "sensor-value", "sensor-value", TYPE_SENSOR_VALUE, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30322 
30323   /**
30324    * Object:sensor-threshold:
30325    *
30326    * The #SensorThreshold instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorThreshold.top_of_page">org.openbmc.SensorThreshold</link>, if any.
30327    *
30328    * Connect to the #GObject::notify signal to get informed of property changes.
30329    */
30330   g_object_interface_install_property (iface, g_param_spec_object ("sensor-threshold", "sensor-threshold", "sensor-threshold", TYPE_SENSOR_THRESHOLD, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30331 
30332   /**
30333    * Object:sensor-i2c:
30334    *
30335    * The #SensorI2c instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorI2c.top_of_page">org.openbmc.SensorI2c</link>, if any.
30336    *
30337    * Connect to the #GObject::notify signal to get informed of property changes.
30338    */
30339   g_object_interface_install_property (iface, g_param_spec_object ("sensor-i2c", "sensor-i2c", "sensor-i2c", TYPE_SENSOR_I2C, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30340 
30341   /**
30342    * Object:sensor-match:
30343    *
30344    * The #SensorMatch instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorMatch.top_of_page">org.openbmc.SensorMatch</link>, if any.
30345    *
30346    * Connect to the #GObject::notify signal to get informed of property changes.
30347    */
30348   g_object_interface_install_property (iface, g_param_spec_object ("sensor-match", "sensor-match", "sensor-match", TYPE_SENSOR_MATCH, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30349 
30350   /**
30351    * Object:process:
30352    *
30353    * The #Process instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Process.top_of_page">org.openbmc.Process</link>, if any.
30354    *
30355    * Connect to the #GObject::notify signal to get informed of property changes.
30356    */
30357   g_object_interface_install_property (iface, g_param_spec_object ("process", "process", "process", TYPE_PROCESS, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30358 
30359   /**
30360    * Object:shared-resource:
30361    *
30362    * The #SharedResource instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SharedResource.top_of_page">org.openbmc.SharedResource</link>, if any.
30363    *
30364    * Connect to the #GObject::notify signal to get informed of property changes.
30365    */
30366   g_object_interface_install_property (iface, g_param_spec_object ("shared-resource", "shared-resource", "shared-resource", TYPE_SHARED_RESOURCE, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30367 
30368   /**
30369    * Object:control:
30370    *
30371    * The #Control instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Control.top_of_page">org.openbmc.Control</link>, if any.
30372    *
30373    * Connect to the #GObject::notify signal to get informed of property changes.
30374    */
30375   g_object_interface_install_property (iface, g_param_spec_object ("control", "control", "control", TYPE_CONTROL, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30376 
30377   /**
30378    * Object:control-bmc:
30379    *
30380    * The #ControlBmc instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link>, if any.
30381    *
30382    * Connect to the #GObject::notify signal to get informed of property changes.
30383    */
30384   g_object_interface_install_property (iface, g_param_spec_object ("control-bmc", "control-bmc", "control-bmc", TYPE_CONTROL_BMC, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30385 
30386   /**
30387    * Object:control-host:
30388    *
30389    * The #ControlHost instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Host.top_of_page">org.openbmc.control.Host</link>, if any.
30390    *
30391    * Connect to the #GObject::notify signal to get informed of property changes.
30392    */
30393   g_object_interface_install_property (iface, g_param_spec_object ("control-host", "control-host", "control-host", TYPE_CONTROL_HOST, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30394 
30395   /**
30396    * Object:control-power:
30397    *
30398    * The #ControlPower instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Power.top_of_page">org.openbmc.control.Power</link>, if any.
30399    *
30400    * Connect to the #GObject::notify signal to get informed of property changes.
30401    */
30402   g_object_interface_install_property (iface, g_param_spec_object ("control-power", "control-power", "control-power", TYPE_CONTROL_POWER, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30403 
30404   /**
30405    * Object:control-checkstop:
30406    *
30407    * The #ControlCheckstop instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Checkstop.top_of_page">org.openbmc.control.Checkstop</link>, if any.
30408    *
30409    * Connect to the #GObject::notify signal to get informed of property changes.
30410    */
30411   g_object_interface_install_property (iface, g_param_spec_object ("control-checkstop", "control-checkstop", "control-checkstop", TYPE_CONTROL_CHECKSTOP, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30412 
30413   /**
30414    * Object:watchdog:
30415    *
30416    * The #Watchdog instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Watchdog.top_of_page">org.openbmc.Watchdog</link>, if any.
30417    *
30418    * Connect to the #GObject::notify signal to get informed of property changes.
30419    */
30420   g_object_interface_install_property (iface, g_param_spec_object ("watchdog", "watchdog", "watchdog", TYPE_WATCHDOG, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30421 
30422   /**
30423    * Object:event-log:
30424    *
30425    * The #EventLog instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-EventLog.top_of_page">org.openbmc.EventLog</link>, if any.
30426    *
30427    * Connect to the #GObject::notify signal to get informed of property changes.
30428    */
30429   g_object_interface_install_property (iface, g_param_spec_object ("event-log", "event-log", "event-log", TYPE_EVENT_LOG, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30430 
30431   /**
30432    * Object:flash:
30433    *
30434    * The #Flash instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Flash.top_of_page">org.openbmc.Flash</link>, if any.
30435    *
30436    * Connect to the #GObject::notify signal to get informed of property changes.
30437    */
30438   g_object_interface_install_property (iface, g_param_spec_object ("flash", "flash", "flash", TYPE_FLASH, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30439 
30440   /**
30441    * Object:flash-control:
30442    *
30443    * The #FlashControl instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-FlashControl.top_of_page">org.openbmc.FlashControl</link>, if any.
30444    *
30445    * Connect to the #GObject::notify signal to get informed of property changes.
30446    */
30447   g_object_interface_install_property (iface, g_param_spec_object ("flash-control", "flash-control", "flash-control", TYPE_FLASH_CONTROL, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30448 
30449   /**
30450    * Object:button:
30451    *
30452    * The #Button instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Button.top_of_page">org.openbmc.Button</link>, if any.
30453    *
30454    * Connect to the #GObject::notify signal to get informed of property changes.
30455    */
30456   g_object_interface_install_property (iface, g_param_spec_object ("button", "button", "button", TYPE_BUTTON, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30457 
30458   /**
30459    * Object:led:
30460    *
30461    * The #Led instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Led.top_of_page">org.openbmc.Led</link>, if any.
30462    *
30463    * Connect to the #GObject::notify signal to get informed of property changes.
30464    */
30465   g_object_interface_install_property (iface, g_param_spec_object ("led", "led", "led", TYPE_LED, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30466 
30467   /**
30468    * Object:host-ipmi:
30469    *
30470    * The #HostIpmi instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-openbmc-HostIpmi.top_of_page">org.openbmc.HostIpmi</link>, if any.
30471    *
30472    * Connect to the #GObject::notify signal to get informed of property changes.
30473    */
30474   g_object_interface_install_property (iface, g_param_spec_object ("host-ipmi", "host-ipmi", "host-ipmi", TYPE_HOST_IPMI, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
30475 
30476 }
30477 
30478 /**
30479  * object_get_hwmon:
30480  * @object: A #Object.
30481  *
30482  * Gets the #Hwmon instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Hwmon.top_of_page">org.openbmc.Hwmon</link> on @object, if any.
30483  *
30484  * Returns: (transfer full): A #Hwmon that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30485  */
30486 Hwmon *object_get_hwmon (Object *object)
30487 {
30488   GDBusInterface *ret;
30489   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Hwmon");
30490   if (ret == NULL)
30491     return NULL;
30492   return HWMON (ret);
30493 }
30494 
30495 /**
30496  * object_get_fan:
30497  * @object: A #Object.
30498  *
30499  * Gets the #Fan instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Fan.top_of_page">org.openbmc.Fan</link> on @object, if any.
30500  *
30501  * Returns: (transfer full): A #Fan that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30502  */
30503 Fan *object_get_fan (Object *object)
30504 {
30505   GDBusInterface *ret;
30506   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Fan");
30507   if (ret == NULL)
30508     return NULL;
30509   return FAN (ret);
30510 }
30511 
30512 /**
30513  * object_get_sensor_value:
30514  * @object: A #Object.
30515  *
30516  * Gets the #SensorValue instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorValue.top_of_page">org.openbmc.SensorValue</link> on @object, if any.
30517  *
30518  * Returns: (transfer full): A #SensorValue that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30519  */
30520 SensorValue *object_get_sensor_value (Object *object)
30521 {
30522   GDBusInterface *ret;
30523   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorValue");
30524   if (ret == NULL)
30525     return NULL;
30526   return SENSOR_VALUE (ret);
30527 }
30528 
30529 /**
30530  * object_get_sensor_threshold:
30531  * @object: A #Object.
30532  *
30533  * Gets the #SensorThreshold instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorThreshold.top_of_page">org.openbmc.SensorThreshold</link> on @object, if any.
30534  *
30535  * Returns: (transfer full): A #SensorThreshold that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30536  */
30537 SensorThreshold *object_get_sensor_threshold (Object *object)
30538 {
30539   GDBusInterface *ret;
30540   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorThreshold");
30541   if (ret == NULL)
30542     return NULL;
30543   return SENSOR_THRESHOLD (ret);
30544 }
30545 
30546 /**
30547  * object_get_sensor_i2c:
30548  * @object: A #Object.
30549  *
30550  * Gets the #SensorI2c instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorI2c.top_of_page">org.openbmc.SensorI2c</link> on @object, if any.
30551  *
30552  * Returns: (transfer full): A #SensorI2c that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30553  */
30554 SensorI2c *object_get_sensor_i2c (Object *object)
30555 {
30556   GDBusInterface *ret;
30557   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorI2c");
30558   if (ret == NULL)
30559     return NULL;
30560   return SENSOR_I2C (ret);
30561 }
30562 
30563 /**
30564  * object_get_sensor_match:
30565  * @object: A #Object.
30566  *
30567  * Gets the #SensorMatch instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorMatch.top_of_page">org.openbmc.SensorMatch</link> on @object, if any.
30568  *
30569  * Returns: (transfer full): A #SensorMatch that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30570  */
30571 SensorMatch *object_get_sensor_match (Object *object)
30572 {
30573   GDBusInterface *ret;
30574   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorMatch");
30575   if (ret == NULL)
30576     return NULL;
30577   return SENSOR_MATCH (ret);
30578 }
30579 
30580 /**
30581  * object_get_process:
30582  * @object: A #Object.
30583  *
30584  * Gets the #Process instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Process.top_of_page">org.openbmc.Process</link> on @object, if any.
30585  *
30586  * Returns: (transfer full): A #Process that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30587  */
30588 Process *object_get_process (Object *object)
30589 {
30590   GDBusInterface *ret;
30591   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Process");
30592   if (ret == NULL)
30593     return NULL;
30594   return PROCESS (ret);
30595 }
30596 
30597 /**
30598  * object_get_shared_resource:
30599  * @object: A #Object.
30600  *
30601  * Gets the #SharedResource instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SharedResource.top_of_page">org.openbmc.SharedResource</link> on @object, if any.
30602  *
30603  * Returns: (transfer full): A #SharedResource that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30604  */
30605 SharedResource *object_get_shared_resource (Object *object)
30606 {
30607   GDBusInterface *ret;
30608   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SharedResource");
30609   if (ret == NULL)
30610     return NULL;
30611   return SHARED_RESOURCE (ret);
30612 }
30613 
30614 /**
30615  * object_get_control:
30616  * @object: A #Object.
30617  *
30618  * Gets the #Control instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Control.top_of_page">org.openbmc.Control</link> on @object, if any.
30619  *
30620  * Returns: (transfer full): A #Control that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30621  */
30622 Control *object_get_control (Object *object)
30623 {
30624   GDBusInterface *ret;
30625   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Control");
30626   if (ret == NULL)
30627     return NULL;
30628   return CONTROL (ret);
30629 }
30630 
30631 /**
30632  * object_get_control_bmc:
30633  * @object: A #Object.
30634  *
30635  * Gets the #ControlBmc instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link> on @object, if any.
30636  *
30637  * Returns: (transfer full): A #ControlBmc that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30638  */
30639 ControlBmc *object_get_control_bmc (Object *object)
30640 {
30641   GDBusInterface *ret;
30642   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Bmc");
30643   if (ret == NULL)
30644     return NULL;
30645   return CONTROL_BMC (ret);
30646 }
30647 
30648 /**
30649  * object_get_control_host:
30650  * @object: A #Object.
30651  *
30652  * Gets the #ControlHost instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Host.top_of_page">org.openbmc.control.Host</link> on @object, if any.
30653  *
30654  * Returns: (transfer full): A #ControlHost that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30655  */
30656 ControlHost *object_get_control_host (Object *object)
30657 {
30658   GDBusInterface *ret;
30659   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Host");
30660   if (ret == NULL)
30661     return NULL;
30662   return CONTROL_HOST (ret);
30663 }
30664 
30665 /**
30666  * object_get_control_power:
30667  * @object: A #Object.
30668  *
30669  * Gets the #ControlPower instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Power.top_of_page">org.openbmc.control.Power</link> on @object, if any.
30670  *
30671  * Returns: (transfer full): A #ControlPower that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30672  */
30673 ControlPower *object_get_control_power (Object *object)
30674 {
30675   GDBusInterface *ret;
30676   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Power");
30677   if (ret == NULL)
30678     return NULL;
30679   return CONTROL_POWER (ret);
30680 }
30681 
30682 /**
30683  * object_get_control_checkstop:
30684  * @object: A #Object.
30685  *
30686  * Gets the #ControlCheckstop instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Checkstop.top_of_page">org.openbmc.control.Checkstop</link> on @object, if any.
30687  *
30688  * Returns: (transfer full): A #ControlCheckstop that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30689  */
30690 ControlCheckstop *object_get_control_checkstop (Object *object)
30691 {
30692   GDBusInterface *ret;
30693   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Checkstop");
30694   if (ret == NULL)
30695     return NULL;
30696   return CONTROL_CHECKSTOP (ret);
30697 }
30698 
30699 /**
30700  * object_get_watchdog:
30701  * @object: A #Object.
30702  *
30703  * Gets the #Watchdog instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Watchdog.top_of_page">org.openbmc.Watchdog</link> on @object, if any.
30704  *
30705  * Returns: (transfer full): A #Watchdog that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30706  */
30707 Watchdog *object_get_watchdog (Object *object)
30708 {
30709   GDBusInterface *ret;
30710   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Watchdog");
30711   if (ret == NULL)
30712     return NULL;
30713   return WATCHDOG (ret);
30714 }
30715 
30716 /**
30717  * object_get_event_log:
30718  * @object: A #Object.
30719  *
30720  * Gets the #EventLog instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-EventLog.top_of_page">org.openbmc.EventLog</link> on @object, if any.
30721  *
30722  * Returns: (transfer full): A #EventLog that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30723  */
30724 EventLog *object_get_event_log (Object *object)
30725 {
30726   GDBusInterface *ret;
30727   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.EventLog");
30728   if (ret == NULL)
30729     return NULL;
30730   return EVENT_LOG (ret);
30731 }
30732 
30733 /**
30734  * object_get_flash:
30735  * @object: A #Object.
30736  *
30737  * Gets the #Flash instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Flash.top_of_page">org.openbmc.Flash</link> on @object, if any.
30738  *
30739  * Returns: (transfer full): A #Flash that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30740  */
30741 Flash *object_get_flash (Object *object)
30742 {
30743   GDBusInterface *ret;
30744   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Flash");
30745   if (ret == NULL)
30746     return NULL;
30747   return FLASH (ret);
30748 }
30749 
30750 /**
30751  * object_get_flash_control:
30752  * @object: A #Object.
30753  *
30754  * Gets the #FlashControl instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-FlashControl.top_of_page">org.openbmc.FlashControl</link> on @object, if any.
30755  *
30756  * Returns: (transfer full): A #FlashControl that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30757  */
30758 FlashControl *object_get_flash_control (Object *object)
30759 {
30760   GDBusInterface *ret;
30761   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.FlashControl");
30762   if (ret == NULL)
30763     return NULL;
30764   return FLASH_CONTROL (ret);
30765 }
30766 
30767 /**
30768  * object_get_button:
30769  * @object: A #Object.
30770  *
30771  * Gets the #Button instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Button.top_of_page">org.openbmc.Button</link> on @object, if any.
30772  *
30773  * Returns: (transfer full): A #Button that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30774  */
30775 Button *object_get_button (Object *object)
30776 {
30777   GDBusInterface *ret;
30778   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Button");
30779   if (ret == NULL)
30780     return NULL;
30781   return BUTTON (ret);
30782 }
30783 
30784 /**
30785  * object_get_led:
30786  * @object: A #Object.
30787  *
30788  * Gets the #Led instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Led.top_of_page">org.openbmc.Led</link> on @object, if any.
30789  *
30790  * Returns: (transfer full): A #Led that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30791  */
30792 Led *object_get_led (Object *object)
30793 {
30794   GDBusInterface *ret;
30795   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Led");
30796   if (ret == NULL)
30797     return NULL;
30798   return LED (ret);
30799 }
30800 
30801 /**
30802  * object_get_host_ipmi:
30803  * @object: A #Object.
30804  *
30805  * Gets the #HostIpmi instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-HostIpmi.top_of_page">org.openbmc.HostIpmi</link> on @object, if any.
30806  *
30807  * Returns: (transfer full): A #HostIpmi that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
30808  */
30809 HostIpmi *object_get_host_ipmi (Object *object)
30810 {
30811   GDBusInterface *ret;
30812   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.HostIpmi");
30813   if (ret == NULL)
30814     return NULL;
30815   return HOST_IPMI (ret);
30816 }
30817 
30818 
30819 /**
30820  * object_peek_hwmon: (skip)
30821  * @object: A #Object.
30822  *
30823  * Like object_get_hwmon() but doesn't increase the reference count on the returned object.
30824  *
30825  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
30826  *
30827  * Returns: (transfer none): A #Hwmon or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
30828  */
30829 Hwmon *object_peek_hwmon (Object *object)
30830 {
30831   GDBusInterface *ret;
30832   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Hwmon");
30833   if (ret == NULL)
30834     return NULL;
30835   g_object_unref (ret);
30836   return HWMON (ret);
30837 }
30838 
30839 /**
30840  * object_peek_fan: (skip)
30841  * @object: A #Object.
30842  *
30843  * Like object_get_fan() but doesn't increase the reference count on the returned object.
30844  *
30845  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
30846  *
30847  * Returns: (transfer none): A #Fan or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
30848  */
30849 Fan *object_peek_fan (Object *object)
30850 {
30851   GDBusInterface *ret;
30852   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Fan");
30853   if (ret == NULL)
30854     return NULL;
30855   g_object_unref (ret);
30856   return FAN (ret);
30857 }
30858 
30859 /**
30860  * object_peek_sensor_value: (skip)
30861  * @object: A #Object.
30862  *
30863  * Like object_get_sensor_value() but doesn't increase the reference count on the returned object.
30864  *
30865  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
30866  *
30867  * Returns: (transfer none): A #SensorValue or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
30868  */
30869 SensorValue *object_peek_sensor_value (Object *object)
30870 {
30871   GDBusInterface *ret;
30872   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorValue");
30873   if (ret == NULL)
30874     return NULL;
30875   g_object_unref (ret);
30876   return SENSOR_VALUE (ret);
30877 }
30878 
30879 /**
30880  * object_peek_sensor_threshold: (skip)
30881  * @object: A #Object.
30882  *
30883  * Like object_get_sensor_threshold() but doesn't increase the reference count on the returned object.
30884  *
30885  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
30886  *
30887  * Returns: (transfer none): A #SensorThreshold or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
30888  */
30889 SensorThreshold *object_peek_sensor_threshold (Object *object)
30890 {
30891   GDBusInterface *ret;
30892   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorThreshold");
30893   if (ret == NULL)
30894     return NULL;
30895   g_object_unref (ret);
30896   return SENSOR_THRESHOLD (ret);
30897 }
30898 
30899 /**
30900  * object_peek_sensor_i2c: (skip)
30901  * @object: A #Object.
30902  *
30903  * Like object_get_sensor_i2c() but doesn't increase the reference count on the returned object.
30904  *
30905  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
30906  *
30907  * Returns: (transfer none): A #SensorI2c or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
30908  */
30909 SensorI2c *object_peek_sensor_i2c (Object *object)
30910 {
30911   GDBusInterface *ret;
30912   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorI2c");
30913   if (ret == NULL)
30914     return NULL;
30915   g_object_unref (ret);
30916   return SENSOR_I2C (ret);
30917 }
30918 
30919 /**
30920  * object_peek_sensor_match: (skip)
30921  * @object: A #Object.
30922  *
30923  * Like object_get_sensor_match() but doesn't increase the reference count on the returned object.
30924  *
30925  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
30926  *
30927  * Returns: (transfer none): A #SensorMatch or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
30928  */
30929 SensorMatch *object_peek_sensor_match (Object *object)
30930 {
30931   GDBusInterface *ret;
30932   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorMatch");
30933   if (ret == NULL)
30934     return NULL;
30935   g_object_unref (ret);
30936   return SENSOR_MATCH (ret);
30937 }
30938 
30939 /**
30940  * object_peek_process: (skip)
30941  * @object: A #Object.
30942  *
30943  * Like object_get_process() but doesn't increase the reference count on the returned object.
30944  *
30945  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
30946  *
30947  * Returns: (transfer none): A #Process or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
30948  */
30949 Process *object_peek_process (Object *object)
30950 {
30951   GDBusInterface *ret;
30952   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Process");
30953   if (ret == NULL)
30954     return NULL;
30955   g_object_unref (ret);
30956   return PROCESS (ret);
30957 }
30958 
30959 /**
30960  * object_peek_shared_resource: (skip)
30961  * @object: A #Object.
30962  *
30963  * Like object_get_shared_resource() but doesn't increase the reference count on the returned object.
30964  *
30965  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
30966  *
30967  * Returns: (transfer none): A #SharedResource or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
30968  */
30969 SharedResource *object_peek_shared_resource (Object *object)
30970 {
30971   GDBusInterface *ret;
30972   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SharedResource");
30973   if (ret == NULL)
30974     return NULL;
30975   g_object_unref (ret);
30976   return SHARED_RESOURCE (ret);
30977 }
30978 
30979 /**
30980  * object_peek_control: (skip)
30981  * @object: A #Object.
30982  *
30983  * Like object_get_control() but doesn't increase the reference count on the returned object.
30984  *
30985  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
30986  *
30987  * Returns: (transfer none): A #Control or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
30988  */
30989 Control *object_peek_control (Object *object)
30990 {
30991   GDBusInterface *ret;
30992   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Control");
30993   if (ret == NULL)
30994     return NULL;
30995   g_object_unref (ret);
30996   return CONTROL (ret);
30997 }
30998 
30999 /**
31000  * object_peek_control_bmc: (skip)
31001  * @object: A #Object.
31002  *
31003  * Like object_get_control_bmc() but doesn't increase the reference count on the returned object.
31004  *
31005  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31006  *
31007  * Returns: (transfer none): A #ControlBmc or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31008  */
31009 ControlBmc *object_peek_control_bmc (Object *object)
31010 {
31011   GDBusInterface *ret;
31012   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Bmc");
31013   if (ret == NULL)
31014     return NULL;
31015   g_object_unref (ret);
31016   return CONTROL_BMC (ret);
31017 }
31018 
31019 /**
31020  * object_peek_control_host: (skip)
31021  * @object: A #Object.
31022  *
31023  * Like object_get_control_host() but doesn't increase the reference count on the returned object.
31024  *
31025  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31026  *
31027  * Returns: (transfer none): A #ControlHost or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31028  */
31029 ControlHost *object_peek_control_host (Object *object)
31030 {
31031   GDBusInterface *ret;
31032   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Host");
31033   if (ret == NULL)
31034     return NULL;
31035   g_object_unref (ret);
31036   return CONTROL_HOST (ret);
31037 }
31038 
31039 /**
31040  * object_peek_control_power: (skip)
31041  * @object: A #Object.
31042  *
31043  * Like object_get_control_power() but doesn't increase the reference count on the returned object.
31044  *
31045  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31046  *
31047  * Returns: (transfer none): A #ControlPower or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31048  */
31049 ControlPower *object_peek_control_power (Object *object)
31050 {
31051   GDBusInterface *ret;
31052   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Power");
31053   if (ret == NULL)
31054     return NULL;
31055   g_object_unref (ret);
31056   return CONTROL_POWER (ret);
31057 }
31058 
31059 /**
31060  * object_peek_control_checkstop: (skip)
31061  * @object: A #Object.
31062  *
31063  * Like object_get_control_checkstop() but doesn't increase the reference count on the returned object.
31064  *
31065  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31066  *
31067  * Returns: (transfer none): A #ControlCheckstop or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31068  */
31069 ControlCheckstop *object_peek_control_checkstop (Object *object)
31070 {
31071   GDBusInterface *ret;
31072   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Checkstop");
31073   if (ret == NULL)
31074     return NULL;
31075   g_object_unref (ret);
31076   return CONTROL_CHECKSTOP (ret);
31077 }
31078 
31079 /**
31080  * object_peek_watchdog: (skip)
31081  * @object: A #Object.
31082  *
31083  * Like object_get_watchdog() but doesn't increase the reference count on the returned object.
31084  *
31085  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31086  *
31087  * Returns: (transfer none): A #Watchdog or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31088  */
31089 Watchdog *object_peek_watchdog (Object *object)
31090 {
31091   GDBusInterface *ret;
31092   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Watchdog");
31093   if (ret == NULL)
31094     return NULL;
31095   g_object_unref (ret);
31096   return WATCHDOG (ret);
31097 }
31098 
31099 /**
31100  * object_peek_event_log: (skip)
31101  * @object: A #Object.
31102  *
31103  * Like object_get_event_log() but doesn't increase the reference count on the returned object.
31104  *
31105  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31106  *
31107  * Returns: (transfer none): A #EventLog or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31108  */
31109 EventLog *object_peek_event_log (Object *object)
31110 {
31111   GDBusInterface *ret;
31112   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.EventLog");
31113   if (ret == NULL)
31114     return NULL;
31115   g_object_unref (ret);
31116   return EVENT_LOG (ret);
31117 }
31118 
31119 /**
31120  * object_peek_flash: (skip)
31121  * @object: A #Object.
31122  *
31123  * Like object_get_flash() but doesn't increase the reference count on the returned object.
31124  *
31125  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31126  *
31127  * Returns: (transfer none): A #Flash or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31128  */
31129 Flash *object_peek_flash (Object *object)
31130 {
31131   GDBusInterface *ret;
31132   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Flash");
31133   if (ret == NULL)
31134     return NULL;
31135   g_object_unref (ret);
31136   return FLASH (ret);
31137 }
31138 
31139 /**
31140  * object_peek_flash_control: (skip)
31141  * @object: A #Object.
31142  *
31143  * Like object_get_flash_control() but doesn't increase the reference count on the returned object.
31144  *
31145  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31146  *
31147  * Returns: (transfer none): A #FlashControl or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31148  */
31149 FlashControl *object_peek_flash_control (Object *object)
31150 {
31151   GDBusInterface *ret;
31152   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.FlashControl");
31153   if (ret == NULL)
31154     return NULL;
31155   g_object_unref (ret);
31156   return FLASH_CONTROL (ret);
31157 }
31158 
31159 /**
31160  * object_peek_button: (skip)
31161  * @object: A #Object.
31162  *
31163  * Like object_get_button() but doesn't increase the reference count on the returned object.
31164  *
31165  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31166  *
31167  * Returns: (transfer none): A #Button or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31168  */
31169 Button *object_peek_button (Object *object)
31170 {
31171   GDBusInterface *ret;
31172   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Button");
31173   if (ret == NULL)
31174     return NULL;
31175   g_object_unref (ret);
31176   return BUTTON (ret);
31177 }
31178 
31179 /**
31180  * object_peek_led: (skip)
31181  * @object: A #Object.
31182  *
31183  * Like object_get_led() but doesn't increase the reference count on the returned object.
31184  *
31185  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31186  *
31187  * Returns: (transfer none): A #Led or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31188  */
31189 Led *object_peek_led (Object *object)
31190 {
31191   GDBusInterface *ret;
31192   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Led");
31193   if (ret == NULL)
31194     return NULL;
31195   g_object_unref (ret);
31196   return LED (ret);
31197 }
31198 
31199 /**
31200  * object_peek_host_ipmi: (skip)
31201  * @object: A #Object.
31202  *
31203  * Like object_get_host_ipmi() but doesn't increase the reference count on the returned object.
31204  *
31205  * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
31206  *
31207  * Returns: (transfer none): A #HostIpmi or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
31208  */
31209 HostIpmi *object_peek_host_ipmi (Object *object)
31210 {
31211   GDBusInterface *ret;
31212   ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.HostIpmi");
31213   if (ret == NULL)
31214     return NULL;
31215   g_object_unref (ret);
31216   return HOST_IPMI (ret);
31217 }
31218 
31219 
31220 static void
31221 object_notify (GDBusObject *object, GDBusInterface *interface)
31222 {
31223   _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface);
31224   /* info can be NULL if the other end is using a D-Bus interface we don't know
31225    * anything about, for example old generated code in this process talking to
31226    * newer generated code in the other process. */
31227   if (info != NULL)
31228     g_object_notify (G_OBJECT (object), info->hyphen_name);
31229 }
31230 
31231 /**
31232  * ObjectProxy:
31233  *
31234  * The #ObjectProxy structure contains only private data and should only be accessed using the provided API.
31235  */
31236 
31237 /**
31238  * ObjectProxyClass:
31239  * @parent_class: The parent class.
31240  *
31241  * Class structure for #ObjectProxy.
31242  */
31243 
31244 static void
31245 object_proxy__object_iface_init (ObjectIface *iface G_GNUC_UNUSED)
31246 {
31247 }
31248 
31249 static void
31250 object_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)
31251 {
31252   iface->interface_added = object_notify;
31253   iface->interface_removed = object_notify;
31254 }
31255 
31256 
31257 G_DEFINE_TYPE_WITH_CODE (ObjectProxy, object_proxy, G_TYPE_DBUS_OBJECT_PROXY,
31258                          G_IMPLEMENT_INTERFACE (TYPE_OBJECT, object_proxy__object_iface_init)
31259                          G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, object_proxy__g_dbus_object_iface_init));
31260 
31261 static void
31262 object_proxy_init (ObjectProxy *object G_GNUC_UNUSED)
31263 {
31264 }
31265 
31266 static void
31267 object_proxy_set_property (GObject      *gobject,
31268   guint         prop_id,
31269   const GValue *value G_GNUC_UNUSED,
31270   GParamSpec   *pspec)
31271 {
31272   G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
31273 }
31274 
31275 static void
31276 object_proxy_get_property (GObject      *gobject,
31277   guint         prop_id,
31278   GValue       *value,
31279   GParamSpec   *pspec)
31280 {
31281   ObjectProxy *object = OBJECT_PROXY (gobject);
31282   GDBusInterface *interface;
31283 
31284   switch (prop_id)
31285     {
31286     case 1:
31287       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Hwmon");
31288       g_value_take_object (value, interface);
31289       break;
31290 
31291     case 2:
31292       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Fan");
31293       g_value_take_object (value, interface);
31294       break;
31295 
31296     case 3:
31297       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorValue");
31298       g_value_take_object (value, interface);
31299       break;
31300 
31301     case 4:
31302       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorThreshold");
31303       g_value_take_object (value, interface);
31304       break;
31305 
31306     case 5:
31307       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorI2c");
31308       g_value_take_object (value, interface);
31309       break;
31310 
31311     case 6:
31312       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorMatch");
31313       g_value_take_object (value, interface);
31314       break;
31315 
31316     case 7:
31317       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Process");
31318       g_value_take_object (value, interface);
31319       break;
31320 
31321     case 8:
31322       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SharedResource");
31323       g_value_take_object (value, interface);
31324       break;
31325 
31326     case 9:
31327       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Control");
31328       g_value_take_object (value, interface);
31329       break;
31330 
31331     case 10:
31332       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Bmc");
31333       g_value_take_object (value, interface);
31334       break;
31335 
31336     case 11:
31337       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Host");
31338       g_value_take_object (value, interface);
31339       break;
31340 
31341     case 12:
31342       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Power");
31343       g_value_take_object (value, interface);
31344       break;
31345 
31346     case 13:
31347       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Checkstop");
31348       g_value_take_object (value, interface);
31349       break;
31350 
31351     case 14:
31352       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Watchdog");
31353       g_value_take_object (value, interface);
31354       break;
31355 
31356     case 15:
31357       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.EventLog");
31358       g_value_take_object (value, interface);
31359       break;
31360 
31361     case 16:
31362       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Flash");
31363       g_value_take_object (value, interface);
31364       break;
31365 
31366     case 17:
31367       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.FlashControl");
31368       g_value_take_object (value, interface);
31369       break;
31370 
31371     case 18:
31372       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Button");
31373       g_value_take_object (value, interface);
31374       break;
31375 
31376     case 19:
31377       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Led");
31378       g_value_take_object (value, interface);
31379       break;
31380 
31381     case 20:
31382       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.HostIpmi");
31383       g_value_take_object (value, interface);
31384       break;
31385 
31386     default:
31387       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
31388       break;
31389   }
31390 }
31391 
31392 static void
31393 object_proxy_class_init (ObjectProxyClass *klass)
31394 {
31395   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
31396 
31397   gobject_class->set_property = object_proxy_set_property;
31398   gobject_class->get_property = object_proxy_get_property;
31399 
31400   g_object_class_override_property (gobject_class, 1, "hwmon");
31401   g_object_class_override_property (gobject_class, 2, "fan");
31402   g_object_class_override_property (gobject_class, 3, "sensor-value");
31403   g_object_class_override_property (gobject_class, 4, "sensor-threshold");
31404   g_object_class_override_property (gobject_class, 5, "sensor-i2c");
31405   g_object_class_override_property (gobject_class, 6, "sensor-match");
31406   g_object_class_override_property (gobject_class, 7, "process");
31407   g_object_class_override_property (gobject_class, 8, "shared-resource");
31408   g_object_class_override_property (gobject_class, 9, "control");
31409   g_object_class_override_property (gobject_class, 10, "control-bmc");
31410   g_object_class_override_property (gobject_class, 11, "control-host");
31411   g_object_class_override_property (gobject_class, 12, "control-power");
31412   g_object_class_override_property (gobject_class, 13, "control-checkstop");
31413   g_object_class_override_property (gobject_class, 14, "watchdog");
31414   g_object_class_override_property (gobject_class, 15, "event-log");
31415   g_object_class_override_property (gobject_class, 16, "flash");
31416   g_object_class_override_property (gobject_class, 17, "flash-control");
31417   g_object_class_override_property (gobject_class, 18, "button");
31418   g_object_class_override_property (gobject_class, 19, "led");
31419   g_object_class_override_property (gobject_class, 20, "host-ipmi");
31420 }
31421 
31422 /**
31423  * object_proxy_new:
31424  * @connection: A #GDBusConnection.
31425  * @object_path: An object path.
31426  *
31427  * Creates a new proxy object.
31428  *
31429  * Returns: (transfer full): The proxy object.
31430  */
31431 ObjectProxy *
31432 object_proxy_new (GDBusConnection *connection,
31433   const gchar *object_path)
31434 {
31435   g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL);
31436   g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
31437   return OBJECT_PROXY (g_object_new (TYPE_OBJECT_PROXY, "g-connection", connection, "g-object-path", object_path, NULL));
31438 }
31439 
31440 /**
31441  * ObjectSkeleton:
31442  *
31443  * The #ObjectSkeleton structure contains only private data and should only be accessed using the provided API.
31444  */
31445 
31446 /**
31447  * ObjectSkeletonClass:
31448  * @parent_class: The parent class.
31449  *
31450  * Class structure for #ObjectSkeleton.
31451  */
31452 
31453 static void
31454 object_skeleton__object_iface_init (ObjectIface *iface G_GNUC_UNUSED)
31455 {
31456 }
31457 
31458 
31459 static void
31460 object_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)
31461 {
31462   iface->interface_added = object_notify;
31463   iface->interface_removed = object_notify;
31464 }
31465 
31466 G_DEFINE_TYPE_WITH_CODE (ObjectSkeleton, object_skeleton, G_TYPE_DBUS_OBJECT_SKELETON,
31467                          G_IMPLEMENT_INTERFACE (TYPE_OBJECT, object_skeleton__object_iface_init)
31468                          G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, object_skeleton__g_dbus_object_iface_init));
31469 
31470 static void
31471 object_skeleton_init (ObjectSkeleton *object G_GNUC_UNUSED)
31472 {
31473 }
31474 
31475 static void
31476 object_skeleton_set_property (GObject      *gobject,
31477   guint         prop_id,
31478   const GValue *value,
31479   GParamSpec   *pspec)
31480 {
31481   ObjectSkeleton *object = OBJECT_SKELETON (gobject);
31482   GDBusInterfaceSkeleton *interface;
31483 
31484   switch (prop_id)
31485     {
31486     case 1:
31487       interface = g_value_get_object (value);
31488       if (interface != NULL)
31489         {
31490           g_warn_if_fail (IS_HWMON (interface));
31491           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31492         }
31493       else
31494         {
31495           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.Hwmon");
31496         }
31497       break;
31498 
31499     case 2:
31500       interface = g_value_get_object (value);
31501       if (interface != NULL)
31502         {
31503           g_warn_if_fail (IS_FAN (interface));
31504           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31505         }
31506       else
31507         {
31508           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.Fan");
31509         }
31510       break;
31511 
31512     case 3:
31513       interface = g_value_get_object (value);
31514       if (interface != NULL)
31515         {
31516           g_warn_if_fail (IS_SENSOR_VALUE (interface));
31517           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31518         }
31519       else
31520         {
31521           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.SensorValue");
31522         }
31523       break;
31524 
31525     case 4:
31526       interface = g_value_get_object (value);
31527       if (interface != NULL)
31528         {
31529           g_warn_if_fail (IS_SENSOR_THRESHOLD (interface));
31530           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31531         }
31532       else
31533         {
31534           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.SensorThreshold");
31535         }
31536       break;
31537 
31538     case 5:
31539       interface = g_value_get_object (value);
31540       if (interface != NULL)
31541         {
31542           g_warn_if_fail (IS_SENSOR_I2C (interface));
31543           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31544         }
31545       else
31546         {
31547           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.SensorI2c");
31548         }
31549       break;
31550 
31551     case 6:
31552       interface = g_value_get_object (value);
31553       if (interface != NULL)
31554         {
31555           g_warn_if_fail (IS_SENSOR_MATCH (interface));
31556           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31557         }
31558       else
31559         {
31560           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.SensorMatch");
31561         }
31562       break;
31563 
31564     case 7:
31565       interface = g_value_get_object (value);
31566       if (interface != NULL)
31567         {
31568           g_warn_if_fail (IS_PROCESS (interface));
31569           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31570         }
31571       else
31572         {
31573           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.Process");
31574         }
31575       break;
31576 
31577     case 8:
31578       interface = g_value_get_object (value);
31579       if (interface != NULL)
31580         {
31581           g_warn_if_fail (IS_SHARED_RESOURCE (interface));
31582           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31583         }
31584       else
31585         {
31586           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.SharedResource");
31587         }
31588       break;
31589 
31590     case 9:
31591       interface = g_value_get_object (value);
31592       if (interface != NULL)
31593         {
31594           g_warn_if_fail (IS_CONTROL (interface));
31595           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31596         }
31597       else
31598         {
31599           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.Control");
31600         }
31601       break;
31602 
31603     case 10:
31604       interface = g_value_get_object (value);
31605       if (interface != NULL)
31606         {
31607           g_warn_if_fail (IS_CONTROL_BMC (interface));
31608           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31609         }
31610       else
31611         {
31612           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.control.Bmc");
31613         }
31614       break;
31615 
31616     case 11:
31617       interface = g_value_get_object (value);
31618       if (interface != NULL)
31619         {
31620           g_warn_if_fail (IS_CONTROL_HOST (interface));
31621           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31622         }
31623       else
31624         {
31625           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.control.Host");
31626         }
31627       break;
31628 
31629     case 12:
31630       interface = g_value_get_object (value);
31631       if (interface != NULL)
31632         {
31633           g_warn_if_fail (IS_CONTROL_POWER (interface));
31634           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31635         }
31636       else
31637         {
31638           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.control.Power");
31639         }
31640       break;
31641 
31642     case 13:
31643       interface = g_value_get_object (value);
31644       if (interface != NULL)
31645         {
31646           g_warn_if_fail (IS_CONTROL_CHECKSTOP (interface));
31647           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31648         }
31649       else
31650         {
31651           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.control.Checkstop");
31652         }
31653       break;
31654 
31655     case 14:
31656       interface = g_value_get_object (value);
31657       if (interface != NULL)
31658         {
31659           g_warn_if_fail (IS_WATCHDOG (interface));
31660           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31661         }
31662       else
31663         {
31664           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.Watchdog");
31665         }
31666       break;
31667 
31668     case 15:
31669       interface = g_value_get_object (value);
31670       if (interface != NULL)
31671         {
31672           g_warn_if_fail (IS_EVENT_LOG (interface));
31673           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31674         }
31675       else
31676         {
31677           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.EventLog");
31678         }
31679       break;
31680 
31681     case 16:
31682       interface = g_value_get_object (value);
31683       if (interface != NULL)
31684         {
31685           g_warn_if_fail (IS_FLASH (interface));
31686           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31687         }
31688       else
31689         {
31690           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.Flash");
31691         }
31692       break;
31693 
31694     case 17:
31695       interface = g_value_get_object (value);
31696       if (interface != NULL)
31697         {
31698           g_warn_if_fail (IS_FLASH_CONTROL (interface));
31699           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31700         }
31701       else
31702         {
31703           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.FlashControl");
31704         }
31705       break;
31706 
31707     case 18:
31708       interface = g_value_get_object (value);
31709       if (interface != NULL)
31710         {
31711           g_warn_if_fail (IS_BUTTON (interface));
31712           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31713         }
31714       else
31715         {
31716           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.Button");
31717         }
31718       break;
31719 
31720     case 19:
31721       interface = g_value_get_object (value);
31722       if (interface != NULL)
31723         {
31724           g_warn_if_fail (IS_LED (interface));
31725           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31726         }
31727       else
31728         {
31729           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.Led");
31730         }
31731       break;
31732 
31733     case 20:
31734       interface = g_value_get_object (value);
31735       if (interface != NULL)
31736         {
31737           g_warn_if_fail (IS_HOST_IPMI (interface));
31738           g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
31739         }
31740       else
31741         {
31742           g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.openbmc.HostIpmi");
31743         }
31744       break;
31745 
31746     default:
31747       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
31748       break;
31749   }
31750 }
31751 
31752 static void
31753 object_skeleton_get_property (GObject      *gobject,
31754   guint         prop_id,
31755   GValue       *value,
31756   GParamSpec   *pspec)
31757 {
31758   ObjectSkeleton *object = OBJECT_SKELETON (gobject);
31759   GDBusInterface *interface;
31760 
31761   switch (prop_id)
31762     {
31763     case 1:
31764       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Hwmon");
31765       g_value_take_object (value, interface);
31766       break;
31767 
31768     case 2:
31769       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Fan");
31770       g_value_take_object (value, interface);
31771       break;
31772 
31773     case 3:
31774       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorValue");
31775       g_value_take_object (value, interface);
31776       break;
31777 
31778     case 4:
31779       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorThreshold");
31780       g_value_take_object (value, interface);
31781       break;
31782 
31783     case 5:
31784       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorI2c");
31785       g_value_take_object (value, interface);
31786       break;
31787 
31788     case 6:
31789       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SensorMatch");
31790       g_value_take_object (value, interface);
31791       break;
31792 
31793     case 7:
31794       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Process");
31795       g_value_take_object (value, interface);
31796       break;
31797 
31798     case 8:
31799       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.SharedResource");
31800       g_value_take_object (value, interface);
31801       break;
31802 
31803     case 9:
31804       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Control");
31805       g_value_take_object (value, interface);
31806       break;
31807 
31808     case 10:
31809       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Bmc");
31810       g_value_take_object (value, interface);
31811       break;
31812 
31813     case 11:
31814       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Host");
31815       g_value_take_object (value, interface);
31816       break;
31817 
31818     case 12:
31819       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Power");
31820       g_value_take_object (value, interface);
31821       break;
31822 
31823     case 13:
31824       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.control.Checkstop");
31825       g_value_take_object (value, interface);
31826       break;
31827 
31828     case 14:
31829       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Watchdog");
31830       g_value_take_object (value, interface);
31831       break;
31832 
31833     case 15:
31834       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.EventLog");
31835       g_value_take_object (value, interface);
31836       break;
31837 
31838     case 16:
31839       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Flash");
31840       g_value_take_object (value, interface);
31841       break;
31842 
31843     case 17:
31844       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.FlashControl");
31845       g_value_take_object (value, interface);
31846       break;
31847 
31848     case 18:
31849       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Button");
31850       g_value_take_object (value, interface);
31851       break;
31852 
31853     case 19:
31854       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.Led");
31855       g_value_take_object (value, interface);
31856       break;
31857 
31858     case 20:
31859       interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.openbmc.HostIpmi");
31860       g_value_take_object (value, interface);
31861       break;
31862 
31863     default:
31864       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
31865       break;
31866   }
31867 }
31868 
31869 static void
31870 object_skeleton_class_init (ObjectSkeletonClass *klass)
31871 {
31872   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
31873 
31874   gobject_class->set_property = object_skeleton_set_property;
31875   gobject_class->get_property = object_skeleton_get_property;
31876 
31877   g_object_class_override_property (gobject_class, 1, "hwmon");
31878   g_object_class_override_property (gobject_class, 2, "fan");
31879   g_object_class_override_property (gobject_class, 3, "sensor-value");
31880   g_object_class_override_property (gobject_class, 4, "sensor-threshold");
31881   g_object_class_override_property (gobject_class, 5, "sensor-i2c");
31882   g_object_class_override_property (gobject_class, 6, "sensor-match");
31883   g_object_class_override_property (gobject_class, 7, "process");
31884   g_object_class_override_property (gobject_class, 8, "shared-resource");
31885   g_object_class_override_property (gobject_class, 9, "control");
31886   g_object_class_override_property (gobject_class, 10, "control-bmc");
31887   g_object_class_override_property (gobject_class, 11, "control-host");
31888   g_object_class_override_property (gobject_class, 12, "control-power");
31889   g_object_class_override_property (gobject_class, 13, "control-checkstop");
31890   g_object_class_override_property (gobject_class, 14, "watchdog");
31891   g_object_class_override_property (gobject_class, 15, "event-log");
31892   g_object_class_override_property (gobject_class, 16, "flash");
31893   g_object_class_override_property (gobject_class, 17, "flash-control");
31894   g_object_class_override_property (gobject_class, 18, "button");
31895   g_object_class_override_property (gobject_class, 19, "led");
31896   g_object_class_override_property (gobject_class, 20, "host-ipmi");
31897 }
31898 
31899 /**
31900  * object_skeleton_new:
31901  * @object_path: An object path.
31902  *
31903  * Creates a new skeleton object.
31904  *
31905  * Returns: (transfer full): The skeleton object.
31906  */
31907 ObjectSkeleton *
31908 object_skeleton_new (const gchar *object_path)
31909 {
31910   g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
31911   return OBJECT_SKELETON (g_object_new (TYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL));
31912 }
31913 
31914 /**
31915  * object_skeleton_set_hwmon:
31916  * @object: A #ObjectSkeleton.
31917  * @interface_: (allow-none): A #Hwmon or %NULL to clear the interface.
31918  *
31919  * Sets the #Hwmon instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Hwmon.top_of_page">org.openbmc.Hwmon</link> on @object.
31920  */
31921 void object_skeleton_set_hwmon (ObjectSkeleton *object, Hwmon *interface_)
31922 {
31923   g_object_set (G_OBJECT (object), "hwmon", interface_, NULL);
31924 }
31925 
31926 /**
31927  * object_skeleton_set_fan:
31928  * @object: A #ObjectSkeleton.
31929  * @interface_: (allow-none): A #Fan or %NULL to clear the interface.
31930  *
31931  * Sets the #Fan instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Fan.top_of_page">org.openbmc.Fan</link> on @object.
31932  */
31933 void object_skeleton_set_fan (ObjectSkeleton *object, Fan *interface_)
31934 {
31935   g_object_set (G_OBJECT (object), "fan", interface_, NULL);
31936 }
31937 
31938 /**
31939  * object_skeleton_set_sensor_value:
31940  * @object: A #ObjectSkeleton.
31941  * @interface_: (allow-none): A #SensorValue or %NULL to clear the interface.
31942  *
31943  * Sets the #SensorValue instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorValue.top_of_page">org.openbmc.SensorValue</link> on @object.
31944  */
31945 void object_skeleton_set_sensor_value (ObjectSkeleton *object, SensorValue *interface_)
31946 {
31947   g_object_set (G_OBJECT (object), "sensor-value", interface_, NULL);
31948 }
31949 
31950 /**
31951  * object_skeleton_set_sensor_threshold:
31952  * @object: A #ObjectSkeleton.
31953  * @interface_: (allow-none): A #SensorThreshold or %NULL to clear the interface.
31954  *
31955  * Sets the #SensorThreshold instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorThreshold.top_of_page">org.openbmc.SensorThreshold</link> on @object.
31956  */
31957 void object_skeleton_set_sensor_threshold (ObjectSkeleton *object, SensorThreshold *interface_)
31958 {
31959   g_object_set (G_OBJECT (object), "sensor-threshold", interface_, NULL);
31960 }
31961 
31962 /**
31963  * object_skeleton_set_sensor_i2c:
31964  * @object: A #ObjectSkeleton.
31965  * @interface_: (allow-none): A #SensorI2c or %NULL to clear the interface.
31966  *
31967  * Sets the #SensorI2c instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorI2c.top_of_page">org.openbmc.SensorI2c</link> on @object.
31968  */
31969 void object_skeleton_set_sensor_i2c (ObjectSkeleton *object, SensorI2c *interface_)
31970 {
31971   g_object_set (G_OBJECT (object), "sensor-i2c", interface_, NULL);
31972 }
31973 
31974 /**
31975  * object_skeleton_set_sensor_match:
31976  * @object: A #ObjectSkeleton.
31977  * @interface_: (allow-none): A #SensorMatch or %NULL to clear the interface.
31978  *
31979  * Sets the #SensorMatch instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SensorMatch.top_of_page">org.openbmc.SensorMatch</link> on @object.
31980  */
31981 void object_skeleton_set_sensor_match (ObjectSkeleton *object, SensorMatch *interface_)
31982 {
31983   g_object_set (G_OBJECT (object), "sensor-match", interface_, NULL);
31984 }
31985 
31986 /**
31987  * object_skeleton_set_process:
31988  * @object: A #ObjectSkeleton.
31989  * @interface_: (allow-none): A #Process or %NULL to clear the interface.
31990  *
31991  * Sets the #Process instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Process.top_of_page">org.openbmc.Process</link> on @object.
31992  */
31993 void object_skeleton_set_process (ObjectSkeleton *object, Process *interface_)
31994 {
31995   g_object_set (G_OBJECT (object), "process", interface_, NULL);
31996 }
31997 
31998 /**
31999  * object_skeleton_set_shared_resource:
32000  * @object: A #ObjectSkeleton.
32001  * @interface_: (allow-none): A #SharedResource or %NULL to clear the interface.
32002  *
32003  * Sets the #SharedResource instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-SharedResource.top_of_page">org.openbmc.SharedResource</link> on @object.
32004  */
32005 void object_skeleton_set_shared_resource (ObjectSkeleton *object, SharedResource *interface_)
32006 {
32007   g_object_set (G_OBJECT (object), "shared-resource", interface_, NULL);
32008 }
32009 
32010 /**
32011  * object_skeleton_set_control:
32012  * @object: A #ObjectSkeleton.
32013  * @interface_: (allow-none): A #Control or %NULL to clear the interface.
32014  *
32015  * Sets the #Control instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Control.top_of_page">org.openbmc.Control</link> on @object.
32016  */
32017 void object_skeleton_set_control (ObjectSkeleton *object, Control *interface_)
32018 {
32019   g_object_set (G_OBJECT (object), "control", interface_, NULL);
32020 }
32021 
32022 /**
32023  * object_skeleton_set_control_bmc:
32024  * @object: A #ObjectSkeleton.
32025  * @interface_: (allow-none): A #ControlBmc or %NULL to clear the interface.
32026  *
32027  * Sets the #ControlBmc instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link> on @object.
32028  */
32029 void object_skeleton_set_control_bmc (ObjectSkeleton *object, ControlBmc *interface_)
32030 {
32031   g_object_set (G_OBJECT (object), "control-bmc", interface_, NULL);
32032 }
32033 
32034 /**
32035  * object_skeleton_set_control_host:
32036  * @object: A #ObjectSkeleton.
32037  * @interface_: (allow-none): A #ControlHost or %NULL to clear the interface.
32038  *
32039  * Sets the #ControlHost instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Host.top_of_page">org.openbmc.control.Host</link> on @object.
32040  */
32041 void object_skeleton_set_control_host (ObjectSkeleton *object, ControlHost *interface_)
32042 {
32043   g_object_set (G_OBJECT (object), "control-host", interface_, NULL);
32044 }
32045 
32046 /**
32047  * object_skeleton_set_control_power:
32048  * @object: A #ObjectSkeleton.
32049  * @interface_: (allow-none): A #ControlPower or %NULL to clear the interface.
32050  *
32051  * Sets the #ControlPower instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Power.top_of_page">org.openbmc.control.Power</link> on @object.
32052  */
32053 void object_skeleton_set_control_power (ObjectSkeleton *object, ControlPower *interface_)
32054 {
32055   g_object_set (G_OBJECT (object), "control-power", interface_, NULL);
32056 }
32057 
32058 /**
32059  * object_skeleton_set_control_checkstop:
32060  * @object: A #ObjectSkeleton.
32061  * @interface_: (allow-none): A #ControlCheckstop or %NULL to clear the interface.
32062  *
32063  * Sets the #ControlCheckstop instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Checkstop.top_of_page">org.openbmc.control.Checkstop</link> on @object.
32064  */
32065 void object_skeleton_set_control_checkstop (ObjectSkeleton *object, ControlCheckstop *interface_)
32066 {
32067   g_object_set (G_OBJECT (object), "control-checkstop", interface_, NULL);
32068 }
32069 
32070 /**
32071  * object_skeleton_set_watchdog:
32072  * @object: A #ObjectSkeleton.
32073  * @interface_: (allow-none): A #Watchdog or %NULL to clear the interface.
32074  *
32075  * Sets the #Watchdog instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Watchdog.top_of_page">org.openbmc.Watchdog</link> on @object.
32076  */
32077 void object_skeleton_set_watchdog (ObjectSkeleton *object, Watchdog *interface_)
32078 {
32079   g_object_set (G_OBJECT (object), "watchdog", interface_, NULL);
32080 }
32081 
32082 /**
32083  * object_skeleton_set_event_log:
32084  * @object: A #ObjectSkeleton.
32085  * @interface_: (allow-none): A #EventLog or %NULL to clear the interface.
32086  *
32087  * Sets the #EventLog instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-EventLog.top_of_page">org.openbmc.EventLog</link> on @object.
32088  */
32089 void object_skeleton_set_event_log (ObjectSkeleton *object, EventLog *interface_)
32090 {
32091   g_object_set (G_OBJECT (object), "event-log", interface_, NULL);
32092 }
32093 
32094 /**
32095  * object_skeleton_set_flash:
32096  * @object: A #ObjectSkeleton.
32097  * @interface_: (allow-none): A #Flash or %NULL to clear the interface.
32098  *
32099  * Sets the #Flash instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Flash.top_of_page">org.openbmc.Flash</link> on @object.
32100  */
32101 void object_skeleton_set_flash (ObjectSkeleton *object, Flash *interface_)
32102 {
32103   g_object_set (G_OBJECT (object), "flash", interface_, NULL);
32104 }
32105 
32106 /**
32107  * object_skeleton_set_flash_control:
32108  * @object: A #ObjectSkeleton.
32109  * @interface_: (allow-none): A #FlashControl or %NULL to clear the interface.
32110  *
32111  * Sets the #FlashControl instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-FlashControl.top_of_page">org.openbmc.FlashControl</link> on @object.
32112  */
32113 void object_skeleton_set_flash_control (ObjectSkeleton *object, FlashControl *interface_)
32114 {
32115   g_object_set (G_OBJECT (object), "flash-control", interface_, NULL);
32116 }
32117 
32118 /**
32119  * object_skeleton_set_button:
32120  * @object: A #ObjectSkeleton.
32121  * @interface_: (allow-none): A #Button or %NULL to clear the interface.
32122  *
32123  * Sets the #Button instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Button.top_of_page">org.openbmc.Button</link> on @object.
32124  */
32125 void object_skeleton_set_button (ObjectSkeleton *object, Button *interface_)
32126 {
32127   g_object_set (G_OBJECT (object), "button", interface_, NULL);
32128 }
32129 
32130 /**
32131  * object_skeleton_set_led:
32132  * @object: A #ObjectSkeleton.
32133  * @interface_: (allow-none): A #Led or %NULL to clear the interface.
32134  *
32135  * Sets the #Led instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-Led.top_of_page">org.openbmc.Led</link> on @object.
32136  */
32137 void object_skeleton_set_led (ObjectSkeleton *object, Led *interface_)
32138 {
32139   g_object_set (G_OBJECT (object), "led", interface_, NULL);
32140 }
32141 
32142 /**
32143  * object_skeleton_set_host_ipmi:
32144  * @object: A #ObjectSkeleton.
32145  * @interface_: (allow-none): A #HostIpmi or %NULL to clear the interface.
32146  *
32147  * Sets the #HostIpmi instance for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-HostIpmi.top_of_page">org.openbmc.HostIpmi</link> on @object.
32148  */
32149 void object_skeleton_set_host_ipmi (ObjectSkeleton *object, HostIpmi *interface_)
32150 {
32151   g_object_set (G_OBJECT (object), "host-ipmi", interface_, NULL);
32152 }
32153 
32154 
32155 /* ------------------------------------------------------------------------
32156  * Code for ObjectManager client
32157  * ------------------------------------------------------------------------
32158  */
32159 
32160 /**
32161  * SECTION:ObjectManagerClient
32162  * @title: ObjectManagerClient
32163  * @short_description: Generated GDBusObjectManagerClient type
32164  *
32165  * This section contains a #GDBusObjectManagerClient that uses object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc.
32166  */
32167 
32168 /**
32169  * ObjectManagerClient:
32170  *
32171  * The #ObjectManagerClient structure contains only private data and should only be accessed using the provided API.
32172  */
32173 
32174 /**
32175  * ObjectManagerClientClass:
32176  * @parent_class: The parent class.
32177  *
32178  * Class structure for #ObjectManagerClient.
32179  */
32180 
32181 G_DEFINE_TYPE (ObjectManagerClient, object_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT);
32182 
32183 static void
32184 object_manager_client_init (ObjectManagerClient *manager G_GNUC_UNUSED)
32185 {
32186 }
32187 
32188 static void
32189 object_manager_client_class_init (ObjectManagerClientClass *klass G_GNUC_UNUSED)
32190 {
32191 }
32192 
32193 /**
32194  * object_manager_client_get_proxy_type:
32195  * @manager: A #GDBusObjectManagerClient.
32196  * @object_path: The object path of the remote object (unused).
32197  * @interface_name: (allow-none): Interface name of the remote object or %NULL to get the object proxy #GType.
32198  * @user_data: User data (unused).
32199  *
32200  * A #GDBusProxyTypeFunc that maps @interface_name to the generated #GDBusObjectProxy<!-- -->- and #GDBusProxy<!-- -->-derived types.
32201  *
32202  * Returns: A #GDBusProxy<!-- -->-derived #GType if @interface_name is not %NULL, otherwise the #GType for #ObjectProxy.
32203  */
32204 GType
32205 object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED)
32206 {
32207   static gsize once_init_value = 0;
32208   static GHashTable *lookup_hash;
32209   GType ret;
32210 
32211   if (interface_name == NULL)
32212     return TYPE_OBJECT_PROXY;
32213   if (g_once_init_enter (&once_init_value))
32214     {
32215       lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);
32216       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.Hwmon", GSIZE_TO_POINTER (TYPE_HWMON_PROXY));
32217       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.Fan", GSIZE_TO_POINTER (TYPE_FAN_PROXY));
32218       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.SensorValue", GSIZE_TO_POINTER (TYPE_SENSOR_VALUE_PROXY));
32219       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.SensorThreshold", GSIZE_TO_POINTER (TYPE_SENSOR_THRESHOLD_PROXY));
32220       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.SensorI2c", GSIZE_TO_POINTER (TYPE_SENSOR_I2C_PROXY));
32221       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.SensorMatch", GSIZE_TO_POINTER (TYPE_SENSOR_MATCH_PROXY));
32222       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.Process", GSIZE_TO_POINTER (TYPE_PROCESS_PROXY));
32223       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.SharedResource", GSIZE_TO_POINTER (TYPE_SHARED_RESOURCE_PROXY));
32224       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.Control", GSIZE_TO_POINTER (TYPE_CONTROL_PROXY));
32225       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.control.Bmc", GSIZE_TO_POINTER (TYPE_CONTROL_BMC_PROXY));
32226       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.control.Host", GSIZE_TO_POINTER (TYPE_CONTROL_HOST_PROXY));
32227       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.control.Power", GSIZE_TO_POINTER (TYPE_CONTROL_POWER_PROXY));
32228       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.control.Checkstop", GSIZE_TO_POINTER (TYPE_CONTROL_CHECKSTOP_PROXY));
32229       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.Watchdog", GSIZE_TO_POINTER (TYPE_WATCHDOG_PROXY));
32230       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.EventLog", GSIZE_TO_POINTER (TYPE_EVENT_LOG_PROXY));
32231       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.Flash", GSIZE_TO_POINTER (TYPE_FLASH_PROXY));
32232       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.FlashControl", GSIZE_TO_POINTER (TYPE_FLASH_CONTROL_PROXY));
32233       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.Button", GSIZE_TO_POINTER (TYPE_BUTTON_PROXY));
32234       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.Led", GSIZE_TO_POINTER (TYPE_LED_PROXY));
32235       g_hash_table_insert (lookup_hash, (gpointer) "org.openbmc.HostIpmi", GSIZE_TO_POINTER (TYPE_HOST_IPMI_PROXY));
32236       g_once_init_leave (&once_init_value, 1);
32237     }
32238   ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash, interface_name));
32239   if (ret == (GType) 0)
32240     ret = G_TYPE_DBUS_PROXY;
32241   return ret;
32242 }
32243 
32244 /**
32245  * object_manager_client_new:
32246  * @connection: A #GDBusConnection.
32247  * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
32248  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
32249  * @object_path: An object path.
32250  * @cancellable: (allow-none): A #GCancellable or %NULL.
32251  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
32252  * @user_data: User data to pass to @callback.
32253  *
32254  * Asynchronously creates #GDBusObjectManagerClient using object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new() for more details.
32255  *
32256  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
32257  * You can then call object_manager_client_new_finish() to get the result of the operation.
32258  *
32259  * See object_manager_client_new_sync() for the synchronous, blocking version of this constructor.
32260  */
32261 void
32262 object_manager_client_new (
32263     GDBusConnection        *connection,
32264     GDBusObjectManagerClientFlags  flags,
32265     const gchar            *name,
32266     const gchar            *object_path,
32267     GCancellable           *cancellable,
32268     GAsyncReadyCallback     callback,
32269     gpointer                user_data)
32270 {
32271   g_async_initable_new_async (TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", object_manager_client_get_proxy_type, NULL);
32272 }
32273 
32274 /**
32275  * object_manager_client_new_finish:
32276  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to object_manager_client_new().
32277  * @error: Return location for error or %NULL
32278  *
32279  * Finishes an operation started with object_manager_client_new().
32280  *
32281  * Returns: (transfer full) (type ObjectManagerClient): The constructed object manager client or %NULL if @error is set.
32282  */
32283 GDBusObjectManager *
32284 object_manager_client_new_finish (
32285     GAsyncResult        *res,
32286     GError             **error)
32287 {
32288   GObject *ret;
32289   GObject *source_object;
32290   source_object = g_async_result_get_source_object (res);
32291   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
32292   g_object_unref (source_object);
32293   if (ret != NULL)
32294     return G_DBUS_OBJECT_MANAGER (ret);
32295   else
32296     return NULL;
32297 }
32298 
32299 /**
32300  * object_manager_client_new_sync:
32301  * @connection: A #GDBusConnection.
32302  * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
32303  * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
32304  * @object_path: An object path.
32305  * @cancellable: (allow-none): A #GCancellable or %NULL.
32306  * @error: Return location for error or %NULL
32307  *
32308  * Synchronously creates #GDBusObjectManagerClient using object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new_sync() for more details.
32309  *
32310  * The calling thread is blocked until a reply is received.
32311  *
32312  * See object_manager_client_new() for the asynchronous version of this constructor.
32313  *
32314  * Returns: (transfer full) (type ObjectManagerClient): The constructed object manager client or %NULL if @error is set.
32315  */
32316 GDBusObjectManager *
32317 object_manager_client_new_sync (
32318     GDBusConnection        *connection,
32319     GDBusObjectManagerClientFlags  flags,
32320     const gchar            *name,
32321     const gchar            *object_path,
32322     GCancellable           *cancellable,
32323     GError                **error)
32324 {
32325   GInitable *ret;
32326   ret = g_initable_new (TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", object_manager_client_get_proxy_type, NULL);
32327   if (ret != NULL)
32328     return G_DBUS_OBJECT_MANAGER (ret);
32329   else
32330     return NULL;
32331 }
32332 
32333 
32334 /**
32335  * object_manager_client_new_for_bus:
32336  * @bus_type: A #GBusType.
32337  * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
32338  * @name: A bus name (well-known or unique).
32339  * @object_path: An object path.
32340  * @cancellable: (allow-none): A #GCancellable or %NULL.
32341  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
32342  * @user_data: User data to pass to @callback.
32343  *
32344  * Like object_manager_client_new() but takes a #GBusType instead of a #GDBusConnection.
32345  *
32346  * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
32347  * You can then call object_manager_client_new_for_bus_finish() to get the result of the operation.
32348  *
32349  * See object_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor.
32350  */
32351 void
32352 object_manager_client_new_for_bus (
32353     GBusType                bus_type,
32354     GDBusObjectManagerClientFlags  flags,
32355     const gchar            *name,
32356     const gchar            *object_path,
32357     GCancellable           *cancellable,
32358     GAsyncReadyCallback     callback,
32359     gpointer                user_data)
32360 {
32361   g_async_initable_new_async (TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", object_manager_client_get_proxy_type, NULL);
32362 }
32363 
32364 /**
32365  * object_manager_client_new_for_bus_finish:
32366  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to object_manager_client_new_for_bus().
32367  * @error: Return location for error or %NULL
32368  *
32369  * Finishes an operation started with object_manager_client_new_for_bus().
32370  *
32371  * Returns: (transfer full) (type ObjectManagerClient): The constructed object manager client or %NULL if @error is set.
32372  */
32373 GDBusObjectManager *
32374 object_manager_client_new_for_bus_finish (
32375     GAsyncResult        *res,
32376     GError             **error)
32377 {
32378   GObject *ret;
32379   GObject *source_object;
32380   source_object = g_async_result_get_source_object (res);
32381   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
32382   g_object_unref (source_object);
32383   if (ret != NULL)
32384     return G_DBUS_OBJECT_MANAGER (ret);
32385   else
32386     return NULL;
32387 }
32388 
32389 /**
32390  * object_manager_client_new_for_bus_sync:
32391  * @bus_type: A #GBusType.
32392  * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
32393  * @name: A bus name (well-known or unique).
32394  * @object_path: An object path.
32395  * @cancellable: (allow-none): A #GCancellable or %NULL.
32396  * @error: Return location for error or %NULL
32397  *
32398  * Like object_manager_client_new_sync() but takes a #GBusType instead of a #GDBusConnection.
32399  *
32400  * The calling thread is blocked until a reply is received.
32401  *
32402  * See object_manager_client_new_for_bus() for the asynchronous version of this constructor.
32403  *
32404  * Returns: (transfer full) (type ObjectManagerClient): The constructed object manager client or %NULL if @error is set.
32405  */
32406 GDBusObjectManager *
32407 object_manager_client_new_for_bus_sync (
32408     GBusType                bus_type,
32409     GDBusObjectManagerClientFlags  flags,
32410     const gchar            *name,
32411     const gchar            *object_path,
32412     GCancellable           *cancellable,
32413     GError                **error)
32414 {
32415   GInitable *ret;
32416   ret = g_initable_new (TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", object_manager_client_get_proxy_type, NULL);
32417   if (ret != NULL)
32418     return G_DBUS_OBJECT_MANAGER (ret);
32419   else
32420     return NULL;
32421 }
32422 
32423 
32424