| Index: third_party/mojo/src/mojo/edk/embedder/embedder.h
|
| diff --git a/third_party/mojo/src/mojo/edk/embedder/embedder.h b/third_party/mojo/src/mojo/edk/embedder/embedder.h
|
| index 2e43475c75fd5cbcd934ef9188590066c36369a5..c4a4e51114324fee5ab45e03e22814d6a5f3d131 100644
|
| --- a/third_party/mojo/src/mojo/edk/embedder/embedder.h
|
| +++ b/third_party/mojo/src/mojo/edk/embedder/embedder.h
|
| @@ -14,6 +14,7 @@
|
| #include "mojo/edk/embedder/channel_info_forward.h"
|
| #include "mojo/edk/embedder/process_type.h"
|
| #include "mojo/edk/embedder/scoped_platform_handle.h"
|
| +#include "mojo/edk/embedder/slave_info.h"
|
| #include "mojo/edk/system/system_impl_export.h"
|
| #include "mojo/public/cpp/system/message_pipe.h"
|
|
|
| @@ -23,7 +24,6 @@ namespace embedder {
|
| struct Configuration;
|
| class PlatformSupport;
|
| class ProcessDelegate;
|
| -using SlaveInfo = void*;
|
|
|
| // Basic configuration/initialization ------------------------------------------
|
|
|
| @@ -117,23 +117,27 @@ MOJO_SYSTEM_IMPL_EXPORT void ShutdownIPCSupport();
|
| // This should typically be called *before* the slave process is even created.
|
| // It requires an OS "pipe" to be established between the master and slave
|
| // processes, with |platform_handle| being a handle to the end that remains on
|
| -// the master. This will create a second OS "pipe" (returned in
|
| -// |*platform_connection_handle|), and an ID string (returned in
|
| -// |*platform_connection_id|) that must be passed to the slave, e.g., on the
|
| -// command line.
|
| +// the master.
|
| //
|
| -// The slave should call |InitIPCSupport()| with |ProcessType::SLAVE| and the
|
| -// handle to the other end of the first "pipe" above. Then it should call
|
| -// |ConnectToMaster()| with the ID string |*platform_connection_id|.
|
| +// This will establish a channel and an initial message pipe (to which it
|
| +// returns a handle), an ID string (returned in |*platform_connection_id|) that
|
| +// must be passed to the slave (e.g., on the command line), and a
|
| +// |ChannelInfo*| (in |*channel_info|) which should eventually be given to
|
| +// |DestroyChannel()|/|DestroyChannelOnIOThread()|, but only after |callback|
|
| +// has been run.
|
| //
|
| -// |slave_info| is caller-dependent slave information, which should typically
|
| -// remain alive until the master process delegate's |OnSlaveDisconnect()| is
|
| -// called. (It may, however, be null.)
|
| -MOJO_SYSTEM_IMPL_EXPORT void ConnectToSlave(
|
| - SlaveInfo slave_info,
|
| - ScopedPlatformHandle platform_handle,
|
| - ScopedPlatformHandle* platform_connection_handle,
|
| - std::string* platform_connection_id);
|
| +// |callback| will be run either using |callback_thread_task_runner| (if
|
| +// non-null) or on the I/O thread, once the |ChannelInfo*| is valid.
|
| +//
|
| +// TODO(vtl): The API is a little crazy with respect to the |ChannelInfo*|.
|
| +using DidConnectToSlaveCallback = base::Closure;
|
| +MOJO_SYSTEM_IMPL_EXPORT ScopedMessagePipeHandle
|
| +ConnectToSlave(SlaveInfo slave_info,
|
| + ScopedPlatformHandle platform_handle,
|
| + const DidConnectToSlaveCallback& callback,
|
| + scoped_refptr<base::TaskRunner> callback_thread_task_runner,
|
| + std::string* platform_connection_id,
|
| + ChannelInfo** channel_info);
|
|
|
| // Called in a slave process to connect it to the IPC system. (This should only
|
| // be called in a process initialized (using |InitIPCSupport()|) with process
|
| @@ -142,10 +146,16 @@ MOJO_SYSTEM_IMPL_EXPORT void ConnectToSlave(
|
| //
|
| // See |ConnectToSlave()| for details. (Note that if this fails in any way,
|
| // e.g., if |platform_connection_id| is invalid, this will CHECK-fail and
|
| -// terminate the process.)
|
| -MOJO_SYSTEM_IMPL_EXPORT void ConnectToMaster(
|
| - const std::string& platform_connection_id,
|
| - ScopedPlatformHandle* platform_connection_handle);
|
| +// terminate the process.) |channel_info|, |callback|, and
|
| +// |callback_thread_task_runner| are as in |ConnectToSlave()|.
|
| +//
|
| +// TODO(vtl): The API is a little crazy with respect to the |ChannelInfo*|.
|
| +using DidConnectToMasterCallback = base::Closure;
|
| +MOJO_SYSTEM_IMPL_EXPORT ScopedMessagePipeHandle
|
| +ConnectToMaster(const std::string& platform_connection_id,
|
| + const DidConnectToMasterCallback& callback,
|
| + scoped_refptr<base::TaskRunner> callback_thread_task_runner,
|
| + ChannelInfo** channel_info);
|
|
|
| // A "channel" is a connection on top of an OS "pipe", on top of which Mojo
|
| // message pipes (etc.) can be multiplexed. It must "live" on some I/O thread.
|
| @@ -194,23 +204,23 @@ CreateChannelOnIOThread(ScopedPlatformHandle platform_handle,
|
| using DidCreateChannelCallback = base::Callback<void(ChannelInfo*)>;
|
| // Creates a channel asynchronously; may be called from any thread.
|
| // |platform_handle| should be a handle to a connected OS "pipe".
|
| -// |io_thread_task_runner| should be the |TaskRunner| for the I/O thread.
|
| // |callback| should be the callback to call with the |ChannelInfo*|, which
|
| // should eventually be passed to |DestroyChannel()| to tear down the channel;
|
| // the callback will be called using |callback_thread_task_runner| if that is
|
| -// non-null, or otherwise it will be called using |io_thread_task_runner|.
|
| -// Returns a handle to the bootstrap message pipe.
|
| +// non-null, or otherwise it will be posted to the I/O thread. Returns a handle
|
| +// to the bootstrap message pipe.
|
| +//
|
| +// Note: This should only be used to establish a channel with a process of type
|
| +// |ProcessType::NONE|. This function may be removed in the future.
|
| MOJO_SYSTEM_IMPL_EXPORT ScopedMessagePipeHandle
|
| CreateChannel(ScopedPlatformHandle platform_handle,
|
| - scoped_refptr<base::TaskRunner> io_thread_task_runner,
|
| const DidCreateChannelCallback& callback,
|
| scoped_refptr<base::TaskRunner> callback_thread_task_runner);
|
|
|
| -// Destroys a channel that was created using |CreateChannel()| (or
|
| -// |CreateChannelOnIOThread()|); must be called from the channel's I'O thread.
|
| -// |channel_info| should be the value provided to the callback to
|
| -// |CreateChannel()| (or returned by |CreateChannelOnIOThread()|). Completes
|
| -// synchronously (and posts no tasks).
|
| +// Destroys a channel that was created using |ConnectToMaster()|,
|
| +// |ConnectToSlave()|, |CreateChannel()|, or |CreateChannelOnIOThread()|; must
|
| +// be called from the channel's I'O thread. Completes synchronously (and posts
|
| +// no tasks).
|
| MOJO_SYSTEM_IMPL_EXPORT void DestroyChannelOnIOThread(
|
| ChannelInfo* channel_info);
|
|
|
|
|