Chromium Code Reviews| Index: ppapi/proxy/file_io_resource.h |
| diff --git a/ppapi/proxy/file_io_resource.h b/ppapi/proxy/file_io_resource.h |
| index dffa940b046e904828a6b7ba32e66f1a45bad30a..1ed3f683cc14426e52ca539b09dbb461b996a7c0 100644 |
| --- a/ppapi/proxy/file_io_resource.h |
| +++ b/ppapi/proxy/file_io_resource.h |
| @@ -67,6 +67,46 @@ class PPAPI_PROXY_EXPORT FileIOResource |
| scoped_refptr<TrackedCallback> callback) OVERRIDE; |
| private: |
| + // Class to perform file query operations across multiple threads. |
| + class QueryOp : public base::RefCountedThreadSafe<QueryOp> { |
| + public: |
| + QueryOp(PP_FileHandle file_handle); |
|
dmichael (off chromium)
2013/08/09 22:20:56
nit: explicit
bbudge
2013/08/09 23:05:28
Done.
|
| + |
| + // Queries the file. Called on the file thread (non-blocking) or the plugin |
| + // thread (blocking). |
|
dmichael (off chromium)
2013/08/09 22:20:56
please note it does not hold the ProxyLock (same f
bbudge
2013/08/09 23:05:28
Done.
|
| + int32_t DoWork(); |
| + |
| + const base::PlatformFileInfo& file_info() const { return file_info_; } |
| + |
| + private: |
| + friend class base::RefCountedThreadSafe<QueryOp>; |
| + virtual ~QueryOp(); |
|
dmichael (off chromium)
2013/08/09 22:20:56
FWIW... You don't actually need to make it virtua
bbudge
2013/08/09 23:05:28
Done.
|
| + |
| + PP_FileHandle file_handle_; |
| + base::PlatformFileInfo file_info_; |
| + }; |
| + |
| + // Class to perform file read operations across multiple threads. |
| + class ReadOp : public base::RefCountedThreadSafe<ReadOp> { |
| + public: |
| + ReadOp(PP_FileHandle file_handle, int64_t offset, int32_t bytes_to_read); |
| + |
| + // Reads the file. Called on the file thread (non-blocking) or the plugin |
| + // thread (blocking). |
| + int32_t DoWork(); |
| + |
| + char* buffer() const { return buffer_.get(); } |
| + |
| + private: |
| + friend class base::RefCountedThreadSafe<ReadOp>; |
| + virtual ~ReadOp(); |
| + |
| + PP_FileHandle file_handle_; |
| + int64_t offset_; |
| + int32_t bytes_to_read_; |
| + scoped_ptr<char[]> buffer_; |
| + }; |
| + |
| int32_t ReadValidated(int64_t offset, |
| int32_t bytes_to_read, |
| const PP_ArrayOutput& array_output, |
| @@ -74,19 +114,23 @@ class PPAPI_PROXY_EXPORT FileIOResource |
| void CloseFileHandle(); |
| + |
| + void OnFileTaskComplete(scoped_refptr<TrackedCallback> callback, |
| + int32_t result); |
| + |
| + // Completion tasks for file operations that are done in the plugin. |
| + int32_t OnQueryComplete(scoped_refptr<QueryOp> query_op, |
| + PP_FileInfo* info, |
| + int32_t result); |
| + int32_t OnReadComplete(scoped_refptr<ReadOp> read_op, |
| + PP_ArrayOutput array_output, |
| + int32_t result); |
| + |
| // Reply message handlers for operations that are done in the host. |
| void OnPluginMsgGeneralComplete(scoped_refptr<TrackedCallback> callback, |
| const ResourceMessageReplyParams& params); |
| void OnPluginMsgOpenFileComplete(scoped_refptr<TrackedCallback> callback, |
| const ResourceMessageReplyParams& params); |
| - void OnPluginMsgQueryComplete(scoped_refptr<TrackedCallback> callback, |
| - PP_FileInfo* output_info_, |
| - const ResourceMessageReplyParams& params, |
| - const PP_FileInfo& info); |
| - void OnPluginMsgReadComplete(scoped_refptr<TrackedCallback> callback, |
| - PP_ArrayOutput array_output, |
| - const ResourceMessageReplyParams& params, |
| - const std::string& data); |
| void OnPluginMsgRequestOSFileHandleComplete( |
| scoped_refptr<TrackedCallback> callback, |
| PP_FileHandle* output_handle, |