Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Side by Side Diff: mojo/edk/embedder/pending_process_connection.h

Issue 2735113003: Changing SpawnChild to return a struct.
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/edk/embedder/parcelable_channel.h ('k') | mojo/edk/embedder/pending_process_connection.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MOJO_EDK_EMBEDDER_PENDING_PROCESS_CONNECTION_H_ 5 #ifndef MOJO_EDK_EMBEDDER_PENDING_PROCESS_CONNECTION_H_
6 #define MOJO_EDK_EMBEDDER_PENDING_PROCESS_CONNECTION_H_ 6 #define MOJO_EDK_EMBEDDER_PENDING_PROCESS_CONNECTION_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/process/process_handle.h" 12 #include "base/process/process_handle.h"
13 #include "mojo/edk/embedder/connection_param.h"
13 #include "mojo/edk/embedder/scoped_platform_handle.h" 14 #include "mojo/edk/embedder/scoped_platform_handle.h"
14 #include "mojo/edk/system/system_impl_export.h" 15 #include "mojo/edk/system/system_impl_export.h"
15 #include "mojo/public/cpp/system/message_pipe.h" 16 #include "mojo/public/cpp/system/message_pipe.h"
16 17
17 namespace mojo { 18 namespace mojo {
18 namespace edk { 19 namespace edk {
19 20
20 using ProcessErrorCallback = base::Callback<void(const std::string& error)>; 21 using ProcessErrorCallback = base::Callback<void(const std::string& error)>;
21 22
22 // Represents a potential connection to an external process. Use this object 23 // Represents a potential connection to an external process. Use this object
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 // 82 //
82 // NOTES: This may be called any number of times to create multiple message 83 // NOTES: This may be called any number of times to create multiple message
83 // pipes to the same remote process. This call ALWAYS succeeds, returning 84 // pipes to the same remote process. This call ALWAYS succeeds, returning
84 // a valid message pipe handle and populating |*token| with a new unique 85 // a valid message pipe handle and populating |*token| with a new unique
85 // string value. 86 // string value.
86 ScopedMessagePipeHandle CreateMessagePipe(std::string* token); 87 ScopedMessagePipeHandle CreateMessagePipe(std::string* token);
87 88
88 // Connects to the process. This must be called at most once, with the process 89 // Connects to the process. This must be called at most once, with the process
89 // handle in |process|. 90 // handle in |process|.
90 // 91 //
91 // |channel| is the platform handle of an OS pipe which can be used to 92 // |connection_param| is the platform handle of an OS pipe which can be used
92 // communicate with the connected process. The other end of that pipe must 93 // to communicate with the connected process. The other end of that pipe must
93 // ultimately be passed to mojo::edk::SetParentPipeHandle in the remote 94 // ultimately be passed to mojo::edk::SetParentPipeHandle in the remote
94 // process, and getting that end of the pipe into the other process is the 95 // process, and getting that end of the pipe into the other process is the
95 // embedder's responsibility. 96 // embedder's responsibility.
96 // 97 //
97 // If this method is not called by the time the PendingProcessConnection is 98 // If this method is not called by the time the PendingProcessConnection is
98 // destroyed, it's assumed that the process is unavailable (e.g. process 99 // destroyed, it's assumed that the process is unavailable (e.g. process
99 // launch failed or the process has otherwise been terminated early), and 100 // launch failed or the process has otherwise been terminated early), and
100 // any associated resources, such as remote endpoints of messages pipes 101 // any associated resources, such as remote endpoints of messages pipes
101 // created by CreateMessagePipe above) will be cleaned up at that time. 102 // created by CreateMessagePipe above) will be cleaned up at that time.
102 void Connect( 103 void Connect(
103 base::ProcessHandle process, 104 base::ProcessHandle process,
104 ScopedPlatformHandle channel, 105 ConnectionParam connection_param,
105 const ProcessErrorCallback& error_callback = ProcessErrorCallback()); 106 const ProcessErrorCallback& error_callback = ProcessErrorCallback());
106 107
107 private: 108 private:
108 // A GUID representing a potential new process to be connected to this one. 109 // A GUID representing a potential new process to be connected to this one.
109 const std::string process_token_; 110 const std::string process_token_;
110 111
111 // Indicates whether this object has been used to create new message pipes. 112 // Indicates whether this object has been used to create new message pipes.
112 bool has_message_pipes_ = false; 113 bool has_message_pipes_ = false;
113 114
114 // Indicates whether Connect() has been called yet. 115 // Indicates whether Connect() has been called yet.
115 bool connected_ = false; 116 bool connected_ = false;
116 117
117 DISALLOW_COPY_AND_ASSIGN(PendingProcessConnection); 118 DISALLOW_COPY_AND_ASSIGN(PendingProcessConnection);
118 }; 119 };
119 120
120 } // namespace edk 121 } // namespace edk
121 } // namespace mojo 122 } // namespace mojo
122 123
123 #endif // MOJO_EDK_EMBEDDER_PENDING_PROCESS_CONNECTION_H_ 124 #endif // MOJO_EDK_EMBEDDER_PENDING_PROCESS_CONNECTION_H_
OLDNEW
« no previous file with comments | « mojo/edk/embedder/parcelable_channel.h ('k') | mojo/edk/embedder/pending_process_connection.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698