diff options
Diffstat (limited to 'chromium/net/base/file_stream_context_posix.cc')
-rw-r--r-- | chromium/net/base/file_stream_context_posix.cc | 80 |
1 files changed, 14 insertions, 66 deletions
diff --git a/chromium/net/base/file_stream_context_posix.cc b/chromium/net/base/file_stream_context_posix.cc index 6e6bc6eaa69..9f3d060822f 100644 --- a/chromium/net/base/file_stream_context_posix.cc +++ b/chromium/net/base/file_stream_context_posix.cc @@ -22,6 +22,7 @@ #include "base/logging.h" #include "base/metrics/histogram.h" #include "base/posix/eintr_wrapper.h" +#include "base/task_runner.h" #include "base/task_runner_util.h" #include "net/base/io_buffer.h" #include "net/base/net_errors.h" @@ -44,42 +45,23 @@ COMPILE_ASSERT(FROM_BEGIN == SEEK_SET && FROM_CURRENT == SEEK_CUR && FROM_END == SEEK_END, whence_matches_system); -FileStream::Context::Context(const BoundNetLog& bound_net_log, - const scoped_refptr<base::TaskRunner>& task_runner) - : file_(base::kInvalidPlatformFileValue), - record_uma_(false), - async_in_progress_(false), +FileStream::Context::Context(const scoped_refptr<base::TaskRunner>& task_runner) + : async_in_progress_(false), orphaned_(false), - bound_net_log_(bound_net_log), task_runner_(task_runner) { } -FileStream::Context::Context(base::PlatformFile file, - const BoundNetLog& bound_net_log, - int /* open_flags */, +FileStream::Context::Context(base::File file, const scoped_refptr<base::TaskRunner>& task_runner) - : file_(file), - record_uma_(false), + : file_(file.Pass()), async_in_progress_(false), orphaned_(false), - bound_net_log_(bound_net_log), task_runner_(task_runner) { } FileStream::Context::~Context() { } -int64 FileStream::Context::GetFileSize() const { - struct stat info; - if (fstat(file_, &info) != 0) { - IOResult result = IOResult::FromOSError(errno); - RecordError(result, FILE_ERROR_SOURCE_GET_SIZE); - return result.result; - } - - return static_cast<int64>(info.st_size); -} - int FileStream::Context::ReadAsync(IOBuffer* in_buf, int buf_len, const CompletionCallback& callback) { @@ -90,23 +72,15 @@ int FileStream::Context::ReadAsync(IOBuffer* in_buf, task_runner_.get(), FROM_HERE, base::Bind(&Context::ReadFileImpl, base::Unretained(this), buf, buf_len), - base::Bind(&Context::ProcessAsyncResult, + base::Bind(&Context::OnAsyncCompleted, base::Unretained(this), - IntToInt64(callback), - FILE_ERROR_SOURCE_READ)); + IntToInt64(callback))); DCHECK(posted); async_in_progress_ = true; return ERR_IO_PENDING; } -int FileStream::Context::ReadSync(char* in_buf, int buf_len) { - scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(in_buf); - IOResult result = ReadFileImpl(buf, buf_len); - RecordError(result, FILE_ERROR_SOURCE_READ); - return result.result; -} - int FileStream::Context::WriteAsync(IOBuffer* in_buf, int buf_len, const CompletionCallback& callback) { @@ -117,36 +91,18 @@ int FileStream::Context::WriteAsync(IOBuffer* in_buf, task_runner_.get(), FROM_HERE, base::Bind(&Context::WriteFileImpl, base::Unretained(this), buf, buf_len), - base::Bind(&Context::ProcessAsyncResult, + base::Bind(&Context::OnAsyncCompleted, base::Unretained(this), - IntToInt64(callback), - FILE_ERROR_SOURCE_WRITE)); + IntToInt64(callback))); DCHECK(posted); async_in_progress_ = true; return ERR_IO_PENDING; } -int FileStream::Context::WriteSync(const char* in_buf, int buf_len) { - scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(in_buf); - IOResult result = WriteFileImpl(buf, buf_len); - RecordError(result, FILE_ERROR_SOURCE_WRITE); - return result.result; -} - -int FileStream::Context::Truncate(int64 bytes) { - if (ftruncate(file_, bytes) != 0) { - IOResult result = IOResult::FromOSError(errno); - RecordError(result, FILE_ERROR_SOURCE_SET_EOF); - return result.result; - } - - return bytes; -} - FileStream::Context::IOResult FileStream::Context::SeekFileImpl(Whence whence, int64 offset) { - off_t res = lseek(file_, static_cast<off_t>(offset), + off_t res = lseek(file_.GetPlatformFile(), static_cast<off_t>(offset), static_cast<int>(whence)); if (res == static_cast<off_t>(-1)) return IOResult::FromOSError(errno); @@ -155,7 +111,7 @@ FileStream::Context::IOResult FileStream::Context::SeekFileImpl(Whence whence, } FileStream::Context::IOResult FileStream::Context::FlushFileImpl() { - ssize_t res = HANDLE_EINTR(fsync(file_)); + ssize_t res = HANDLE_EINTR(fsync(file_.GetPlatformFile())); if (res == -1) return IOResult::FromOSError(errno); @@ -166,7 +122,7 @@ FileStream::Context::IOResult FileStream::Context::ReadFileImpl( scoped_refptr<IOBuffer> buf, int buf_len) { // Loop in the case of getting interrupted by a signal. - ssize_t res = HANDLE_EINTR(read(file_, buf->data(), + ssize_t res = HANDLE_EINTR(read(file_.GetPlatformFile(), buf->data(), static_cast<size_t>(buf_len))); if (res == -1) return IOResult::FromOSError(errno); @@ -177,20 +133,12 @@ FileStream::Context::IOResult FileStream::Context::ReadFileImpl( FileStream::Context::IOResult FileStream::Context::WriteFileImpl( scoped_refptr<IOBuffer> buf, int buf_len) { - ssize_t res = HANDLE_EINTR(write(file_, buf->data(), buf_len)); + ssize_t res = HANDLE_EINTR(write(file_.GetPlatformFile(), buf->data(), + buf_len)); if (res == -1) return IOResult::FromOSError(errno); return IOResult(res, 0); } -FileStream::Context::IOResult FileStream::Context::CloseFileImpl() { - bool success = base::ClosePlatformFile(file_); - file_ = base::kInvalidPlatformFileValue; - if (!success) - return IOResult::FromOSError(errno); - - return IOResult(OK, 0); -} - } // namespace net |