| Index: net/base/file_stream_posix.cc
|
| diff --git a/net/base/file_stream_posix.cc b/net/base/file_stream_posix.cc
|
| index a4c5b3cc27fdc08b87bb77ecd04878ab7bd85b62..e947a6e5fa38f160dc1e190ecccb17f12d908a2c 100644
|
| --- a/net/base/file_stream_posix.cc
|
| +++ b/net/base/file_stream_posix.cc
|
| @@ -298,13 +298,8 @@ FileStream::FileStream()
|
| }
|
|
|
| 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());
|
| - }
|
| + : file_(base::kInvalidPlatformFileValue) {
|
| + Open(file, flags);
|
| }
|
|
|
| FileStream::~FileStream() {
|
| @@ -323,6 +318,12 @@ void FileStream::Close() {
|
| }
|
| }
|
|
|
| +void FileStream::Release() {
|
| + // Abort any existing asynchronous operations.
|
| + async_context_.reset();
|
| + file_ = base::kInvalidPlatformFileValue;
|
| +}
|
| +
|
| int FileStream::Open(const FilePath& path, int open_flags) {
|
| if (IsOpen()) {
|
| DLOG(FATAL) << "File is already open!";
|
| @@ -344,6 +345,21 @@ 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 (open_flags & base::PLATFORM_FILE_ASYNC)
|
| + async_context_.reset(new AsyncContext());
|
| +
|
| + return OK;
|
| +}
|
| +
|
| bool FileStream::IsOpen() const {
|
| return file_ != base::kInvalidPlatformFileValue;
|
| }
|
| @@ -445,7 +461,7 @@ int64 FileStream::Truncate(int64 bytes) {
|
| if (!IsOpen())
|
| return ERR_UNEXPECTED;
|
|
|
| - // We better be open for reading.
|
| + // We better be open for writing.
|
| DCHECK(open_flags_ & base::PLATFORM_FILE_WRITE);
|
|
|
| // Seek to the position to truncate from.
|
|
|