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

Unified Diff: util/file/fd_io.cc

Issue 811823003: Cross platform low level file IO wrappers (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: . Created 6 years 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 | « util/file/fd_io.h ('k') | util/file/file_io.h » ('j') | util/file/file_io.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: util/file/fd_io.cc
diff --git a/util/file/fd_io.cc b/util/file/fd_io.cc
deleted file mode 100644
index cc97400ba34ba3e827a71f9c9dc1955ad18e1e8d..0000000000000000000000000000000000000000
--- a/util/file/fd_io.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2014 The Crashpad Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "util/file/fd_io.h"
-
-#include <unistd.h>
-
-#include "base/logging.h"
-#include "base/numerics/safe_conversions.h"
-#include "base/posix/eintr_wrapper.h"
-
-namespace {
-
-struct ReadTraits {
- using VoidBufferType = void*;
- using CharBufferType = char*;
- static ssize_t Operate(int fd, CharBufferType buffer, size_t size) {
- return read(fd, buffer, size);
- }
-};
-
-struct WriteTraits {
- using VoidBufferType = const void*;
- using CharBufferType = const char*;
- static ssize_t Operate(int fd, CharBufferType buffer, size_t size) {
- return write(fd, buffer, size);
- }
-};
-
-template <typename Traits>
-ssize_t ReadOrWrite(int fd,
- typename Traits::VoidBufferType buffer,
- size_t size) {
- typename Traits::CharBufferType buffer_c =
- reinterpret_cast<typename Traits::CharBufferType>(buffer);
-
- ssize_t total_bytes = 0;
- while (size > 0) {
- ssize_t bytes = HANDLE_EINTR(Traits::Operate(fd, buffer_c, size));
- if (bytes < 0) {
- return bytes;
- } else if (bytes == 0) {
- break;
- }
-
- buffer_c += bytes;
- size -= bytes;
- total_bytes += bytes;
- }
-
- return total_bytes;
-}
-
-} // namespace
-
-namespace crashpad {
-
-ssize_t ReadFD(int fd, void* buffer, size_t size) {
- return ReadOrWrite<ReadTraits>(fd, buffer, size);
-}
-
-ssize_t WriteFD(int fd, const void* buffer, size_t size) {
- return ReadOrWrite<WriteTraits>(fd, buffer, size);
-}
-
-bool LoggingReadFD(int fd, void* buffer, size_t size) {
- ssize_t expect = base::checked_cast<ssize_t>(size);
- ssize_t rv = ReadFD(fd, buffer, size);
- if (rv < 0) {
- PLOG(ERROR) << "read";
- return false;
- }
- if (rv != expect) {
- LOG(ERROR) << "read: expected " << expect << ", observed " << rv;
- return false;
- }
-
- return true;
-}
-
-bool LoggingWriteFD(int fd, const void* buffer, size_t size) {
- ssize_t expect = base::checked_cast<ssize_t>(size);
- ssize_t rv = WriteFD(fd, buffer, size);
- if (rv < 0) {
- PLOG(ERROR) << "write";
- return false;
- }
- if (rv != expect) {
- LOG(ERROR) << "write: expected " << expect << ", observed " << rv;
- return false;
- }
-
- return true;
-}
-
-void CheckedReadFD(int fd, void* buffer, size_t size) {
- CHECK(LoggingReadFD(fd, buffer, size));
-}
-
-void CheckedWriteFD(int fd, const void* buffer, size_t size) {
- CHECK(LoggingWriteFD(fd, buffer, size));
-}
-
-void CheckedReadFDAtEOF(int fd) {
- char c;
- ssize_t rv = ReadFD(fd, &c, 1);
- if (rv < 0) {
- PCHECK(rv == 0) << "read";
- } else {
- CHECK_EQ(rv, 0) << "read";
- }
-}
-
-bool LoggingCloseFD(int fd) {
- int rv = IGNORE_EINTR(close(fd));
- PLOG_IF(ERROR, rv != 0) << "close";
- return rv == 0;
-}
-
-void CheckedCloseFD(int fd) {
- CHECK(LoggingCloseFD(fd));
-}
-
-} // namespace crashpad
« no previous file with comments | « util/file/fd_io.h ('k') | util/file/file_io.h » ('j') | util/file/file_io.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698