diff options
author | morrita <morrita@chromium.org> | 2014-09-24 13:11:45 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-24 20:11:59 +0000 |
commit | 96693856edc35a538f6ea8f0bd6ab55c75e3e823 (patch) | |
tree | 33bf28816211d8c3a5039db1d2f3a1ac74adf59e /ipc/ipc_channel_posix.cc | |
parent | 33169d9f2497a79fdde3ae51c5aa7266032526c7 (diff) | |
download | chromium_src-96693856edc35a538f6ea8f0bd6ab55c75e3e823.zip chromium_src-96693856edc35a538f6ea8f0bd6ab55c75e3e823.tar.gz chromium_src-96693856edc35a538f6ea8f0bd6ab55c75e3e823.tar.bz2 |
IPC: Get rid of FileDescriptor usage from FileDescriptorSet and Message
This is a step toward to killing FileDescriptor.
This change lets FiileDescriptorSet have both Files (for owning fds)
and PlatformFiles (for non-owning fds). Doing this, we no longer
need FileDescriptor which provides |auto_close| flag.
BUG=415294
TEST=ipc_tests, ipc_mojo_unittests
R=agl@chromium.org, jam@hcromium.org, viettrungluu@chromium.org
Review URL: https://codereview.chromium.org/583473002
Cr-Commit-Position: refs/heads/master@{#296498}
Diffstat (limited to 'ipc/ipc_channel_posix.cc')
-rw-r--r-- | ipc/ipc_channel_posix.cc | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/ipc/ipc_channel_posix.cc b/ipc/ipc_channel_posix.cc index 7f0a1fe..d430bd6 100644 --- a/ipc/ipc_channel_posix.cc +++ b/ipc/ipc_channel_posix.cc @@ -432,7 +432,7 @@ bool ChannelPosix::ProcessOutgoingMessages() { cmsg->cmsg_level = SOL_SOCKET; cmsg->cmsg_type = SCM_RIGHTS; cmsg->cmsg_len = CMSG_LEN(sizeof(int) * num_fds); - msg->file_descriptor_set()->GetDescriptors( + msg->file_descriptor_set()->PeekDescriptors( reinterpret_cast<int*>(CMSG_DATA(cmsg))); msgh.msg_controllen = cmsg->cmsg_len; @@ -769,8 +769,7 @@ void ChannelPosix::QueueHelloMessage() { #if defined(IPC_USES_READWRITE) scoped_ptr<Message> hello; if (remote_fd_pipe_ != -1) { - if (!msg->WriteFileDescriptor(base::FileDescriptor(remote_fd_pipe_, - false))) { + if (!msg->WriteBorrowingFile(remote_fd_pipe_)) { NOTREACHED() << "Unable to pickle hello message file descriptors"; } DCHECK_EQ(msg->file_descriptor_set()->size(), 1U); @@ -896,8 +895,8 @@ bool ChannelPosix::WillDispatchInputMessage(Message* msg) { // The shenaniganery below with &foo.front() requires input_fds_ to have // contiguous underlying storage (such as a simple array or a std::vector). // This is why the header warns not to make input_fds_ a deque<>. - msg->file_descriptor_set()->SetDescriptors(&input_fds_.front(), - header_fds); + msg->file_descriptor_set()->AddDescriptorsToOwn(&input_fds_.front(), + header_fds); input_fds_.erase(input_fds_.begin(), input_fds_.begin() + header_fds); return true; } @@ -991,12 +990,11 @@ void ChannelPosix::HandleInternalMessage(const Message& msg) { // server also contains the fd_pipe_, which will be used for all // subsequent file descriptor passing. DCHECK_EQ(msg.file_descriptor_set()->size(), 1U); - base::FileDescriptor descriptor; - if (!msg.ReadFileDescriptor(&iter, &descriptor)) { + base::ScopedFD descriptor; + if (!msg.ReadFile(&iter, &descriptor)) { NOTREACHED(); } - fd_pipe_ = descriptor.fd; - CHECK(descriptor.auto_close); + fd_pipe_ = descriptor.release(); } #endif // IPC_USES_READWRITE peer_pid_ = pid; |