Index: base/memory/shared_memory_handle_win.cc |
diff --git a/base/memory/shared_memory_handle_win.cc b/base/memory/shared_memory_handle_win.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..571e4ef108569d091c20950224f19dc77a86c66d |
--- /dev/null |
+++ b/base/memory/shared_memory_handle_win.cc |
@@ -0,0 +1,68 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/memory/shared_memory_handle.h" |
+ |
+#include "base/logging.h" |
+ |
+namespace base { |
+ |
+SharedMemoryHandle::SharedMemoryHandle() |
+ : handle_(nullptr), pid_(kNullProcessId) {} |
+ |
+SharedMemoryHandle::SharedMemoryHandle(HANDLE h, base::ProcessId pid) |
+ : handle_(h), pid_(pid) {} |
+ |
+SharedMemoryHandle::SharedMemoryHandle(const SharedMemoryHandle& handle) |
+ : handle_(handle.handle_), pid_(handle.pid_) {} |
+ |
+SharedMemoryHandle& SharedMemoryHandle::operator=( |
+ const SharedMemoryHandle& handle) { |
+ if (this == &handle) |
+ return *this; |
+ |
+ handle_ = handle.handle_; |
+ pid_ = handle.pid_; |
+ return *this; |
+} |
+ |
+bool SharedMemoryHandle::operator==(const SharedMemoryHandle& handle) const { |
+ // Invalid handles are always equal. |
+ if (!IsValid() && !handle.IsValid()) |
+ return true; |
+ |
+ return handle_ == handle.handle_ && pid_ == handle.pid_; |
+} |
+ |
+bool SharedMemoryHandle::operator!=(const SharedMemoryHandle& handle) const { |
+ return !(*this == handle); |
+} |
+ |
+void SharedMemoryHandle::Close() const { |
+ DCHECK(handle_ != nullptr); |
+ DCHECK(BelongsToCurrentProcess()); |
+ ::CloseHandle(handle_); |
+} |
+ |
+bool SharedMemoryHandle::IsValid() const { |
+ return handle_ != nullptr; |
+} |
+ |
+bool SharedMemoryHandle::BelongsToCurrentProcess() const { |
+ return pid_ == base::GetCurrentProcId(); |
+} |
+ |
+bool SharedMemoryHandle::NeedsBrokering() const { |
+ return false; |
+} |
+ |
+HANDLE SharedMemoryHandle::GetHandle() const { |
+ return handle_; |
+} |
+ |
+base::ProcessId SharedMemoryHandle::GetPID() const { |
+ return pid_; |
+} |
+ |
+} // namespace base |