Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Unified Diff: net/base/file_stream_context_win.cc

Issue 189393002: net: Update FileStream to use base::File instead of PlatformFile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use OPEN_ALWAYS on the async unit test Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/base/file_stream_context_posix.cc ('k') | net/base/file_stream_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/file_stream_context_win.cc
diff --git a/net/base/file_stream_context_win.cc b/net/base/file_stream_context_win.cc
index 4a666c70a5b98d746e0af948669b74dfbf0d6e80..cb7b41c09d42bacb40b5c0633c45c60ee466f61f 100644
--- a/net/base/file_stream_context_win.cc
+++ b/net/base/file_stream_context_win.cc
@@ -40,10 +40,10 @@ void IncrementOffset(OVERLAPPED* overlapped, DWORD count) {
FileStream::Context::Context(const BoundNetLog& bound_net_log,
const scoped_refptr<base::TaskRunner>& task_runner)
: io_context_(),
- file_(base::kInvalidPlatformFileValue),
record_uma_(false),
async_in_progress_(false),
orphaned_(false),
+ async_(false),
bound_net_log_(bound_net_log),
error_source_(FILE_ERROR_SOURCE_COUNT),
task_runner_(task_runner) {
@@ -51,24 +51,41 @@ FileStream::Context::Context(const BoundNetLog& bound_net_log,
memset(&io_context_.overlapped, 0, sizeof(io_context_.overlapped));
}
-FileStream::Context::Context(base::PlatformFile file,
+FileStream::Context::Context(base::File file,
const BoundNetLog& bound_net_log,
- int open_flags,
const scoped_refptr<base::TaskRunner>& task_runner)
: io_context_(),
- file_(file),
+ file_(file.Pass()),
record_uma_(false),
async_in_progress_(false),
orphaned_(false),
+ async_(false),
bound_net_log_(bound_net_log),
error_source_(FILE_ERROR_SOURCE_COUNT),
task_runner_(task_runner) {
io_context_.handler = this;
memset(&io_context_.overlapped, 0, sizeof(io_context_.overlapped));
- if (file_ != base::kInvalidPlatformFileValue &&
- (open_flags & base::PLATFORM_FILE_ASYNC)) {
+ if (file_.IsValid() && file_.async())
+ OnAsyncFileOpened();
+}
+
+FileStream::Context::Context(base::File file,
+ int flags,
+ const BoundNetLog& bound_net_log,
+ const scoped_refptr<base::TaskRunner>& task_runner)
+ : io_context_(),
+ file_(file.Pass()),
+ record_uma_(false),
+ async_in_progress_(false),
+ orphaned_(false),
+ async_((flags & base::File::FLAG_ASYNC) == base::File::FLAG_ASYNC),
+ bound_net_log_(bound_net_log),
+ error_source_(FILE_ERROR_SOURCE_COUNT),
+ task_runner_(task_runner) {
+ io_context_.handler = this;
+ memset(&io_context_.overlapped, 0, sizeof(io_context_.overlapped));
+ if (file_.IsValid() && (file_.async() || flags & base::File::FLAG_ASYNC))
OnAsyncFileOpened();
- }
}
FileStream::Context::~Context() {
@@ -76,7 +93,7 @@ FileStream::Context::~Context() {
int64 FileStream::Context::GetFileSize() const {
LARGE_INTEGER file_size;
- if (!GetFileSizeEx(file_, &file_size)) {
+ if (!GetFileSizeEx(file_.GetPlatformFile(), &file_size)) {
IOResult error = IOResult::FromOSError(GetLastError());
LOG(WARNING) << "GetFileSizeEx failed: " << error.os_error;
RecordError(error, FILE_ERROR_SOURCE_GET_SIZE);
@@ -93,7 +110,7 @@ int FileStream::Context::ReadAsync(IOBuffer* buf,
error_source_ = FILE_ERROR_SOURCE_READ;
DWORD bytes_read;
- if (!ReadFile(file_, buf->data(), buf_len,
+ if (!ReadFile(file_.GetPlatformFile(), buf->data(), buf_len,
&bytes_read, &io_context_.overlapped)) {
IOResult error = IOResult::FromOSError(GetLastError());
if (error.os_error == ERROR_IO_PENDING) {
@@ -113,7 +130,7 @@ int FileStream::Context::ReadAsync(IOBuffer* buf,
int FileStream::Context::ReadSync(char* buf, int buf_len) {
DWORD bytes_read;
- if (!ReadFile(file_, buf, buf_len, &bytes_read, NULL)) {
+ if (!ReadFile(file_.GetPlatformFile(), buf, buf_len, &bytes_read, NULL)) {
IOResult error = IOResult::FromOSError(GetLastError());
if (error.os_error == ERROR_HANDLE_EOF) {
return 0; // Report EOF by returning 0 bytes read.
@@ -133,7 +150,7 @@ int FileStream::Context::WriteAsync(IOBuffer* buf,
error_source_ = FILE_ERROR_SOURCE_WRITE;
DWORD bytes_written = 0;
- if (!WriteFile(file_, buf->data(), buf_len,
+ if (!WriteFile(file_.GetPlatformFile(), buf->data(), buf_len,
&bytes_written, &io_context_.overlapped)) {
IOResult error = IOResult::FromOSError(GetLastError());
if (error.os_error == ERROR_IO_PENDING) {
@@ -151,7 +168,7 @@ int FileStream::Context::WriteAsync(IOBuffer* buf,
int FileStream::Context::WriteSync(const char* buf, int buf_len) {
DWORD bytes_written = 0;
- if (!WriteFile(file_, buf, buf_len, &bytes_written, NULL)) {
+ if (!WriteFile(file_.GetPlatformFile(), buf, buf_len, &bytes_written, NULL)) {
IOResult error = IOResult::FromOSError(GetLastError());
LOG(WARNING) << "WriteFile failed: " << error.os_error;
RecordError(error, FILE_ERROR_SOURCE_WRITE);
@@ -162,7 +179,7 @@ int FileStream::Context::WriteSync(const char* buf, int buf_len) {
}
int FileStream::Context::Truncate(int64 bytes) {
- if (!SetEndOfFile(file_)) {
+ if (!SetEndOfFile(file_.GetPlatformFile())) {
IOResult error = IOResult::FromOSError(GetLastError());
LOG(WARNING) << "SetEndOfFile failed: " << error.os_error;
RecordError(error, FILE_ERROR_SOURCE_SET_EOF);
@@ -173,7 +190,8 @@ int FileStream::Context::Truncate(int64 bytes) {
}
void FileStream::Context::OnAsyncFileOpened() {
- base::MessageLoopForIO::current()->RegisterIOHandler(file_, this);
+ base::MessageLoopForIO::current()->RegisterIOHandler(file_.GetPlatformFile(),
+ this);
}
FileStream::Context::IOResult FileStream::Context::SeekFileImpl(Whence whence,
@@ -181,7 +199,7 @@ FileStream::Context::IOResult FileStream::Context::SeekFileImpl(Whence whence,
LARGE_INTEGER distance, res;
distance.QuadPart = offset;
DWORD move_method = static_cast<DWORD>(whence);
- if (SetFilePointerEx(file_, distance, &res, move_method)) {
+ if (SetFilePointerEx(file_.GetPlatformFile(), distance, &res, move_method)) {
SetOffset(&io_context_.overlapped, res);
return IOResult(res.QuadPart, 0);
}
@@ -190,16 +208,7 @@ FileStream::Context::IOResult FileStream::Context::SeekFileImpl(Whence whence,
}
FileStream::Context::IOResult FileStream::Context::FlushFileImpl() {
- if (FlushFileBuffers(file_))
- return IOResult(OK, 0);
-
- return IOResult::FromOSError(GetLastError());
-}
-
-FileStream::Context::IOResult FileStream::Context::CloseFileImpl() {
- bool success = base::ClosePlatformFile(file_);
- file_ = base::kInvalidPlatformFileValue;
- if (success)
+ if (FlushFileBuffers(file_.GetPlatformFile()))
return IOResult(OK, 0);
return IOResult::FromOSError(GetLastError());
« no previous file with comments | « net/base/file_stream_context_posix.cc ('k') | net/base/file_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698