static void infinoted_plugin_manager_walk_directory( InfinotedPluginManager* manager, const InfBrowserIter* iter, InfinotedPluginInstance* instance, InfinotedPluginManagerWalkDirectoryFunc func) { /* This function walks the whole directory tree recursively and * registers running sessions with the given plugin instance. */ InfBrowser* browser; InfBrowserIter child; InfSessionProxy* proxy; browser = INF_BROWSER(manager->directory); if(inf_browser_is_subdirectory(browser, iter) == TRUE) { if(inf_browser_get_explored(browser, iter) == TRUE) { child = *iter; inf_browser_get_child(browser, &child); do { infinoted_plugin_manager_walk_directory(manager, &child, instance, func); } while(inf_browser_get_next(browser, &child)); } } else { proxy = inf_browser_get_session(browser, iter); if(proxy != NULL) { func(manager, instance, iter, proxy); } } }
void Gobby::OperationOpen::on_request_finished(const InfBrowserIter* iter, const GError* error) { if(error != NULL) { OperationOpen::error(error->message); } else { // Store document info so that we know where we loaded the // file from, so we don't have to ask the user where to store // it when s/he wants to save it again. DocumentInfoStorage::Info info; info.uri = m_file->get_uri(); info.encoding = m_encoding; info.eol_style = m_eol_style; get_info_storage().set_info( m_parent.get_browser(), iter, info); InfSessionProxy* proxy = inf_browser_get_session(m_parent.get_browser(), iter); g_assert(proxy != NULL); get_folder_manager().add_document( m_parent.get_browser(), iter, proxy, NULL); finish(); } }
void Gobby::OperationNew::on_request_finished(const InfBrowserIter* iter, const GError* error) { if(error) { const Glib::ustring prefix = Glib::ustring::compose( m_directory ? _("Failed to create directory \"%1\""): _("Failed to create document \"%1\""), m_name); get_status_bar().add_error_message(prefix, error->message); fail(); } else { if(!m_directory) { InfSessionProxy* proxy = inf_browser_get_session(m_browser, iter); g_assert(proxy != NULL); get_folder_manager().add_document( m_browser, iter, proxy, NULL); } finish(); } }
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); }
static void infinoted_plugin_document_stream_navigate_func(InfBrowser* browser, const InfBrowserIter* iter, const GError* error, gpointer user_data) { InfinotedPluginDocumentStreamStream* stream; InfSessionProxy* proxy; InfRequest* request; stream = (InfinotedPluginDocumentStreamStream*)user_data; stream->navigate_handle = NULL; if(error != NULL) { infinoted_plugin_document_stream_send_error(stream, error->message); } else { if(inf_browser_is_subdirectory(browser, iter) || (strcmp(inf_browser_get_node_type(browser, iter), "InfText") != 0 && strcmp(inf_browser_get_node_type(browser, iter), "InfChat") != 0)) { infinoted_plugin_document_stream_send_error( stream, _("Not a text or chat node") ); } else { stream->iter = *iter; proxy = inf_browser_get_session(browser, iter); if(proxy != NULL) { infinoted_plugin_document_stream_subscribe_done(stream, proxy); } else { request = inf_browser_get_pending_request( browser, iter, "subscribe-session" ); if(request != NULL) { g_signal_connect( G_OBJECT(browser), "finished", G_CALLBACK(infinoted_plugin_document_stream_subscribe_func), stream ); } else { request = inf_browser_subscribe( browser, iter, infinoted_plugin_document_stream_subscribe_func, stream ); } stream->subscribe_request = request; } } } }