Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "base/memory/shared_memory_handle.h" | |
| 6 | |
| 7 #include "base/posix/eintr_wrapper.h" | |
| 8 | |
| 9 #if defined(OS_MACOSX) && !defined(OS_IOS) | |
| 10 namespace base { | |
| 11 | |
| 12 SharedMemoryHandle::SharedMemoryHandle() | |
| 13 : mechanism_(POSIX_FD), file_descriptor_() { | |
| 14 } | |
| 15 | |
| 16 SharedMemoryHandle::SharedMemoryHandle(const FileDescriptor& file_descriptor) | |
| 17 : mechanism_(POSIX_FD), file_descriptor_(file_descriptor) { | |
| 18 } | |
| 19 | |
| 20 SharedMemoryHandle::SharedMemoryHandle(int fd, bool auto_close) | |
| 21 : mechanism_(POSIX_FD), file_descriptor_(fd, auto_close) { | |
| 22 } | |
| 23 | |
| 24 SharedMemoryHandle::SharedMemoryHandle(const SharedMemoryHandle& handle) | |
| 25 : mechanism_(handle.mechanism_), file_descriptor_(handle.file_descriptor_) { | |
| 26 } | |
| 27 | |
| 28 SharedMemoryHandle& SharedMemoryHandle::operator=( | |
| 29 const SharedMemoryHandle& handle) { | |
| 30 mechanism_ = handle.mechanism_; | |
| 31 file_descriptor_ = handle.file_descriptor_; | |
| 32 return *this; | |
| 33 } | |
| 34 | |
| 35 bool SharedMemoryHandle::operator==(const SharedMemoryHandle& handle) const { | |
| 36 return mechanism_ == handle.mechanism_ && | |
| 37 file_descriptor_ == handle.file_descriptor_; | |
| 38 } | |
| 39 | |
| 40 bool SharedMemoryHandle::operator!=(const SharedMemoryHandle& handle) const { | |
| 41 return !operator==(handle); | |
| 42 } | |
| 43 | |
| 44 uint32_t SharedMemoryHandle::GetMechanismForWire() const { | |
| 45 return static_cast<uint32_t>(mechanism_); | |
| 46 } | |
| 47 | |
| 48 bool SharedMemoryHandle::SetMechanismFromWire(uint32_t mechanism) { | |
| 49 switch (mechanism) { | |
| 50 case POSIX_FD: | |
| 51 case MACH_PRIMITIVE: | |
| 52 mechanism_ = static_cast<Mechanism>(mechanism); | |
| 53 return true; | |
| 54 default: | |
| 55 return false; | |
| 56 } | |
| 57 } | |
| 58 | |
| 59 bool SharedMemoryHandle::IsBackedByPOSIXFd() const { | |
| 60 return mechanism_ == POSIX_FD; | |
| 61 } | |
| 62 | |
| 63 int SharedMemoryHandle::GetFileHandle() const { | |
| 64 CHECK(mechanism_ == POSIX_FD); | |
|
Robert Sesek
2015/06/05 19:27:14
CHECK_EQ, and throughout.
erikchen
2015/06/06 01:47:00
Done.
| |
| 65 return file_descriptor_.fd; | |
| 66 } | |
| 67 | |
| 68 void SharedMemoryHandle::SetFileHandle(int fd, bool auto_close) { | |
| 69 CHECK(mechanism_ == POSIX_FD); | |
| 70 file_descriptor_.fd = fd; | |
| 71 file_descriptor_.auto_close = auto_close; | |
| 72 } | |
| 73 | |
| 74 FileDescriptor* SharedMemoryHandle::GetFileDescriptor() { | |
| 75 CHECK(mechanism_ == POSIX_FD); | |
| 76 return &file_descriptor_; | |
| 77 } | |
| 78 | |
| 79 const FileDescriptor* SharedMemoryHandle::GetFileDescriptor() const { | |
| 80 CHECK(mechanism_ == POSIX_FD); | |
| 81 return &file_descriptor_; | |
| 82 } | |
| 83 | |
| 84 SharedMemoryHandle SharedMemoryHandle::Duplicate() const { | |
| 85 CHECK(mechanism_ == POSIX_FD); | |
| 86 int duped_handle = HANDLE_EINTR(dup(file_descriptor_.fd)); | |
| 87 if (duped_handle < 0) | |
| 88 return SharedMemoryHandle(); | |
| 89 return SharedMemoryHandle(duped_handle, true); | |
| 90 } | |
| 91 | |
| 92 } // namespace base | |
| 93 #endif // defined(OS_MACOSX) && !defined(OS_IOS) | |
| OLD | NEW |