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

Side by Side Diff: ppapi/native_client/src/trusted/plugin/service_runtime.h

Issue 876483002: NaCl: Move src/trusted/plugin/ to components/nacl/renderer/plugin/ (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Update #include guards Created 5 years, 10 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 /* -*- c++ -*- */
2 /*
3 * Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 // A class containing information regarding a socket connection to a
9 // service runtime instance.
10
11 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_
12 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_
13
14 #include "native_client/src/include/nacl_macros.h"
15 #include "native_client/src/include/nacl_scoped_ptr.h"
16 #include "native_client/src/public/imc_types.h"
17 #include "native_client/src/shared/platform/nacl_sync.h"
18 #include "native_client/src/shared/srpc/nacl_srpc.h"
19
20 #include "ppapi/cpp/completion_callback.h"
21 #include "ppapi/native_client/src/trusted/plugin/utility.h"
22
23 struct NaClFileInfo;
24
25 namespace plugin {
26
27 class ErrorInfo;
28 class Plugin;
29 class SelLdrLauncherChrome;
30 class SrpcClient;
31 class ServiceRuntime;
32
33 // Struct of params used by StartSelLdr. Use a struct so that callback
34 // creation templates aren't overwhelmed with too many parameters.
35 struct SelLdrStartParams {
36 SelLdrStartParams(const std::string& url,
37 const PP_NaClFileInfo& file_info,
38 PP_NaClAppProcessType process_type)
39 : url(url),
40 file_info(file_info),
41 process_type(process_type) {
42 }
43 std::string url;
44 PP_NaClFileInfo file_info;
45 PP_NaClAppProcessType process_type;
46 };
47
48 // ServiceRuntime abstracts a NativeClient sel_ldr instance.
49 class ServiceRuntime {
50 public:
51 ServiceRuntime(Plugin* plugin,
52 PP_Instance pp_instance,
53 bool main_service_runtime,
54 bool uses_nonsfi_mode);
55 // The destructor terminates the sel_ldr process.
56 ~ServiceRuntime();
57
58 // Spawn the sel_ldr instance.
59 void StartSelLdr(const SelLdrStartParams& params,
60 pp::CompletionCallback callback);
61
62 // If starting sel_ldr from a background thread, wait for sel_ldr to
63 // actually start. Returns |false| if timed out waiting for the process
64 // to start. Otherwise, returns |true| if StartSelLdr is complete
65 // (either successfully or unsuccessfully).
66 bool WaitForSelLdrStart();
67
68 // Signal to waiting threads that StartSelLdr is complete (either
69 // successfully or unsuccessfully).
70 void SignalStartSelLdrDone();
71
72 // If starting the nexe from a background thread, wait for the nexe to
73 // actually start. Returns |true| is the nexe started successfully.
74 bool WaitForNexeStart();
75
76 // Returns |true| if WaitForSelLdrStart() timed out.
77 bool SelLdrWaitTimedOut();
78
79 // Signal to waiting threads that LoadNexeAndStart is complete (either
80 // successfully or unsuccessfully).
81 void SignalNexeStarted(bool ok);
82
83 // Establish an SrpcClient to the sel_ldr instance and start the nexe.
84 // This function must be called on the main thread.
85 // This function must only be called once.
86 void StartNexe();
87
88 // Starts the application channel to the nexe.
89 SrpcClient* SetupAppChannel();
90
91 bool RemoteLog(int severity, const std::string& msg);
92 Plugin* plugin() const { return plugin_; }
93 void Shutdown();
94
95 bool main_service_runtime() const { return main_service_runtime_; }
96
97 private:
98 NACL_DISALLOW_COPY_AND_ASSIGN(ServiceRuntime);
99 bool StartNexeInternal();
100
101 bool SetupCommandChannel();
102 bool StartModule();
103 void ReapLogs();
104
105 void ReportLoadError(const ErrorInfo& error_info);
106
107 NaClSrpcChannel command_channel_;
108 Plugin* plugin_;
109 PP_Instance pp_instance_;
110 bool main_service_runtime_;
111 bool uses_nonsfi_mode_;
112 nacl::scoped_ptr<SelLdrLauncherChrome> subprocess_;
113
114 // Mutex and CondVar to protect start_sel_ldr_done_ and nexe_started_.
115 NaClMutex mu_;
116 NaClCondVar cond_;
117 bool start_sel_ldr_done_;
118 bool sel_ldr_wait_timed_out_;
119 bool start_nexe_done_;
120 bool nexe_started_ok_;
121
122 NaClHandle bootstrap_channel_;
123 };
124
125 } // namespace plugin
126
127 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698