Index: mojo/public/cpp/system/platform_handle.h |
diff --git a/mojo/public/cpp/system/platform_handle.h b/mojo/public/cpp/system/platform_handle.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3c7dba7e41510e56e2e2a9e16f75a06d1422e5a8 |
--- /dev/null |
+++ b/mojo/public/cpp/system/platform_handle.h |
@@ -0,0 +1,79 @@ |
+// Copyright 2016 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. |
+ |
+// This file provides a C++ wrapping around the Mojo C API for platform handles, |
+// replacing the prefix of "Mojo" with a "mojo" namespace. |
+// |
+// Please see "mojo/public/c/system/platform_handle.h" for complete |
+// documentation of the API. |
+ |
+#ifndef MOJO_PUBLIC_CPP_SYSTEM_PLATFORM_HANDLE_H_ |
+#define MOJO_PUBLIC_CPP_SYSTEM_PLATFORM_HANDLE_H_ |
+ |
+#include <stdint.h> |
+ |
+#include "base/compiler_specific.h" |
+#include "base/files/file.h" |
+#include "base/logging.h" |
+#include "base/macros.h" |
+#include "base/memory/shared_memory_handle.h" |
+#include "base/process/process_handle.h" |
+#include "mojo/public/c/system/platform_handle.h" |
+#include "mojo/public/cpp/system/buffer.h" |
+#include "mojo/public/cpp/system/handle.h" |
+ |
+#if defined(OS_WIN) |
+#include <windows.h> |
+#endif |
+ |
+namespace mojo { |
+ |
+#if defined(OS_POSIX) |
+ |
+const MojoPlatformHandleType kPlatformFileHandleType = |
+ MOJO_PLATFORM_HANDLE_TYPE_FILE_DESCRIPTOR; |
+const base::PlatformFile kInvalidPlatformFile = -1; |
Anand Mistry (off Chromium)
2016/05/24 00:36:45
not in scope, so no action necessary.
kInvalidPlat
Ken Rockot(use gerrit already)
2016/05/24 00:53:38
Yep, noticed that too. I'll try to post a patch la
|
+ |
+#if defined(OS_MACOSX) && !defined(OS_IOS) |
+const MojoPlatformHandleType kPlatformSharedBufferHandleType = |
+ MOJO_PLATFORM_HANDLE_TYPE_MACH_PORT; |
+#else |
+const MojoPlatformHandleType kPlatformSharedBufferHandleType = |
+ MOJO_PLATFORM_HANDLE_TYPE_FILE_DESCRIPTOR; |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |
+ |
+#elif defined(OS_WIN) |
+const MojoPlatformHandleType kPlatformFileHandleType = |
+ MOJO_PLATFORM_HANDLE_TYPE_WINDOWS_HANDLE; |
+const base::PlatformFile kInvalidPlatformFile = INVALID_HANDLE_VALUE; |
+ |
+const MojoPlatformHandleType kPlatformSharedBufferHandleType = |
+ MOJO_PLATFORM_HANDLE_TYPE_WINDOWS_HANDLE; |
+#endif // defined(OS_POSIX) |
+ |
+// Wraps a PlatformFile as a Mojo handle. Takes ownership of the file object. |
+ScopedHandle WrapPlatformFile(base::PlatformFile platform_file); |
+ |
+// Unwraps a PlatformFile from a Mojo handle. |
+MojoResult UnwrapPlatformFile(ScopedHandle handle, base::PlatformFile* file); |
+ |
+// Wraps a base::SharedMemoryHandle as a Mojo handle. Takes ownership of the |
+// SharedMemoryHandle. Note that |read_only| is only an indicator of whether |
+// |memory_handle| only supports read-only mapping. It does NOT have any |
+// influence on the access control of the shared buffer object. |
+ScopedSharedBufferHandle WrapSharedMemoryHandle( |
+ const base::SharedMemoryHandle& memory_handle, |
+ size_t size, |
+ bool read_only); |
+ |
+// Unwraps a base::SharedMemoryHandle from a Mojo handle. The caller assumes |
+// responsibility for the lifetime of the SharedMemoryHandle. |
+MojoResult UnwrapSharedMemoryHandle(ScopedSharedBufferHandle handle, |
+ base::SharedMemoryHandle* memory_handle, |
+ size_t* size, |
+ bool* read_only); |
+ |
+} // namespace mojo |
+ |
+#endif // MOJO_PUBLIC_CPP_SYSTEM_PLATFORM_HANDLE_H_ |