diff options
Diffstat (limited to 'net/base/file_stream_context_posix.cc')
-rw-r--r-- | net/base/file_stream_context_posix.cc | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/net/base/file_stream_context_posix.cc b/net/base/file_stream_context_posix.cc index 87fa106..d39b17a 100644 --- a/net/base/file_stream_context_posix.cc +++ b/net/base/file_stream_context_posix.cc @@ -68,11 +68,8 @@ 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; - } + if (fstat(file_, &info) != 0) + return RecordAndMapError(errno, FILE_ERROR_SOURCE_GET_SIZE); return static_cast<int64>(info.st_size); } @@ -99,9 +96,9 @@ int FileStream::Context::ReadAsync(IOBuffer* in_buf, 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; + int64 result = ReadFileImpl(buf, buf_len); + CheckForIOError(&result, FILE_ERROR_SOURCE_READ); + return result; } int FileStream::Context::WriteAsync(IOBuffer* in_buf, @@ -126,59 +123,54 @@ int FileStream::Context::WriteAsync(IOBuffer* in_buf, 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; + int64 result = WriteFileImpl(buf, buf_len); + CheckForIOError(&result, FILE_ERROR_SOURCE_WRITE); + return 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; - } + int result = ftruncate(file_, bytes); + if (result == 0) + return bytes; - return bytes; + return RecordAndMapError(errno, FILE_ERROR_SOURCE_SET_EOF); } -FileStream::Context::IOResult FileStream::Context::SeekFileImpl(Whence whence, - int64 offset) { +int64 FileStream::Context::SeekFileImpl(Whence whence, int64 offset) { off_t res = lseek(file_, static_cast<off_t>(offset), static_cast<int>(whence)); if (res == static_cast<off_t>(-1)) - return IOResult::FromOSError(errno); + return errno; - return IOResult(res, 0); + return res; } -FileStream::Context::IOResult FileStream::Context::FlushFileImpl() { +int64 FileStream::Context::FlushFileImpl() { ssize_t res = HANDLE_EINTR(fsync(file_)); if (res == -1) - return IOResult::FromOSError(errno); + return errno; - return IOResult(res, 0); + return res; } -FileStream::Context::IOResult FileStream::Context::ReadFileImpl( - scoped_refptr<IOBuffer> buf, - int buf_len) { +int64 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(), static_cast<size_t>(buf_len))); if (res == -1) - return IOResult::FromOSError(errno); + return errno; - return IOResult(res, 0); + return res; } -FileStream::Context::IOResult FileStream::Context::WriteFileImpl( - scoped_refptr<IOBuffer> buf, - int buf_len) { +int64 FileStream::Context::WriteFileImpl(scoped_refptr<IOBuffer> buf, + int buf_len) { ssize_t res = HANDLE_EINTR(write(file_, buf->data(), buf_len)); if (res == -1) - return IOResult::FromOSError(errno); + return errno; - return IOResult(res, 0); + return res; } } // namespace net |