コード例 #1
0
static void
inf_test_mass_join_explore_finished_cb(InfRequest* request,
                                       const InfRequestResult* result,
                                       const GError* error,
                                       gpointer user_data)
{
    InfTestMassJoiner* joiner;
    InfBrowser* browser;
    InfBrowserIter iter;
    const char* name;
    gboolean document_exists;

    joiner = (InfTestMassJoiner*)user_data;
    browser = INF_BROWSER(joiner->browser);
    inf_browser_get_root(browser, &iter);
    if(inf_browser_get_child(browser, &iter) == FALSE)
    {
        fprintf(
            stderr,
            "Joiner %s: Document %s does not exist\n",
            joiner->username,
            joiner->document
        );

        inf_xml_connection_close(infc_browser_get_connection(joiner->browser));
    }

    document_exists = FALSE;

    do
    {
        name = inf_browser_get_node_name(browser, &iter);
        if(strcmp(name, joiner->document) == 0)
        {
            document_exists = TRUE;

            inf_browser_subscribe(
                browser,
                &iter,
                inf_test_mass_join_subscribe_finished_cb,
                joiner
            );

            break;
        }
    } while(inf_browser_get_next(browser, &iter) == TRUE);

    if(!document_exists)
    {
        fprintf(
            stderr,
            "Joiner %s: Document %s does not exist\n",
            joiner->username,
            joiner->document
        );

        inf_xml_connection_close(infc_browser_get_connection(joiner->browser));
    }
}
コード例 #2
0
ファイル: xmlconnection.cpp プロジェクト: KDE/libqinfinity
void XmlConnection::close()
{
    InfXmlConnection *infXmlConnection;

    infXmlConnection = INF_XML_CONNECTION(gobject());
    inf_xml_connection_close( infXmlConnection );
}
コード例 #3
0
static void
inf_test_mass_join_user_join_finished_cb(InfRequest* request,
        const InfRequestResult* result,
        const GError* error,
        gpointer user_data)
{
    InfTestMassJoiner* joiner;
    joiner = (InfTestMassJoiner*)user_data;

    if(error == NULL)
    {
        fprintf(stdout, "Joiner %s: User joined!\n", joiner->username);
    }
    else
    {
        fprintf(
            stderr,
            "Joiner %s: User join failed: %s\n",
            joiner->username,
            error->message
        );

        inf_xml_connection_close(infc_browser_get_connection(joiner->browser));
    }
}
コード例 #4
0
static void
inf_test_mass_join_subscribe_finished_cb(InfRequest* request,
        const InfRequestResult* result,
        const GError* error,
        gpointer user_data)
{
    InfTestMassJoiner* joiner;
    const InfBrowserIter* iter;
    InfSession* session;

    joiner = (InfTestMassJoiner*)user_data;
    inf_request_result_get_subscribe_session(result, NULL, &iter, NULL);

    joiner->session = INFC_SESSION_PROXY(
                          inf_browser_get_session(
                              INF_BROWSER(joiner->browser),
                              iter
                          )
                      );

    g_assert(joiner->session != NULL);

    g_object_get(G_OBJECT(joiner->session), "session", &session, NULL);
    switch(inf_session_get_status(session))
    {
    case INF_SESSION_PRESYNC:
    case INF_SESSION_SYNCHRONIZING:
        g_signal_connect_after(
            G_OBJECT(session),
            "synchronization-failed",
            G_CALLBACK(inf_test_mass_join_session_synchronization_failed_cb),
            joiner
        );

        g_signal_connect_after(
            G_OBJECT(session),
            "synchronization-complete",
            G_CALLBACK(inf_test_mass_join_session_synchronization_complete_cb),
            joiner
        );

        break;
    case INF_SESSION_RUNNING:
        inf_test_mass_join_join_user(joiner);
        break;
    case INF_SESSION_CLOSED:
        fprintf(
            stderr,
            "Joiner %s: Session closed after subscription\n",
            joiner->username
        );

        inf_xml_connection_close(infc_browser_get_connection(joiner->browser));
        break;
    }

    g_object_unref(session);
}
コード例 #5
0
void Gobby::BrowserContextCommands::on_disconnect(InfcBrowser* browser)
{
	InfXmlConnection* connection = infc_browser_get_connection(browser);
	InfXmlConnectionStatus status;
	g_object_get(G_OBJECT(connection), "status", &status, NULL);

	if(status != INF_XML_CONNECTION_CLOSED &&
	   status != INF_XML_CONNECTION_CLOSING)
	{
		inf_xml_connection_close(connection);
	}
}
コード例 #6
0
static void
inf_test_mass_join_session_synchronization_failed_cb(InfSession* session,
        InfXmlConnection* connection,
        const GError* error,
        gpointer user_data)
{
    InfTestMassJoiner* joiner;
    joiner = (InfTestMassJoiner*)user_data;

    fprintf(
        stderr,
        "Joiner %s: Session synchronization failed: %s\n",
        joiner->username,
        error->message
    );

    inf_xml_connection_close(infc_browser_get_connection(joiner->browser));
}
コード例 #7
0
void
on_action_session_disconnect (GtkAction                      *action,
                              GeditCollaborationWindowHelper *helper)
{
	GtkTreeIter iter;
	GtkTreeIter selected;
	InfcBrowser *browser;
	InfXmlConnection *connection;

	if (!inf_gtk_browser_view_get_selected (INF_GTK_BROWSER_VIEW (helper->priv->browser_view),
	                                        &selected))
	{
		return;
	}

	gtk_tree_model_sort_convert_iter_to_child_iter (
		GTK_TREE_MODEL_SORT (
			gtk_tree_view_get_model (
				GTK_TREE_VIEW (helper->priv->browser_view)
			)
		),
		&iter,
		&selected
	);

	gtk_tree_model_get (GTK_TREE_MODEL (helper->priv->browser_store),
	                    &iter,
	                    INF_GTK_BROWSER_MODEL_COL_BROWSER,
	                    &browser,
	                    -1);

	if (browser == NULL)
	{
		return;
	}

	connection = infc_browser_get_connection (browser);
	inf_xml_connection_close (connection);

	inf_gtk_browser_store_clear_connection_error (helper->priv->browser_store,
	                                              connection);

	g_object_unref (browser);
}
コード例 #8
0
void
on_action_item_delete (GtkAction                      *action,
                       GeditCollaborationWindowHelper *helper)
{
	GtkTreeIter iter;
	GtkTreeIter selected;
	InfcBrowser *browser;
	InfcBrowserIter *browser_iter;
	InfcBrowserIter parent;

	if (!inf_gtk_browser_view_get_selected (INF_GTK_BROWSER_VIEW (helper->priv->browser_view),
	                                        &selected))
	{
		return;
	}

	gtk_tree_model_sort_convert_iter_to_child_iter (
		GTK_TREE_MODEL_SORT (
			gtk_tree_view_get_model (
				GTK_TREE_VIEW (helper->priv->browser_view)
			)
		),
		&iter,
		&selected
	);

	gtk_tree_model_get (GTK_TREE_MODEL (helper->priv->browser_store),
	                    &iter,
	                    INF_GTK_BROWSER_MODEL_COL_BROWSER,
	                    &browser,
	                    INF_GTK_BROWSER_MODEL_COL_NODE,
	                    &browser_iter,
	                    -1);

	parent = *browser_iter;

	if (!infc_browser_iter_get_parent (browser, &parent))
	{
		/* Toplevel bookmark */
		InfXmlConnection *connection = infc_browser_get_connection (browser);
		GeditCollaborationBookmarks *bookmarks;
		GeditCollaborationBookmark *bookmark =
			g_object_get_data (G_OBJECT (connection),
			                   BOOKMARK_DATA_KEY);

		/* Close connection first */
		if (infc_browser_get_status (browser) != INFC_BROWSER_DISCONNECTED)
		{
			inf_xml_connection_close (connection);
		}

		inf_gtk_browser_store_remove_connection (helper->priv->browser_store,
		                                         connection);

		bookmarks = gedit_collaboration_bookmarks_get_default ();
		gedit_collaboration_bookmarks_remove (bookmarks, bookmark);
	}
	else
	{
		/* Remove the iter itself */
		infc_browser_remove_node (browser, browser_iter);
	}

	g_object_unref (browser);

	if (browser_iter)
	{
		infc_browser_iter_free (browser_iter);
	}
}
コード例 #9
0
ファイル: selfhoster.cpp プロジェクト: Kaligule/gobby
void Gobby::SelfHoster::directory_foreach_func_close_static(
	InfXmlConnection* connection,
	gpointer user_data)
{
	inf_xml_connection_close(connection);
}