| Index: ppapi/native_client/src/trusted/plugin/file_downloader.h
|
| diff --git a/ppapi/native_client/src/trusted/plugin/file_downloader.h b/ppapi/native_client/src/trusted/plugin/file_downloader.h
|
| index 4fd7997cc92555f5e8294ad43868636e9af3b0c7..2dee5879513820b21c74d67257620171cef96bd4 100644
|
| --- a/ppapi/native_client/src/trusted/plugin/file_downloader.h
|
| +++ b/ppapi/native_client/src/trusted/plugin/file_downloader.h
|
| @@ -41,6 +41,37 @@ typedef std::vector<char>* FileStreamData;
|
| typedef CallbackSource<FileStreamData> StreamCallbackSource;
|
| typedef pp::CompletionCallbackWithOutput<FileStreamData> StreamCallback;
|
|
|
| +// RAII-style wrapper class
|
| +class NaClFileInfoAutoCloser {
|
| + public:
|
| + NaClFileInfoAutoCloser();
|
| +
|
| + explicit NaClFileInfoAutoCloser(NaClFileInfo* pass_ownership);
|
| +
|
| + ~NaClFileInfoAutoCloser() {
|
| + FreeResources();
|
| + }
|
| +
|
| + // Frees owned resources
|
| + void FreeResources();
|
| +
|
| + void TakeOwnership(NaClFileInfo* pass_ownership);
|
| +
|
| + // Return NaClFileInfo for temporary use, retaining ownership.
|
| + const NaClFileInfo& get() { return info_; }
|
| +
|
| + // Returns POSIX descriptor for temporary use, retaining ownership.
|
| + int get_desc() { return info_.desc; }
|
| +
|
| + // Returns ownership to caller
|
| + NaClFileInfo Release();
|
| +
|
| + private:
|
| + NACL_DISALLOW_COPY_AND_ASSIGN(NaClFileInfoAutoCloser);
|
| +
|
| + NaClFileInfo info_;
|
| +};
|
| +
|
| // A class that wraps PPAPI URLLoader and FileIO functionality for downloading
|
| // the url into a file and providing an open file descriptor.
|
| class FileDownloader {
|
| @@ -51,7 +82,6 @@ class FileDownloader {
|
| : instance_(NULL),
|
| file_open_notify_callback_(pp::BlockUntilComplete()),
|
| stream_finish_callback_(pp::BlockUntilComplete()),
|
| - file_handle_(PP_kInvalidFileHandle),
|
| file_io_private_interface_(NULL),
|
| url_loader_trusted_interface_(NULL),
|
| open_time_(-1),
|
| @@ -185,8 +215,6 @@ class FileDownloader {
|
| pp::CompletionCallback file_open_notify_callback_;
|
| pp::CompletionCallback stream_finish_callback_;
|
| pp::FileIO file_reader_;
|
| - PP_FileHandle file_handle_;
|
| - struct NaClFileToken file_token_;
|
| const PPB_FileIO_Private* file_io_private_interface_;
|
| const PPB_URLLoaderTrusted* url_loader_trusted_interface_;
|
| pp::URLLoader url_loader_;
|
| @@ -200,7 +228,7 @@ class FileDownloader {
|
| std::deque<char> buffer_;
|
| UrlSchemeType url_scheme_;
|
| StreamCallbackSource* data_stream_callback_source_;
|
| - NaClFileInfo cached_file_info_;
|
| + NaClFileInfoAutoCloser file_info_;
|
| };
|
| } // namespace plugin;
|
| #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_FILE_DOWNLOADER_H_
|
|
|