static void inf_test_browser_cmd_explore(InfTestBrowser* test, const gchar* param) { InfBrowserIter iter; if(inf_test_browser_find_node(test, param, &iter) == FALSE) { fprintf( stderr, "Directory '%s' does not exist\n", param ); } else if(inf_browser_get_explored(test->browser, &iter) == TRUE) { fprintf( stderr, "Directory '%s' is already explored", inf_browser_get_node_name(test->browser, &iter) ); } else { inf_browser_explore(test->browser, &iter, NULL, NULL); } }
static void inf_test_mass_join_browser_notify_status_cb(GObject* object, const GParamSpec* pspec, gpointer user_data) { InfBrowser* browser; InfBrowserStatus status; InfBrowserIter iter; InfTestMassJoin* massjoin; InfTestMassJoiner* joiner; GSList* item; browser = INF_BROWSER(object); massjoin = (InfTestMassJoin*)user_data; joiner = NULL; for(item = massjoin->joiners; item != NULL; item = item->next) { joiner = (InfTestMassJoiner*)item->data; if(INF_BROWSER(joiner->browser) == browser) break; } g_assert(joiner != NULL); g_object_get(G_OBJECT(browser), "status", &status, NULL); switch(status) { case INF_BROWSER_OPENING: /* nothing to do */ break; case INF_BROWSER_OPEN: fprintf(stdout, "Joiner %s: Connected\n", joiner->username); inf_browser_get_root(browser, &iter); inf_browser_explore( browser, &iter, inf_test_mass_join_explore_finished_cb, joiner ); break; case INF_BROWSER_CLOSED: fprintf(stdout, "Joiner %s: Disconnected\n", joiner->username); massjoin->joiners = g_slist_remove(massjoin->joiners, joiner); if(massjoin->joiners == NULL) inf_standalone_io_loop_quit(INF_STANDALONE_IO(massjoin->io)); break; default: g_assert_not_reached(); break; } }
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 inf_test_browser_notify_status_cb(GObject* object, GParamSpec* pspec, gpointer user_data) { InfTestBrowser* test; InfBrowserStatus status; test = (InfTestBrowser*)user_data; g_object_get(G_OBJECT(test->browser), "status", &status, NULL); if(status == INF_BROWSER_OPEN) { printf("Connection established\n"); #ifndef G_OS_WIN32 inf_io_add_watch( INF_IO(test->io), &test->input_fd, INF_IO_INCOMING | INF_IO_ERROR, inf_test_browser_input_cb, test, NULL ); #endif /* Explore root node */ inf_browser_get_root(test->browser, &test->cwd); inf_browser_explore(test->browser, &test->cwd, NULL, NULL); } if(status == INF_BROWSER_CLOSED) { if(inf_standalone_io_loop_running(test->io)) inf_standalone_io_loop_quit(test->io); } }