static void
request_chat (InfcBrowser                    *browser,
              GeditCollaborationWindowHelper *helper)
{
	InfcNodeRequest *request;
	ChatData *data;

	request = infc_browser_subscribe_chat (browser);

	data = g_slice_new (ChatData);
	data->helper = helper;
	data->browser = browser;
	data->proxy = NULL;
	data->chat = NULL;
	data->user = NULL;
	data->name_failed_counter = 0;

	g_signal_connect (request,
	                  "failed",
	                  G_CALLBACK (subscribe_chat_failed_cb),
	                  data);

	g_signal_connect (request,
	                  "finished",
	                  G_CALLBACK (subscribe_chat_cb),
	                  data);
}
static void
inf_test_chat_notify_status_cb(GObject* object,
                               GParamSpec* pspec,
                               gpointer user_data)
{
  InfTestChat* test;
  InfcBrowserStatus status;
  InfcNodeRequest* request;

  test = (InfTestChat*)user_data;
  status = infc_browser_get_status(test->browser);

  if(status == INFC_BROWSER_CONNECTED)
  {
    printf("Connection established, subscribing to chat...\n");

    /* Subscribe to chat */
    request = infc_browser_subscribe_chat(test->browser);

    g_signal_connect_after(
      G_OBJECT(request),
      "failed",
      G_CALLBACK(inf_chat_test_subscribe_failed_cb),
      test
    );

    g_signal_connect_after(
      G_OBJECT(request),
      "finished",
      G_CALLBACK(inf_chat_test_subscribe_finished_cb),
      test
    );
  }

  if(status == INFC_BROWSER_DISCONNECTED)
  {
    printf("Connection closed\n");
    if(inf_standalone_io_loop_running(test->io))
      inf_standalone_io_loop_quit(test->io);
  }
}