ExploreRequest* BrowserIter::exploreRequest() const { if( m_infBrowser ) { InfRequest* req = inf_browser_get_pending_request( INF_BROWSER(m_infBrowser), &m_infBrowserIter, "explore-node" ); return ExploreRequest::wrap(req, 0, false); } return 0; }
ExploreRequest* BrowserIter::explore() { if( m_infBrowser ) { InfRequest* req = inf_browser_get_pending_request( INF_BROWSER(m_infBrowser), &m_infBrowserIter, "explore-node" ); if ( req ) { return ExploreRequest::wrap(req, 0, false); } else { return ExploreRequest::wrap( inf_browser_explore( INF_BROWSER(m_infBrowser), &m_infBrowserIter, 0, 0 ) ); } } return 0; }
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; } } } }