| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_ | 5 #ifndef NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_ |
| 6 #define NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_ | 6 #define NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 // Initialize() success results in discarding already written data. | 38 // Initialize() success results in discarding already written data. |
| 39 virtual int Initialize(const CompletionCallback& callback) = 0; | 39 virtual int Initialize(const CompletionCallback& callback) = 0; |
| 40 | 40 |
| 41 // Writes |num_bytes| bytes in |buffer|, and returns the number of bytes | 41 // Writes |num_bytes| bytes in |buffer|, and returns the number of bytes |
| 42 // written or an error code. If ERR_IO_PENDING is returned, |callback| will be | 42 // written or an error code. If ERR_IO_PENDING is returned, |callback| will be |
| 43 // run later with the result. | 43 // run later with the result. |
| 44 virtual int Write(IOBuffer* buffer, | 44 virtual int Write(IOBuffer* buffer, |
| 45 int num_bytes, | 45 int num_bytes, |
| 46 const CompletionCallback& callback) = 0; | 46 const CompletionCallback& callback) = 0; |
| 47 | 47 |
| 48 // Finishes writing. If ERR_IO_PENDING is returned, |callback| will be run | 48 // Finishes writing. If |net_error| is not OK, the writer might choose to skip |
| 49 // graceful shutdown. If ERR_IO_PENDING is returned, |callback| will be run |
| 49 // later with the result. | 50 // later with the result. |
| 50 virtual int Finish(const CompletionCallback& callback) = 0; | 51 virtual int Finish(int net_error, const CompletionCallback& callback) = 0; |
| 51 | 52 |
| 52 // Returns this instance's pointer as URLFetcherStringWriter when possible. | 53 // Returns this instance's pointer as URLFetcherStringWriter when possible. |
| 53 virtual URLFetcherStringWriter* AsStringWriter(); | 54 virtual URLFetcherStringWriter* AsStringWriter(); |
| 54 | 55 |
| 55 // Returns this instance's pointer as URLFetcherFileWriter when possible. | 56 // Returns this instance's pointer as URLFetcherFileWriter when possible. |
| 56 virtual URLFetcherFileWriter* AsFileWriter(); | 57 virtual URLFetcherFileWriter* AsFileWriter(); |
| 57 }; | 58 }; |
| 58 | 59 |
| 59 // URLFetcherResponseWriter implementation for std::string. | 60 // URLFetcherResponseWriter implementation for std::string. |
| 60 class NET_EXPORT URLFetcherStringWriter : public URLFetcherResponseWriter { | 61 class NET_EXPORT URLFetcherStringWriter : public URLFetcherResponseWriter { |
| 61 public: | 62 public: |
| 62 URLFetcherStringWriter(); | 63 URLFetcherStringWriter(); |
| 63 ~URLFetcherStringWriter() override; | 64 ~URLFetcherStringWriter() override; |
| 64 | 65 |
| 65 const std::string& data() const { return data_; } | 66 const std::string& data() const { return data_; } |
| 66 | 67 |
| 67 // URLFetcherResponseWriter overrides: | 68 // URLFetcherResponseWriter overrides: |
| 68 int Initialize(const CompletionCallback& callback) override; | 69 int Initialize(const CompletionCallback& callback) override; |
| 69 int Write(IOBuffer* buffer, | 70 int Write(IOBuffer* buffer, |
| 70 int num_bytes, | 71 int num_bytes, |
| 71 const CompletionCallback& callback) override; | 72 const CompletionCallback& callback) override; |
| 72 int Finish(const CompletionCallback& callback) override; | 73 int Finish(int net_error, const CompletionCallback& callback) override; |
| 73 URLFetcherStringWriter* AsStringWriter() override; | 74 URLFetcherStringWriter* AsStringWriter() override; |
| 74 | 75 |
| 75 private: | 76 private: |
| 76 std::string data_; | 77 std::string data_; |
| 77 | 78 |
| 78 DISALLOW_COPY_AND_ASSIGN(URLFetcherStringWriter); | 79 DISALLOW_COPY_AND_ASSIGN(URLFetcherStringWriter); |
| 79 }; | 80 }; |
| 80 | 81 |
| 81 // URLFetcherResponseWriter implementation for files. | 82 // URLFetcherResponseWriter implementation for files. |
| 82 class NET_EXPORT URLFetcherFileWriter : public URLFetcherResponseWriter { | 83 class NET_EXPORT URLFetcherFileWriter : public URLFetcherResponseWriter { |
| 83 public: | 84 public: |
| 84 // |file_path| is used as the destination path. If |file_path| is empty, | 85 // |file_path| is used as the destination path. If |file_path| is empty, |
| 85 // Initialize() will create a temporary file. | 86 // Initialize() will create a temporary file. |
| 86 URLFetcherFileWriter( | 87 URLFetcherFileWriter( |
| 87 scoped_refptr<base::SequencedTaskRunner> file_task_runner, | 88 scoped_refptr<base::SequencedTaskRunner> file_task_runner, |
| 88 const base::FilePath& file_path); | 89 const base::FilePath& file_path); |
| 89 ~URLFetcherFileWriter() override; | 90 ~URLFetcherFileWriter() override; |
| 90 | 91 |
| 91 const base::FilePath& file_path() const { return file_path_; } | 92 const base::FilePath& file_path() const { return file_path_; } |
| 92 | 93 |
| 93 // URLFetcherResponseWriter overrides: | 94 // URLFetcherResponseWriter overrides: |
| 94 int Initialize(const CompletionCallback& callback) override; | 95 int Initialize(const CompletionCallback& callback) override; |
| 95 int Write(IOBuffer* buffer, | 96 int Write(IOBuffer* buffer, |
| 96 int num_bytes, | 97 int num_bytes, |
| 97 const CompletionCallback& callback) override; | 98 const CompletionCallback& callback) override; |
| 98 int Finish(const CompletionCallback& callback) override; | 99 int Finish(int net_error, const CompletionCallback& callback) override; |
| 99 URLFetcherFileWriter* AsFileWriter() override; | 100 URLFetcherFileWriter* AsFileWriter() override; |
| 100 | 101 |
| 101 // Drops ownership of the file at |file_path_|. | 102 // Drops ownership of the file at |file_path_|. |
| 102 // This class will not delete it or write to it again. | 103 // This class will not delete it or write to it again. |
| 103 void DisownFile(); | 104 void DisownFile(); |
| 104 | 105 |
| 105 private: | 106 private: |
| 106 // Called when a write has been done. | 107 // Called when a write has been done. |
| 107 void DidWrite(const CompletionCallback& callback, int result); | 108 void DidWrite(const CompletionCallback& callback, int result); |
| 108 | 109 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 135 | 136 |
| 136 // Callbacks are created for use with base::FileUtilProxy. | 137 // Callbacks are created for use with base::FileUtilProxy. |
| 137 base::WeakPtrFactory<URLFetcherFileWriter> weak_factory_; | 138 base::WeakPtrFactory<URLFetcherFileWriter> weak_factory_; |
| 138 | 139 |
| 139 DISALLOW_COPY_AND_ASSIGN(URLFetcherFileWriter); | 140 DISALLOW_COPY_AND_ASSIGN(URLFetcherFileWriter); |
| 140 }; | 141 }; |
| 141 | 142 |
| 142 } // namespace net | 143 } // namespace net |
| 143 | 144 |
| 144 #endif // NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_ | 145 #endif // NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_ |
| OLD | NEW |