void Gobby::UserJoin::on_user_join_finished(InfUser* user, const GError* error) { if(m_request != NULL) { g_signal_handlers_disconnect_by_func( G_OBJECT(m_request), (gpointer)G_CALLBACK(on_user_join_finished_static), this); g_object_unref(m_request); m_request = NULL; } if(error == NULL) { user_join_complete(user, error); } else if(error->domain == inf_user_error_quark() && error->code == INF_USER_ERROR_NAME_IN_USE) { // If name is in use retry with alternative user name ++m_retry_index; attempt_user_join(); } else { user_join_complete(user, error); } }
void Gobby::UserJoinCommands::UserJoinInfo:: on_user_join_finished(InfUser* user, const GError* error) { if(m_request != NULL) { g_object_unref(m_request); m_request = NULL; } if(error == NULL) { user_join_complete(user); } else if(error->domain == inf_user_error_quark() && error->code == INF_USER_ERROR_NAME_IN_USE) { // If name is in use retry with alternative user name ++m_retry_index; attempt_user_join(); } else if(error->domain == inf_request_error_quark() && error->code == INF_REQUEST_ERROR_NOT_AUTHORIZED) { set_permission_denied_text(m_view); finish(); } else { set_error_text(m_view, error->message); finish(); } }
void Gobby::UserJoin::UserJoin::on_synchronization_complete() { // Disconnect signal handler, so that we don't get notified when // syncing this document in running state to another location // or server. InfSession* session; g_object_get(G_OBJECT(m_proxy), "session", &session, NULL); g_signal_handler_disconnect( session, m_synchronization_complete_handler); m_synchronization_complete_handler = 0; g_object_unref(session); // Attempt user join after synchronization attempt_user_join(); }