Index: services/service_manager/README.md |
diff --git a/services/service_manager/README.md b/services/service_manager/README.md |
index ce4e213037ad3d53348d1e1eb5ef8e550d794527..bc54399f819f9a1ca728c5851669eccc7f41497b 100644 |
--- a/services/service_manager/README.md |
+++ b/services/service_manager/README.md |
@@ -68,7 +68,7 @@ first learns about the service, and OnConnect(), which the Service Manager calls |
every time some other service tries to connect to this one. |
Services have a link back to the Service Manager too, primarily in the form of |
-the service_manager.mojom.Connector interface. The Connector allows services to |
+the service_manager.mojom.Connector interface. The Connector allows services to |
open connections to other services. |
A unique connection from the Service Manager to a service is called an |
@@ -140,7 +140,7 @@ Consider this simple application that implements the Service interface: |
What does all this do? Building the app target produces two files in the output |
directory: Packages/my_service/my_service.library and |
Packages/my_service/manifest.json. app.library is a DSO loaded by the Service |
-Manager in its own process when another service connects to the |
+Manager in its own process when another service connects to the |
service:my_service name. This is not the only way (nor even the most likely one) |
you can implement a Service, but it's the simplest and easiest to reason about. |
@@ -644,29 +644,21 @@ previous section. The connect flow in the service that launches the target |
mojo::edk::HandlePassingInformation info; |
pair.PrepareToPassClientHandleToChildProcess(&target_command_line, &info); |
- std::string token = mojo::edk::GenerateRandomToken(); |
+ mojo::edk::PendingProcessConnection connection; |
+ std::string token; |
+ mojo::ScopedMessagePipeHandle pipe = connection.CreateMessagePipe(&token); |
target_command_line.AppendSwitchASCII(switches::kPrimordialPipeToken, |
token); |
- mojo::ScopedMessagePipeHandle pipe = |
- mojo::edk::CreateParentMessagePipe(token); |
- |
- service_manager::mojom::ServiceFactoryPtr factory; |
- factory.Bind( |
- mojo::InterfacePtrInfo<service_manager::mojom::ServiceFactory>( |
- std::move(pipe), 0u)); |
+ service_manager::Identity target("exe:target", |
+ service_manager::mojom::kInheritUserID); |
service_manager::mojom::PIDReceiverPtr receiver; |
- |
- service_manager::Identity target("exe:target",service_manager::mojom::kInheritUserID); |
- service_manager::Connector::ConnectParams params(target); |
- params.set_client_process_connection(std::move(factory), |
- MakeRequest(&receiver)); |
- std::unique_ptr<service_manager::Connection> connection = connector->Connect(¶ms); |
+ connector->RegisterService(target, std::move(pipe), MakeRequest(&receiver)); |
base::LaunchOptions options; |
options.handles_to_inherit = &info; |
base::Process process = base::LaunchProcess(target_command_line, options); |
- mojo::edk::ChildProcessLaunched(process.Handle(), pair.PassServerHandle()); |
+ connection.Connect(process.Handle(), pair.PassServerHandle()); |
That's a lot. But it boils down to these steps: |
1. Creating the message pipe to connect the target process and the Service |