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

Unified Diff: mojo/system/raw_channel_posix.cc

Issue 137273003: Mojo: Rename PlatformChannelHandle to PlatformHandle, etc. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 6 years, 11 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 | « mojo/system/raw_channel.h ('k') | mojo/system/raw_channel_posix_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/system/raw_channel_posix.cc
diff --git a/mojo/system/raw_channel_posix.cc b/mojo/system/raw_channel_posix.cc
index fa9d5f29239dddb1bc99bc9ba4522916fefb35d7..f5234fa8fb69eb963f7f87869be4769ea30f580f 100644
--- a/mojo/system/raw_channel_posix.cc
+++ b/mojo/system/raw_channel_posix.cc
@@ -23,7 +23,7 @@
#include "base/posix/eintr_wrapper.h"
#include "base/synchronization/lock.h"
#include "mojo/system/message_in_transit.h"
-#include "mojo/system/platform_channel_handle.h"
+#include "mojo/system/platform_handle.h"
namespace mojo {
namespace system {
@@ -35,7 +35,7 @@ const size_t kReadSize = 4096;
class RawChannelPosix : public RawChannel,
public base::MessageLoopForIO::Watcher {
public:
- RawChannelPosix(const PlatformChannelHandle& handle,
+ RawChannelPosix(ScopedPlatformHandle handle,
Delegate* delegate,
base::MessageLoop* message_loop);
virtual ~RawChannelPosix();
@@ -72,7 +72,7 @@ class RawChannelPosix : public RawChannel,
return static_cast<base::MessageLoopForIO*>(message_loop());
}
- int fd_;
+ ScopedPlatformHandle fd_;
// Only used on the I/O thread:
scoped_ptr<base::MessageLoopForIO::FileDescriptorWatcher> read_watcher_;
@@ -97,22 +97,22 @@ class RawChannelPosix : public RawChannel,
DISALLOW_COPY_AND_ASSIGN(RawChannelPosix);
};
-RawChannelPosix::RawChannelPosix(const PlatformChannelHandle& handle,
+RawChannelPosix::RawChannelPosix(ScopedPlatformHandle handle,
Delegate* delegate,
base::MessageLoop* message_loop)
: RawChannel(delegate, message_loop),
- fd_(handle.fd),
+ fd_(handle.Pass()),
read_buffer_num_valid_bytes_(0),
is_dead_(false),
write_message_offset_(0),
weak_ptr_factory_(this) {
CHECK_EQ(RawChannel::message_loop()->type(), base::MessageLoop::TYPE_IO);
- DCHECK_NE(fd_, -1);
+ DCHECK(fd_.is_valid());
}
RawChannelPosix::~RawChannelPosix() {
DCHECK(is_dead_);
- DCHECK_EQ(fd_, -1);
+ DCHECK(!fd_.is_valid());
// No need to take the |write_lock_| here -- if there are still weak pointers
// outstanding, then we're hosed anyway (since we wouldn't be able to
@@ -135,7 +135,7 @@ bool RawChannelPosix::Init() {
// No need to take the lock. No one should be using us yet.
DCHECK(write_message_queue_.empty());
- if (!message_loop_for_io()->WatchFileDescriptor(fd_, true,
+ if (!message_loop_for_io()->WatchFileDescriptor(fd_.get().fd, true,
base::MessageLoopForIO::WATCH_READ, read_watcher_.get(), this)) {
// TODO(vtl): I'm not sure |WatchFileDescriptor()| actually fails cleanly
// (in the sense of returning the message loop's state to what it was before
@@ -155,10 +155,8 @@ void RawChannelPosix::Shutdown() {
if (!is_dead_)
CancelPendingWritesNoLock();
- DCHECK_NE(fd_, -1);
- if (close(fd_) != 0)
- PLOG(ERROR) << "close";
- fd_ = -1;
+ DCHECK(fd_.is_valid());
+ fd_.reset();
weak_ptr_factory_.InvalidateWeakPtrs();
@@ -208,7 +206,7 @@ bool RawChannelPosix::WriteMessage(MessageInTransit* message) {
}
void RawChannelPosix::OnFileCanReadWithoutBlocking(int fd) {
- DCHECK_EQ(fd, fd_);
+ DCHECK_EQ(fd, fd_.get().fd);
DCHECK_EQ(base::MessageLoop::current(), message_loop());
bool did_dispatch_message = false;
@@ -233,7 +231,7 @@ void RawChannelPosix::OnFileCanReadWithoutBlocking(int fd) {
}
ssize_t bytes_read = HANDLE_EINTR(
- read(fd_,
+ read(fd_.get().fd,
&read_buffer_[read_buffer_start + read_buffer_num_valid_bytes_],
kReadSize));
if (bytes_read < 0) {
@@ -305,7 +303,7 @@ void RawChannelPosix::OnFileCanReadWithoutBlocking(int fd) {
}
void RawChannelPosix::OnFileCanWriteWithoutBlocking(int fd) {
- DCHECK_EQ(fd, fd_);
+ DCHECK_EQ(fd, fd_.get().fd);
DCHECK_EQ(base::MessageLoop::current(), message_loop());
bool did_fail = false;
@@ -331,8 +329,8 @@ void RawChannelPosix::WaitToWrite() {
DCHECK(write_watcher_.get());
bool result = message_loop_for_io()->WatchFileDescriptor(
- fd_, false, base::MessageLoopForIO::WATCH_WRITE, write_watcher_.get(),
- this);
+ fd_.get().fd, false, base::MessageLoopForIO::WATCH_WRITE,
+ write_watcher_.get(), this);
DCHECK(result);
}
@@ -353,7 +351,7 @@ bool RawChannelPosix::WriteFrontMessageNoLock() {
size_t bytes_to_write =
message->size_with_header_and_padding() - write_message_offset_;
ssize_t bytes_written = HANDLE_EINTR(
- write(fd_,
+ write(fd_.get().fd,
reinterpret_cast<char*>(message) + write_message_offset_,
bytes_to_write));
if (bytes_written < 0) {
@@ -402,10 +400,10 @@ void RawChannelPosix::CancelPendingWritesNoLock() {
// Static factory method declared in raw_channel.h.
// static
-RawChannel* RawChannel::Create(const PlatformChannelHandle& handle,
+RawChannel* RawChannel::Create(ScopedPlatformHandle handle,
Delegate* delegate,
base::MessageLoop* message_loop) {
- return new RawChannelPosix(handle, delegate, message_loop);
+ return new RawChannelPosix(handle.Pass(), delegate, message_loop);
}
} // namespace system
« no previous file with comments | « mojo/system/raw_channel.h ('k') | mojo/system/raw_channel_posix_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698