summaryrefslogtreecommitdiffstats
path: root/net/base/file_stream_context_posix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/base/file_stream_context_posix.cc')
-rw-r--r--net/base/file_stream_context_posix.cc60
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