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;
    }
}
Beispiel #3
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
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);
  }
}