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

Side by Side Diff: services/shell/README.md

Issue 2333023005: Fix butchered markdown. Quotes were lost in the paste from Docs. (Closed)
Patch Set: Created 4 years, 3 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
None
OLDNEW
1 # Service Manager User Guide 1 # Service Manager User Guide
2 2
3 ## What is the Service Manager? 3 ## What is the Service Manager?
4 4
5 The Service Manager is a tool that brokers connections and capabilities between 5 The Service Manager is a tool that brokers connections and capabilities between
6 and manages instances of components, referred to henceforth as “services”. 6 and manages instances of components, referred to henceforth as “services”.
7 7
8 The Service Manager performs the following functions: 8 The Service Manager performs the following functions:
9 9
10 * Brokering connections between services, including communicating policies such 10 * Brokering connections between services, including communicating policies such
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 service wishes to terminate it closes the Service pipe with the Service Manager 82 service wishes to terminate it closes the Service pipe with the Service Manager
83 and the Service Manager destroys its corresponding instance and asks the process 83 and the Service Manager destroys its corresponding instance and asks the process
84 to exit. 84 to exit.
85 85
86 #### A simple Service example 86 #### A simple Service example
87 87
88 Consider this simple application that implements the Service interface: 88 Consider this simple application that implements the Service interface:
89 89
90 **app.cc:** 90 **app.cc:**
91 91
92 #include “mojo/public/c/system/main.h” 92 #include “"mojo/public/c/system/main.h”"
93 #include “services/shell/public/cpp/application_runner.h” 93 #include “"services/shell/public/cpp/application_runner.h”"
94 #include “services/shell/public/cpp/connector.h” 94 #include “"services/shell/public/cpp/connector.h”"
95 #include “services/shell/public/cpp/connection.h” 95 #include “"services/shell/public/cpp/connection.h”"
96 #include “services/shell/public/cpp/identity.h” 96 #include “"services/shell/public/cpp/identity.h”"
97 #include “services/shell/public/cpp/service.h” 97 #include “"services/shell/public/cpp/service.h”"
98 98
99 class Service : public shell::Service { 99 class Service : public shell::Service {
100 public: 100 public:
101 Service() {} 101 Service() {}
102 ~Service() override {} 102 ~Service() override {}
103 103
104 // Overridden from shell::Service: 104 // Overridden from shell::Service:
105 void OnStart(const shell::Identity& identity) override { 105 void OnStart(const shell::Identity& identity) override {
106 } 106 }
107 bool OnConnect(shell::Connection* connection) override { 107 bool OnConnect(shell::Connection* connection) override {
108 return true; 108 return true;
109 } 109 }
110 }; 110 };
111 111
112 MojoResult ServiceMain(MojoHandle service_request_handle) { 112 MojoResult ServiceMain(MojoHandle service_request_handle) {
113 return shell::ServiceRunner(new Service).Run(service_request_handle); 113 return shell::ServiceRunner(new Service).Run(service_request_handle);
114 } 114 }
115 115
116 app_manifest.json: 116 app_manifest.json:
117 117
118 { 118 {
119 “manifest_version”: 1, 119 "“manifest_version"”: 1,
120 “name”: “mojo:app”, 120 "“name"”: "“mojo:app”",
121 “display_name”: “Example App”, 121 "“display_name"”: “"Example App”",
122 “capabilities”: {} 122 "“capabilities"”: {}
123 } 123 }
124 124
125 **BUILD.gn:** 125 **BUILD.gn:**
126 126
127 import(“//mojo/public/mojo_application.gni”) 127 import(“"//mojo/public/mojo_application.gni”")
128 128
129 service(“app”) { 129 service(“"app"”) {
130 sources = [ “app.cc” ] 130 sources = [ "“app.cc"” ]
131 deps = [ “//base”, “//mojo/shell/public/cpp” ] 131 deps = [ "“//base"”, "“//mojo/shell/public/cpp”" ]
132 data_deps = [ “:manifest” ] 132 data_deps = [ “":manifest"” ]
133 } 133 }
134 134
135 service_manifest(“manifest”) { 135 service_manifest(“"manifest"”) {
136 name = “app” 136 name = "“app"”
137 source = “app_manifest.json” 137 source = “"app_manifest.json”"
138 } 138 }
139 139
140 What does all this do? Building the app target produces two files in the output 140 What does all this do? Building the app target produces two files in the output
141 directory: app/app.library and app/manifest.json. app.library is a DSO loaded by 141 directory: app/app.library and app/manifest.json. app.library is a DSO loaded by
142 the Service Manager in its own process when another service connects to the 142 the Service Manager in its own process when another service connects to the
143 “mojo:app” name. This is not the only way (nor even the most likely one) you can 143 “mojo:app” name. This is not the only way (nor even the most likely one) you can
144 implement a Service, but it’s the simplest and easiest to reason about. 144 implement a Service, but it’s the simplest and easiest to reason about.
145 145
146 This service doesn’t do much. Its implementation of OnStart() is empty, and its 146 This service doesn’t do much. Its implementation of OnStart() is empty, and its
147 implementation of OnConnect just returns true to allow the inbound connection to 147 implementation of OnConnect just returns true to allow the inbound connection to
(...skipping 25 matching lines...) Expand all
173 we should look at how we connect to another service and bind an interface from 173 we should look at how we connect to another service and bind an interface from
174 it. This will lay the groundwork to understanding how to export an interface. 174 it. This will lay the groundwork to understanding how to export an interface.
175 175
176 ### Connecting 176 ### Connecting
177 177
178 Once we have a Connector, we can connect to other services and bind interfaces 178 Once we have a Connector, we can connect to other services and bind interfaces
179 from them. In the trivial app above we can do this directly in OnStart: 179 from them. In the trivial app above we can do this directly in OnStart:
180 180
181 void OnStart(const shell::Identity& identity) override { 181 void OnStart(const shell::Identity& identity) override {
182 scoped_ptr<shell::Connection> connection = 182 scoped_ptr<shell::Connection> connection =
183 connector()->Connect(“mojo:service”); 183 connector()->Connect(“"mojo:service"”);
184 mojom::SomeInterfacePtr some_interface; 184 mojom::SomeInterfacePtr some_interface;
185 connection->GetInterface(&some_interface); 185 connection->GetInterface(&some_interface);
186 some_interface->Foo(); 186 some_interface->Foo();
187 } 187 }
188 188

error: old chunk mismatch

OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698