Index: net/base/file_stream_context.h |
diff --git a/net/base/file_stream_context.h b/net/base/file_stream_context.h |
index c4a06ee1de62c4168675ae47d3150fc65069670b..e89016218843052bf82b415db2ce70b38fd36ceb 100644 |
--- a/net/base/file_stream_context.h |
+++ b/net/base/file_stream_context.h |
@@ -33,7 +33,6 @@ |
#include "base/task_runner.h" |
#include "net/base/completion_callback.h" |
#include "net/base/file_stream.h" |
-#include "net/base/file_stream_whence.h" |
#if defined(OS_POSIX) |
#include <errno.h> |
@@ -50,7 +49,7 @@ class IOBuffer; |
#if defined(OS_WIN) |
class FileStream::Context : public base::MessageLoopForIO::IOHandler { |
#elif defined(OS_POSIX) |
-class FileStream::Context { |
+class FileStream::Context : public base::MessageLoopForIO::Watcher { |
#endif |
public: |
//////////////////////////////////////////////////////////////////////////// |
@@ -60,23 +59,23 @@ class FileStream::Context { |
explicit Context(const scoped_refptr<base::TaskRunner>& task_runner); |
Context(base::File file, const scoped_refptr<base::TaskRunner>& task_runner); |
-#if defined(OS_WIN) |
virtual ~Context(); |
-#elif defined(OS_POSIX) |
- ~Context(); |
-#endif |
- int ReadAsync(IOBuffer* buf, |
- int buf_len, |
- const CompletionCallback& callback); |
+ int Read(IOBuffer* buf, |
+ int buf_len, |
+ const CompletionCallback& callback); |
- int WriteAsync(IOBuffer* buf, |
- int buf_len, |
- const CompletionCallback& callback); |
+ int ReadNonBlocking(IOBuffer* buf, |
+ int buf_len, |
+ const CompletionCallback& callback); |
- //////////////////////////////////////////////////////////////////////////// |
- // Inline methods. |
- //////////////////////////////////////////////////////////////////////////// |
+ int Write(IOBuffer* buf, |
+ int buf_len, |
+ const CompletionCallback& callback); |
+ |
+ int WriteNonBlocking(IOBuffer* buf, |
+ int buf_len, |
+ const CompletionCallback& callback); |
const base::File& file() const { return file_; } |
bool async_in_progress() const { return async_in_progress_; } |
@@ -90,23 +89,19 @@ class FileStream::Context { |
// not closed yet. |
void Orphan(); |
- void OpenAsync(const base::FilePath& path, |
- int open_flags, |
- const CompletionCallback& callback); |
+ void Open(const base::FilePath& path, |
+ int open_flags, |
+ const CompletionCallback& callback); |
- void CloseAsync(const CompletionCallback& callback); |
+ void Close(const CompletionCallback& callback); |
- void SeekAsync(Whence whence, |
- int64 offset, |
- const Int64CompletionCallback& callback); |
+ void Seek(base::File::Whence whence, |
+ int64 offset, |
+ const Int64CompletionCallback& callback); |
- void FlushAsync(const CompletionCallback& callback); |
+ void Flush(const CompletionCallback& callback); |
private: |
- //////////////////////////////////////////////////////////////////////////// |
- // Platform-independent methods implemented in file_stream_context.cc. |
- //////////////////////////////////////////////////////////////////////////// |
- |
struct IOResult { |
IOResult(); |
IOResult(int64 result, int os_error); |
@@ -129,10 +124,16 @@ class FileStream::Context { |
IOResult error_code; |
}; |
+ //////////////////////////////////////////////////////////////////////////// |
+ // Platform-independent methods implemented in file_stream_context.cc. |
+ //////////////////////////////////////////////////////////////////////////// |
+ |
OpenResult OpenFileImpl(const base::FilePath& path, int open_flags); |
IOResult CloseFileImpl(); |
+ IOResult FlushFileImpl(); |
+ |
void OnOpenCompleted(const CompletionCallback& callback, |
OpenResult open_result); |
@@ -140,37 +141,23 @@ class FileStream::Context { |
Int64CompletionCallback IntToInt64(const CompletionCallback& callback); |
- // Called when asynchronous Open() or Seek() |
- // is completed. |result| contains the result or a network error code. |
+ // Called when Open() or Seek() completes. |result| contains the result or a |
+ // network error code. |
void OnAsyncCompleted(const Int64CompletionCallback& callback, |
const IOResult& result); |
//////////////////////////////////////////////////////////////////////////// |
- // Helper stuff which is platform-dependent but is used in the platform- |
- // independent code implemented in file_stream_context.cc. These helpers were |
- // introduced solely to implement as much of the Context methods as |
- // possible independently from platform. |
- //////////////////////////////////////////////////////////////////////////// |
- |
-#if defined(OS_WIN) |
- int GetLastErrno() { return GetLastError(); } |
- void OnAsyncFileOpened(); |
-#elif defined(OS_POSIX) |
- int GetLastErrno() { return errno; } |
- void OnAsyncFileOpened() {} |
- void CancelIo(base::PlatformFile) {} |
-#endif |
- |
- //////////////////////////////////////////////////////////////////////////// |
// Platform-dependent methods implemented in |
// file_stream_context_{win,posix}.cc. |
//////////////////////////////////////////////////////////////////////////// |
// Adjusts the position from where the data is read. |
- IOResult SeekFileImpl(Whence whence, int64 offset); |
+ IOResult SeekFileImpl(base::File::Whence whence, int64 offset); |
- // Flushes all data written to the stream. |
wtc
2014/06/16 23:01:44
Should we preserve this comment in the new code?
rvargas (doing something else)
2014/06/18 01:36:38
Looks kind of an empty comment to me, especially g
|
- IOResult FlushFileImpl(); |
+ void OnFileOpened(); |
+ |
+ // The stream is going away. |
+ void CancelIO(); |
#if defined(OS_WIN) |
void IOCompletionIsPending(const CompletionCallback& callback, IOBuffer* buf); |
@@ -188,17 +175,24 @@ class FileStream::Context { |
// signals and calls MapSystemError() to map errno to net error codes. |
// It tries to write to completion. |
IOResult WriteFileImpl(scoped_refptr<IOBuffer> buf, int buf_len); |
+ |
+ // MessageLoopForIO::Watcher interface |
+ virtual void OnFileCanReadWithoutBlocking(int fd) OVERRIDE; |
+ virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE; |
#endif |
base::File file_; |
bool async_in_progress_; |
bool orphaned_; |
scoped_refptr<base::TaskRunner> task_runner_; |
+ CompletionCallback callback_; |
+ scoped_refptr<IOBuffer> in_flight_buf_; |
#if defined(OS_WIN) |
base::MessageLoopForIO::IOContext io_context_; |
- CompletionCallback callback_; |
- scoped_refptr<IOBuffer> in_flight_buf_; |
+#elif defined(OS_POSIX) |
+ base::MessageLoopForIO::FileDescriptorWatcher file_watcher_; |
+ int buf_len_; |
wtc
2014/06/16 23:01:44
Document this member. I found that it is used in c
rvargas (doing something else)
2014/06/18 01:36:38
removed
|
#endif |
DISALLOW_COPY_AND_ASSIGN(Context); |