ModemRequest * modem_call_request_answer (ModemCall *self, ModemCallReply callback, gpointer user_data) { DEBUG ("enter"); RETURN_NULL_IF_NOT_VALID (self); if (self->priv->state != MODEM_CALL_STATE_WAITING) { DEBUG ("%s.%s (%s)", MODEM_OFACE_CALL, "Answer", modem_call_get_path (self)); return modem_request (MODEM_CALL (self), modem_oface_dbus_proxy (MODEM_OFACE (self)), "Answer", reply_to_instance_request, G_CALLBACK (callback), user_data, G_TYPE_INVALID); } else { DEBUG ("%s.%s (%s)", MODEM_OFACE_CALL_MANAGER, "HoldAndAnswer", modem_call_get_path (self)); return modem_request (MODEM_CALL (self), modem_oface_dbus_proxy (MODEM_OFACE (self->priv->service)), "HoldAndAnswer", reply_to_instance_request, G_CALLBACK (callback), user_data, G_TYPE_INVALID); } }
ModemRequest * modem_call_request_split (ModemCall *self, ModemCallReply callback, gpointer user_data) { DEBUG ("%s.%s (%s)", MODEM_OFACE_CALL_MANAGER, "PrivateChat", modem_call_get_path (self)); RETURN_NULL_IF_NOT_VALID (self); return modem_request (MODEM_CALL (self), modem_oface_dbus_proxy (MODEM_OFACE (self->priv->service)), "PrivateChat", reply_to_private_chat_request, G_CALLBACK (callback), user_data, DBUS_TYPE_G_OBJECT_PATH, modem_call_get_path (self), G_TYPE_INVALID); }
ModemRequest * modem_call_request_release (ModemCall *self, ModemCallReply callback, gpointer user_data) { DEBUG ("%s.%s (%s)", MODEM_OFACE_CALL, "Hangup", modem_call_get_path (self)); RETURN_NULL_IF_NOT_VALID (self); return modem_request (MODEM_CALL (self), modem_oface_dbus_proxy (MODEM_OFACE (self)), "Hangup", reply_to_instance_request, G_CALLBACK (callback), user_data, G_TYPE_INVALID); }
static void modem_call_service_connect_to_instance (ModemCallService *self, ModemCall *instance) { ModemCallServicePrivate *priv = self->priv; gchar const *object_path; if (!instance) return; g_signal_connect (instance, "state", G_CALLBACK (on_modem_call_state), self); modem_oface_connect (MODEM_OFACE (instance)); object_path = modem_call_get_path (instance); g_hash_table_insert (priv->instances, (gpointer) object_path, instance); }
static void modem_call_service_disconnect_instance (ModemCallService *self, ModemCall *instance) { ModemCallServicePrivate *priv = self->priv; if (!instance) return; g_hash_table_steal (priv->instances, modem_call_get_path (instance)); g_signal_handlers_disconnect_by_func (instance, on_modem_call_state, self); g_signal_emit (self, signals[SIGNAL_REMOVED], 0, instance); modem_oface_disconnect (MODEM_OFACE (instance)); g_object_unref (instance); }