OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // This file defines FileStream, a basic interface for reading and writing files | 5 // This file defines FileStream, a basic interface for reading and writing files |
6 // synchronously or asynchronously with support for seeking to an offset. | 6 // synchronously or asynchronously with support for seeking to an offset. |
7 // Note that even when used asynchronously, only one operation is supported at | 7 // Note that even when used asynchronously, only one operation is supported at |
8 // a time. | 8 // a time. |
9 | 9 |
10 #ifndef NET_BASE_FILE_STREAM_H_ | 10 #ifndef NET_BASE_FILE_STREAM_H_ |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 // position is returned, or a value < 0 on error. | 190 // position is returned, or a value < 0 on error. |
191 // WARNING: one may not truncate a file beyond its current length on any | 191 // WARNING: one may not truncate a file beyond its current length on any |
192 // platform with this call. | 192 // platform with this call. |
193 virtual int64 Truncate(int64 bytes); | 193 virtual int64 Truncate(int64 bytes); |
194 | 194 |
195 // Forces out a filesystem sync on this file to make sure that the file was | 195 // Forces out a filesystem sync on this file to make sure that the file was |
196 // written out to disk and is not currently sitting in the buffer. This does | 196 // written out to disk and is not currently sitting in the buffer. This does |
197 // not have to be called, it just forces one to happen at the time of | 197 // not have to be called, it just forces one to happen at the time of |
198 // calling. | 198 // calling. |
199 // | 199 // |
200 /// Returns an error code if the operation could not be performed. | 200 // The file must be opened with PLATFORM_FILE_ASYNC, and a non-null |
| 201 // callback must be passed to this method. If the write could not |
| 202 // complete synchronously, then ERR_IO_PENDING is returned, and the |
| 203 // callback will be run on the thread where Flush() was called when |
| 204 // the write has completed. |
| 205 // |
| 206 // It is valid to destroy or close the file stream while there is an |
| 207 // asynchronous flush in progress. That will cancel the flush and allow |
| 208 // the buffer to be freed. |
| 209 // |
| 210 // It is invalid to request any asynchronous operations while there is an |
| 211 // in-flight asynchronous operation. |
201 // | 212 // |
202 // This method should not be called if the stream was opened READ_ONLY. | 213 // This method should not be called if the stream was opened READ_ONLY. |
203 virtual int Flush(); | 214 virtual int Flush(const CompletionCallback& callback); |
| 215 |
| 216 // Forces out a filesystem sync on this file to make sure that the file was |
| 217 // written out to disk and is not currently sitting in the buffer. This does |
| 218 // not have to be called, it just forces one to happen at the time of |
| 219 // calling. |
| 220 // |
| 221 // Returns an error code if the operation could not be performed. |
| 222 // |
| 223 // This method should not be called if the stream was opened READ_ONLY. |
| 224 virtual int FlushSync(); |
204 | 225 |
205 // Turns on UMA error statistics gathering. | 226 // Turns on UMA error statistics gathering. |
206 void EnableErrorStatistics(); | 227 void EnableErrorStatistics(); |
207 | 228 |
208 // Sets the source reference for net-internals logging. | 229 // Sets the source reference for net-internals logging. |
209 // Creates source dependency events between |owner_bound_net_log| and | 230 // Creates source dependency events between |owner_bound_net_log| and |
210 // |bound_net_log_|. Each gets an event showing the dependency on the other. | 231 // |bound_net_log_|. Each gets an event showing the dependency on the other. |
211 // If only one of those is valid, it gets an event showing that a change | 232 // If only one of those is valid, it gets an event showing that a change |
212 // of ownership happened, but without details. | 233 // of ownership happened, but without details. |
213 void SetBoundNetLogSource(const net::BoundNetLog& owner_bound_net_log); | 234 void SetBoundNetLogSource(const net::BoundNetLog& owner_bound_net_log); |
214 | 235 |
215 // Returns the underlying platform file for testing. | 236 // Returns the underlying platform file for testing. |
216 base::PlatformFile GetPlatformFileForTesting(); | 237 base::PlatformFile GetPlatformFileForTesting(); |
217 | 238 |
218 private: | 239 private: |
219 #if defined(OS_WIN) | 240 #if defined(OS_WIN) |
220 FileStreamWin impl_; | 241 FileStreamWin impl_; |
221 #elif defined(OS_POSIX) | 242 #elif defined(OS_POSIX) |
222 FileStreamPosix impl_; | 243 FileStreamPosix impl_; |
223 #endif | 244 #endif |
224 | 245 |
225 DISALLOW_COPY_AND_ASSIGN(FileStream); | 246 DISALLOW_COPY_AND_ASSIGN(FileStream); |
226 }; | 247 }; |
227 | 248 |
228 } // namespace net | 249 } // namespace net |
229 | 250 |
230 #endif // NET_BASE_FILE_STREAM_H_ | 251 #endif // NET_BASE_FILE_STREAM_H_ |
OLD | NEW |