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); } }