Changeset 185808 in webkit for trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.cpp
- Timestamp:
- Jun 21, 2015, 6:19:19 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.cpp
r185502 r185808 25 25 26 26 struct AsyncReadData { 27 AsyncReadData(G SimpleAsyncResult* result, void* buffer, gsize count, GCancellable* cancellable)28 : result(result)27 AsyncReadData(GTask* task, void* buffer, gsize count) 28 : task(task) 29 29 , buffer(buffer) 30 30 , count(count) 31 , cancellable(cancellable)32 31 { 33 32 } 34 33 35 GRefPtr<G SimpleAsyncResult> result;34 GRefPtr<GTask> task; 36 35 void* buffer; 37 36 size_t count; 38 GRefPtr<GCancellable> cancellable;39 37 }; 40 38 … … 50 48 G_DEFINE_TYPE(WebKitSoupRequestInputStream, webkit_soup_request_input_stream, G_TYPE_MEMORY_INPUT_STREAM) 51 49 52 static void webkitSoupRequestInputStreamReadAsyncResultComplete( WebKitSoupRequestInputStream* stream, GSimpleAsyncResult* result, void* buffer, gsize count, GCancellable* cancellable)50 static void webkitSoupRequestInputStreamReadAsyncResultComplete(GTask* task, void* buffer, gsize count) 53 51 { 54 GError* error = 0; 55 gssize bytesRead = G_INPUT_STREAM_GET_CLASS(stream)->read_fn(G_INPUT_STREAM(stream), buffer, count, cancellable, &error); 52 WebKitSoupRequestInputStream* stream = WEBKIT_SOUP_REQUEST_INPUT_STREAM(g_task_get_source_object(task)); 53 GError* error = nullptr; 54 gssize bytesRead = G_INPUT_STREAM_GET_CLASS(stream)->read_fn(G_INPUT_STREAM(stream), buffer, count, g_task_get_cancellable(task), &error); 56 55 if (!error) { 57 g_simple_async_result_set_op_res_gssize(result, bytesRead);58 56 stream->priv->bytesRead += bytesRead; 57 g_task_return_int(task, bytesRead); 59 58 } else 60 g_simple_async_result_take_error(result, error); 61 g_simple_async_result_complete_in_idle(result); 59 g_task_return_error(task, error); 62 60 } 63 61 … … 68 66 69 67 AsyncReadData* data = stream->priv->pendingAsyncRead.get(); 70 webkitSoupRequestInputStreamReadAsyncResultComplete( stream, data->result.get(), data->buffer, data->count, data->cancellable.get());68 webkitSoupRequestInputStreamReadAsyncResultComplete(data->task.get(), data->buffer, data->count); 71 69 stream->priv->pendingAsyncRead = nullptr; 72 70 } … … 85 83 { 86 84 WebKitSoupRequestInputStream* stream = WEBKIT_SOUP_REQUEST_INPUT_STREAM(inputStream); 87 GRefPtr<G SimpleAsyncResult> result = adoptGRef(g_simple_async_result_new(G_OBJECT(stream), callback, userData, reinterpret_cast<void*>(webkitSoupRequestInputStreamReadAsync)));85 GRefPtr<GTask> task = adoptGRef(g_task_new(stream, cancellable, callback, userData)); 88 86 89 87 MutexLocker locker(stream->priv->readLock); 90 88 91 89 if (!webkitSoupRequestInputStreamHasDataToRead(stream) && !webkitSoupRequestInputStreamIsWaitingForData(stream)) { 92 g_simple_async_result_set_op_res_gssize(result.get(), 0); 93 g_simple_async_result_complete_in_idle(result.get()); 90 g_task_return_int(task.get(), 0); 94 91 return; 95 92 } 96 93 97 94 if (webkitSoupRequestInputStreamHasDataToRead(stream)) { 98 webkitSoupRequestInputStreamReadAsyncResultComplete( stream, result.get(), buffer, count, cancellable);95 webkitSoupRequestInputStreamReadAsyncResultComplete(task.get(), buffer, count); 99 96 return; 100 97 } 101 98 102 stream->priv->pendingAsyncRead = std::make_unique<AsyncReadData>( result.get(), buffer, count, cancellable);99 stream->priv->pendingAsyncRead = std::make_unique<AsyncReadData>(task.get(), buffer, count); 103 100 } 104 101 105 static gssize webkitSoupRequestInputStreamReadFinish(GInputStream* , GAsyncResult* result, GError**)102 static gssize webkitSoupRequestInputStreamReadFinish(GInputStream* inputStream, GAsyncResult* result, GError** error) 106 103 { 107 GSimpleAsyncResult* simpleResult = G_SIMPLE_ASYNC_RESULT(result); 108 g_warn_if_fail(g_simple_async_result_get_source_tag(simpleResult) == webkitSoupRequestInputStreamReadAsync); 104 g_return_val_if_fail(g_task_is_valid(result, inputStream), 0); 109 105 110 return g_ simple_async_result_get_op_res_gssize(simpleResult);106 return g_task_propagate_int(G_TASK(result), error); 111 107 } 112 108
Note:
See TracChangeset
for help on using the changeset viewer.