blob: adda510073f877d80108cc0fbf0e21815da2cd86 [file] [log] [blame]
// 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.
#ifndef MOJO_PUBLIC_PLATFORM_NATIVE_PLATFORM_HANDLE_PRIVATE_H_
#define MOJO_PUBLIC_PLATFORM_NATIVE_PLATFORM_HANDLE_PRIVATE_H_
#include "mojo/public/c/system/handle.h"
#include "mojo/public/c/system/result.h"
typedef int MojoPlatformHandle; // Unix file descriptor
#ifdef __cplusplus
extern "C" {
#endif
// Wraps |platform_handle| in a MojoHandle so that it can transported. Returns
// MOJO_RESULT_OK on success, all other results indicate failure. This takes
// ownership of |platform_handle|, regardless of whether this succeeds.
MojoResult MojoCreatePlatformHandleWrapper(MojoPlatformHandle platform_handle,
MojoHandle* wrapper);
// Extracts |platform_handle| from |wrapper|. Returns MOJO_RESULT_OK on success,
// all other results indicate failure. If this succeeds, it causes |wrapper| to
// relinquish ownership of |platform_handle|, so MojoClose'ing |wrapper| will no
// longer close the underlying |platform_handle|. Never the less, it is still
// neccessary to MojoClose |wrapper|, but this will not affect the underlying
// descriptor after this call.
MojoResult MojoExtractPlatformHandle(MojoHandle wrapper,
MojoPlatformHandle* platform_handle);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // MOJO_PUBLIC_PLATFORM_NATIVE_PLATFORM_HANDLE_PRIVATE_H_