mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
67 lines
2.6 KiB
C++
67 lines
2.6 KiB
C++
// Copyright 2014 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_EDK_EMBEDDER_EMBEDDER_H_
|
|
#define MOJO_EDK_EMBEDDER_EMBEDDER_H_
|
|
|
|
#include <functional>
|
|
#include <memory>
|
|
|
|
#include "mojo/edk/platform/scoped_platform_handle.h"
|
|
#include "mojo/public/c/system/types.h"
|
|
|
|
namespace mojo {
|
|
|
|
namespace embedder {
|
|
|
|
struct Configuration;
|
|
class PlatformSupport;
|
|
|
|
// Basic configuration/initialization ------------------------------------------
|
|
|
|
// |Init()| sets up the basic Mojo system environment, making the |Mojo...()|
|
|
// functions available and functional. This is never shut down (except in tests
|
|
// -- see test_embedder.h).
|
|
|
|
// Returns the global configuration. In general, you should not need to change
|
|
// the configuration, but if you do you must do it before calling |Init()|.
|
|
Configuration* GetConfiguration();
|
|
|
|
// Must be called first, or just after setting configuration parameters, to
|
|
// initialize the (global, singleton) system.
|
|
void Init(std::unique_ptr<PlatformSupport> platform_support);
|
|
|
|
// Basic functions -------------------------------------------------------------
|
|
|
|
// The functions in this section are available once |Init()| has been called.
|
|
|
|
// Start waiting on the handle asynchronously. On success, |callback| will be
|
|
// called exactly once, when |handle| satisfies a signal in |signals| or it
|
|
// becomes known that it will never do so. |callback| will be executed on an
|
|
// arbitrary thread, so it must not call any Mojo system or embedder functions.
|
|
MojoResult AsyncWait(MojoHandle handle,
|
|
MojoHandleSignals signals,
|
|
const std::function<void(MojoResult)>& callback);
|
|
|
|
// Creates a |MojoHandle| that wraps the given |PlatformHandle| (taking
|
|
// ownership of it). This |MojoHandle| can then, e.g., be passed through message
|
|
// pipes. Note: This takes ownership (and thus closes) |platform_handle| even on
|
|
// failure, which is different from what you'd expect from a Mojo API, but it
|
|
// makes for a more convenient embedder API.
|
|
MojoResult CreatePlatformHandleWrapper(
|
|
platform::ScopedPlatformHandle platform_handle,
|
|
MojoHandle* platform_handle_wrapper_handle);
|
|
|
|
// Retrieves the |PlatformHandle| that was wrapped into a |MojoHandle| (using
|
|
// |CreatePlatformHandleWrapper()| above). Note that the |MojoHandle| must still
|
|
// be closed separately.
|
|
MojoResult PassWrappedPlatformHandle(
|
|
MojoHandle platform_handle_wrapper_handle,
|
|
platform::ScopedPlatformHandle* platform_handle);
|
|
|
|
} // namespace embedder
|
|
} // namespace mojo
|
|
|
|
#endif // MOJO_EDK_EMBEDDER_EMBEDDER_H_
|