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

Side by Side Diff: services/shell/public/cpp/service_runner.h

Issue 2419723002: Move services/shell to services/service_manager (Closed)
Patch Set: rebase Created 4 years, 2 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
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef SERVICES_SHELL_PUBLIC_CPP_SERVICE_RUNNER_H_
6 #define SERVICES_SHELL_PUBLIC_CPP_SERVICE_RUNNER_H_
7
8 #include <memory>
9
10 #include "base/message_loop/message_loop.h"
11 #include "mojo/public/cpp/system/core.h"
12
13 namespace shell {
14
15 class Service;
16 class ServiceContext;
17
18 // A utility for running a Service that uses //base. The typical use case is to
19 // use from your ServiceMain:
20 //
21 // MojoResult ServiceMain(MojoHandle service_request_handle) {
22 // shell::ServiceRunner runner(new MyService);
23 // return runner.Run(service_request_handle);
24 // }
25 //
26 // ServiceRunner takes care of chromium environment initialization and
27 // shutdown, and starting a base::MessageLoop from which your service can run
28 // and ultimately Quit().
29 class ServiceRunner {
30 public:
31 // Takes ownership of |service|.
32 explicit ServiceRunner(Service* service);
33 ~ServiceRunner();
34
35 static void InitBaseCommandLine();
36
37 void set_message_loop_type(base::MessageLoop::Type type);
38
39 // Once the various parameters have been set above, use Run to initialize an
40 // ServiceContext wired to the provided delegate, and run a MessageLoop until
41 // the service exits.
42 //
43 // Iff |init_base| is true, the runner will perform some initialization of
44 // base globals (e.g. CommandLine and AtExitManager) before starting the
45 // service.
46 MojoResult Run(MojoHandle shell_handle, bool init_base);
47
48 // Calls Run above with |init_base| set to |true|.
49 MojoResult Run(MojoHandle shell_handle);
50
51 // Allows the caller to shut down the connection with the Service Manager.
52 // After the Service Manager notices the pipe has closed, it will no longer
53 // track an instance of this service, though this service may continue to run
54 // and handle requests from others.
55 void DestroyServiceContext();
56
57 // Allows the caller to explicitly quit the service. Must be called from
58 // the thread which created the ServiceRunner.
59 void Quit();
60
61 private:
62 std::unique_ptr<Service> service_;
63
64 // MessageLoop type. Default is TYPE_DEFAULT.
65 base::MessageLoop::Type message_loop_type_;
66 // Whether Run() has been called.
67 bool has_run_;
68
69 DISALLOW_COPY_AND_ASSIGN(ServiceRunner);
70 };
71
72 } // namespace shell
73
74 #endif // SERVICES_SHELL_PUBLIC_CPP_SERVICE_RUNNER_H_
OLDNEW
« no previous file with comments | « services/shell/public/cpp/service_context_ref.h ('k') | services/shell/public/cpp/service_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698