Index: net/base/file_stream_win.cc |
diff --git a/net/base/file_stream_win.cc b/net/base/file_stream_win.cc |
index cec6a9d65cfe27e594e68649474f90a402e800b4..e1928a73f4409b1d6f5bdc9d10eaffc5eb1d910b 100644 |
--- a/net/base/file_stream_win.cc |
+++ b/net/base/file_stream_win.cc |
@@ -120,16 +120,10 @@ FileStream::FileStream() |
open_flags_(0) { |
} |
-FileStream::FileStream(base::PlatformFile file, int flags) |
- : file_(file), |
- open_flags_(flags) { |
- // If the file handle is opened with base::PLATFORM_FILE_ASYNC, we need to |
- // make sure we will perform asynchronous File IO to it. |
- if (flags & base::PLATFORM_FILE_ASYNC) { |
- async_context_.reset(new AsyncContext(this)); |
- MessageLoopForIO::current()->RegisterIOHandler(file_, |
- async_context_.get()); |
- } |
+FileStream::FileStream(base::PlatformFile file, int open_flags) |
+ : file_(INVALID_HANDLE_VALUE), |
+ open_flags_(0) { |
+ Open(file, open_flags); |
} |
FileStream::~FileStream() { |
@@ -147,6 +141,13 @@ void FileStream::Close() { |
} |
} |
+void FileStream::Release() { |
+ if (file_ != INVALID_HANDLE_VALUE) |
+ CancelIo(file_); |
+ async_context_.reset(); |
+ file_ = INVALID_HANDLE_VALUE; |
+} |
+ |
int FileStream::Open(const FilePath& path, int open_flags) { |
if (IsOpen()) { |
DLOG(FATAL) << "File is already open!"; |
@@ -170,6 +171,26 @@ int FileStream::Open(const FilePath& path, int open_flags) { |
return OK; |
} |
+int FileStream::Open(base::PlatformFile file, int open_flags) { |
+ if (IsOpen()) { |
+ DLOG(FATAL) << "File is already open!"; |
+ return ERR_UNEXPECTED; |
+ } |
+ |
+ open_flags_ = open_flags; |
+ file_ = file; |
+ |
+ // If the file handle is opened with base::PLATFORM_FILE_ASYNC, we need to |
+ // make sure we will perform asynchronous File IO to it. |
+ if (open_flags_ & base::PLATFORM_FILE_ASYNC) { |
+ async_context_.reset(new AsyncContext(this)); |
+ MessageLoopForIO::current()->RegisterIOHandler(file_, |
+ async_context_.get()); |
+ } |
+ |
+ return OK; |
+} |
+ |
bool FileStream::IsOpen() const { |
return file_ != INVALID_HANDLE_VALUE; |
} |