| 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 43   // started then an error code is returned. | 43   // started then an error code is returned. | 
| 44   // | 44   // | 
| 45   // Once the operation is done, |callback| will be run on the thread where | 45   // Once the operation is done, |callback| will be run on the thread where | 
| 46   // Open() was called, with the result code. open_flags is a bitfield of | 46   // Open() was called, with the result code. open_flags is a bitfield of | 
| 47   // base::File::Flags. | 47   // base::File::Flags. | 
| 48   // | 48   // | 
| 49   // If the file stream is not closed manually, the underlying file will be | 49   // If the file stream is not closed manually, the underlying file will be | 
| 50   // automatically closed when FileStream is destructed in an asynchronous | 50   // automatically closed when FileStream is destructed in an asynchronous | 
| 51   // manner (i.e. the file stream is closed in the background but you don't | 51   // manner (i.e. the file stream is closed in the background but you don't | 
| 52   // know when). | 52   // know when). | 
| 53   virtual int Open(const base::FilePath& path, int open_flags, | 53   virtual int Open(const base::FilePath& path, | 
|  | 54                    int open_flags, | 
| 54                    const CompletionCallback& callback); | 55                    const CompletionCallback& callback); | 
| 55 | 56 | 
| 56   // Returns ERR_IO_PENDING and closes the file asynchronously, calling | 57   // Returns ERR_IO_PENDING and closes the file asynchronously, calling | 
| 57   // |callback| when done. | 58   // |callback| when done. | 
| 58   // It is invalid to request any asynchronous operations while there is an | 59   // It is invalid to request any asynchronous operations while there is an | 
| 59   // in-flight asynchronous operation. | 60   // in-flight asynchronous operation. | 
| 60   virtual int Close(const CompletionCallback& callback); | 61   virtual int Close(const CompletionCallback& callback); | 
| 61 | 62 | 
| 62   // Returns true if Open succeeded and Close has not been called. | 63   // Returns true if Open succeeded and Close has not been called. | 
| 63   virtual bool IsOpen() const; | 64   virtual bool IsOpen() const; | 
| 64 | 65 | 
| 65   // Adjust the position from where data is read asynchronously. | 66   // Adjust the position from where data is read asynchronously. | 
| 66   // Upon success, ERR_IO_PENDING is returned and |callback| will be run | 67   // Upon success, ERR_IO_PENDING is returned and |callback| will be run | 
| 67   // on the thread where Seek() was called with the the stream position | 68   // on the thread where Seek() was called with the the stream position | 
| 68   // relative to the start of the file.  Otherwise, an error code is returned. | 69   // relative to the start of the file.  Otherwise, an error code is returned. | 
| 69   // It is invalid to request any asynchronous operations while there is an | 70   // It is invalid to request any asynchronous operations while there is an | 
| 70   // in-flight asynchronous operation. | 71   // in-flight asynchronous operation. | 
| 71   virtual int Seek(base::File::Whence whence, int64 offset, | 72   virtual int Seek(base::File::Whence whence, | 
|  | 73                    int64 offset, | 
| 72                    const Int64CompletionCallback& callback); | 74                    const Int64CompletionCallback& callback); | 
| 73 | 75 | 
| 74   // Call this method to read data from the current stream position | 76   // Call this method to read data from the current stream position | 
| 75   // asynchronously. Up to buf_len bytes will be copied into buf.  (In | 77   // asynchronously. Up to buf_len bytes will be copied into buf.  (In | 
| 76   // other words, partial reads are allowed.)  Returns the number of bytes | 78   // other words, partial reads are allowed.)  Returns the number of bytes | 
| 77   // copied, 0 if at end-of-file, or an error code if the operation could | 79   // copied, 0 if at end-of-file, or an error code if the operation could | 
| 78   // not be performed. | 80   // not be performed. | 
| 79   // | 81   // | 
| 80   // The file must be opened with FLAG_ASYNC, and a non-null | 82   // The file must be opened with FLAG_ASYNC, and a non-null | 
| 81   // callback must be passed to this method. If the read could not | 83   // callback must be passed to this method. If the read could not | 
| 82   // complete synchronously, then ERR_IO_PENDING is returned, and the | 84   // complete synchronously, then ERR_IO_PENDING is returned, and the | 
| 83   // callback will be run on the thread where Read() was called, when the | 85   // callback will be run on the thread where Read() was called, when the | 
| 84   // read has completed. | 86   // read has completed. | 
| 85   // | 87   // | 
| 86   // It is valid to destroy or close the file stream while there is an | 88   // It is valid to destroy or close the file stream while there is an | 
| 87   // asynchronous read in progress.  That will cancel the read and allow | 89   // asynchronous read in progress.  That will cancel the read and allow | 
| 88   // the buffer to be freed. | 90   // the buffer to be freed. | 
| 89   // | 91   // | 
| 90   // It is invalid to request any asynchronous operations while there is an | 92   // It is invalid to request any asynchronous operations while there is an | 
| 91   // in-flight asynchronous operation. | 93   // in-flight asynchronous operation. | 
| 92   // | 94   // | 
| 93   // This method must not be called if the stream was opened WRITE_ONLY. | 95   // This method must not be called if the stream was opened WRITE_ONLY. | 
| 94   virtual int Read(IOBuffer* buf, int buf_len, | 96   virtual int Read(IOBuffer* buf, | 
|  | 97                    int buf_len, | 
| 95                    const CompletionCallback& callback); | 98                    const CompletionCallback& callback); | 
| 96 | 99 | 
| 97   // Call this method to write data at the current stream position | 100   // Call this method to write data at the current stream position | 
| 98   // asynchronously.  Up to buf_len bytes will be written from buf. (In | 101   // asynchronously.  Up to buf_len bytes will be written from buf. (In | 
| 99   // other words, partial writes are allowed.)  Returns the number of | 102   // other words, partial writes are allowed.)  Returns the number of | 
| 100   // bytes written, or an error code if the operation could not be | 103   // bytes written, or an error code if the operation could not be | 
| 101   // performed. | 104   // performed. | 
| 102   // | 105   // | 
| 103   // The file must be opened with FLAG_ASYNC, and a non-null | 106   // The file must be opened with FLAG_ASYNC, and a non-null | 
| 104   // callback must be passed to this method. If the write could not | 107   // callback must be passed to this method. If the write could not | 
| 105   // complete synchronously, then ERR_IO_PENDING is returned, and the | 108   // complete synchronously, then ERR_IO_PENDING is returned, and the | 
| 106   // callback will be run on the thread where Write() was called when | 109   // callback will be run on the thread where Write() was called when | 
| 107   // the write has completed. | 110   // the write has completed. | 
| 108   // | 111   // | 
| 109   // It is valid to destroy or close the file stream while there is an | 112   // It is valid to destroy or close the file stream while there is an | 
| 110   // asynchronous write in progress.  That will cancel the write and allow | 113   // asynchronous write in progress.  That will cancel the write and allow | 
| 111   // the buffer to be freed. | 114   // the buffer to be freed. | 
| 112   // | 115   // | 
| 113   // It is invalid to request any asynchronous operations while there is an | 116   // It is invalid to request any asynchronous operations while there is an | 
| 114   // in-flight asynchronous operation. | 117   // in-flight asynchronous operation. | 
| 115   // | 118   // | 
| 116   // This method must not be called if the stream was opened READ_ONLY. | 119   // This method must not be called if the stream was opened READ_ONLY. | 
| 117   // | 120   // | 
| 118   // Zero byte writes are not allowed. | 121   // Zero byte writes are not allowed. | 
| 119   virtual int Write(IOBuffer* buf, int buf_len, | 122   virtual int Write(IOBuffer* buf, | 
|  | 123                     int buf_len, | 
| 120                     const CompletionCallback& callback); | 124                     const CompletionCallback& callback); | 
| 121 | 125 | 
| 122   // Forces out a filesystem sync on this file to make sure that the file was | 126   // Forces out a filesystem sync on this file to make sure that the file was | 
| 123   // written out to disk and is not currently sitting in the buffer. This does | 127   // written out to disk and is not currently sitting in the buffer. This does | 
| 124   // not have to be called, it just forces one to happen at the time of | 128   // not have to be called, it just forces one to happen at the time of | 
| 125   // calling. | 129   // calling. | 
| 126   // | 130   // | 
| 127   // The file must be opened with FLAG_ASYNC, and a non-null | 131   // The file must be opened with FLAG_ASYNC, and a non-null | 
| 128   // callback must be passed to this method. If the write could not | 132   // callback must be passed to this method. If the write could not | 
| 129   // complete synchronously, then ERR_IO_PENDING is returned, and the | 133   // complete synchronously, then ERR_IO_PENDING is returned, and the | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 152   // without explicitly calling Close, the file should be closed asynchronously | 156   // without explicitly calling Close, the file should be closed asynchronously | 
| 153   // without delaying FileStream's destructor. | 157   // without delaying FileStream's destructor. | 
| 154   scoped_ptr<Context> context_; | 158   scoped_ptr<Context> context_; | 
| 155 | 159 | 
| 156   DISALLOW_COPY_AND_ASSIGN(FileStream); | 160   DISALLOW_COPY_AND_ASSIGN(FileStream); | 
| 157 }; | 161 }; | 
| 158 | 162 | 
| 159 }  // namespace net | 163 }  // namespace net | 
| 160 | 164 | 
| 161 #endif  // NET_BASE_FILE_STREAM_H_ | 165 #endif  // NET_BASE_FILE_STREAM_H_ | 
| OLD | NEW | 
|---|