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

Side by Side Diff: base/memory/shared_memory_handle_mac.cc

Issue 1163943004: Make SharedMemoryHandle a class on Mac. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@shared_memory_make_class3_base
Patch Set: Use right include on windows. Created 5 years, 6 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 unified diff | Download patch
OLDNEW
(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)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698