gboolean soup_test_request_close_stream (SoupRequest *req, GInputStream *stream, GCancellable *cancellable, GError **error) { AsyncAsSyncData data; gboolean ok; if (SOUP_IS_SESSION_SYNC (soup_request_get_session (req))) return g_input_stream_close (stream, cancellable, error); data.loop = g_main_loop_new (g_main_context_get_thread_default (), FALSE); g_input_stream_close_async (stream, G_PRIORITY_DEFAULT, cancellable, async_as_sync_callback, &data); g_main_loop_run (data.loop); ok = g_input_stream_close_finish (stream, data.result, error); g_main_loop_unref (data.loop); g_object_unref (data.result); return ok; }
void soup_message_io_client (SoupMessageQueueItem *item, GIOStream *iostream, GMainContext *async_context, SoupMessageGetHeadersFn get_headers_cb, SoupMessageParseHeadersFn parse_headers_cb, gpointer header_data, SoupMessageCompletionFn completion_cb, gpointer completion_data) { SoupMessageIOData *io; io = new_iostate (item->msg, iostream, async_context, SOUP_MESSAGE_IO_CLIENT, get_headers_cb, parse_headers_cb, header_data, completion_cb, completion_data); io->item = item; soup_message_queue_item_ref (item); io->cancellable = item->cancellable; io->read_body = item->msg->response_body; io->write_body = item->msg->request_body; io->write_state = SOUP_MESSAGE_IO_STATE_HEADERS; if (!item->new_api) { gboolean blocking = SOUP_IS_SESSION_SYNC (item->session) || (!SOUP_IS_SESSION_ASYNC (item->session) && !item->async); io_run (item->msg, blocking); } }
GInputStream * soup_test_request_send (SoupRequest *req, GCancellable *cancellable, GError **error) { AsyncAsSyncData data; GInputStream *stream; if (SOUP_IS_SESSION_SYNC (soup_request_get_session (req))) return soup_request_send (req, cancellable, error); data.loop = g_main_loop_new (g_main_context_get_thread_default (), FALSE); soup_request_send_async (req, cancellable, async_as_sync_callback, &data); g_main_loop_run (data.loop); stream = soup_request_send_finish (req, data.result, error); g_main_loop_unref (data.loop); g_object_unref (data.result); return stream; }