static void handle_method_call (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { guint method_id; method_id = lookup_method_id_from_method_name (method_name); switch (method_id) { case __GET_CAL_METHOD: { EGdbusCalFactory *object = E_GDBUS_CAL_FACTORY (user_data); gboolean handled; const gchar *arg_source; guint arg_type; g_variant_get (parameters, "(&su)", &arg_source, &arg_type); g_signal_emit (object, signals[method_id], 0, invocation, arg_source, arg_type, &handled); if (!handled) goto not_implemented; } break; default: not_implemented: g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_NOT_SUPPORTED, "Method `%s' is not implemented", method_name); break; } };
static void handle_method_call (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { guint method_id, method_type; method_id = lookup_method_id_from_method_name (method_name); method_type = lookup_method_type_from_method_name (method_name); g_return_if_fail (method_id != 0); g_return_if_fail (method_type != 0); e_gdbus_stub_handle_method_call (user_data, invocation, parameters, method_name, signals[method_id], method_type); }