// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MOJO_PUBLIC_CPP_PLATFORM_PLATFORM_HANDLE_H_ #define MOJO_PUBLIC_CPP_PLATFORM_PLATFORM_HANDLE_H_ #include "base/check_op.h" #include "base/component_export.h" #include "base/files/platform_file.h" #include "build/build_config.h" #include "mojo/public/c/system/platform_handle.h" #if BUILDFLAG(IS_WIN) #include "base/win/scoped_handle.h" #elif BUILDFLAG(IS_FUCHSIA) #include <lib/zx/handle.h> #elif BUILDFLAG(IS_APPLE) #include "base/apple/scoped_mach_port.h" #endif #if BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) #include "base/files/scoped_file.h" #endif #if BUILDFLAG(IS_ANDROID) #include "base/android/binder.h" #endif namespace mojo { // A PlatformHandle is a generic wrapper around a platform-specific system // handle type, e.g. a POSIX file descriptor, Windows HANDLE, or macOS Mach // port. This can wrap any of various such types depending on the host platform // for which it's compiled. // // This is useful primarily for two reasons: // // - Interacting with the Mojo invitation API, which use OS primitives to // bootstrap Mojo IPC connections. // - Interacting with Mojo platform handle wrapping and unwrapping API, which // allows handles to OS primitives to be transmitted over Mojo IPC with a // stable wire representation via Mojo handles. // // NOTE: This assumes ownership if the handle it represents. class COMPONENT_EXPORT(MOJO_CPP_PLATFORM) PlatformHandle { … }; } // namespace mojo #endif // MOJO_PUBLIC_CPP_PLATFORM_PLATFORM_HANDLE_H_