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

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

Issue 870923004: NaCl: Remove now-unneeded SRPC reverse service code (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase Created 5 years, 11 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
1 /* -*- c++ -*- */ 1 /* -*- c++ -*- */
2 /* 2 /*
3 * Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 // A class containing information regarding a socket connection to a 8 // A class containing information regarding a socket connection to a
9 // service runtime instance. 9 // service runtime instance.
10 10
11 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_ 11 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_
12 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_ 12 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_
13 13
14 #include "native_client/src/include/nacl_macros.h" 14 #include "native_client/src/include/nacl_macros.h"
15 #include "native_client/src/include/nacl_scoped_ptr.h" 15 #include "native_client/src/include/nacl_scoped_ptr.h"
16 #include "native_client/src/public/imc_types.h"
16 #include "native_client/src/shared/platform/nacl_sync.h" 17 #include "native_client/src/shared/platform/nacl_sync.h"
17 #include "native_client/src/shared/srpc/nacl_srpc.h" 18 #include "native_client/src/shared/srpc/nacl_srpc.h"
18 #include "native_client/src/trusted/reverse_service/reverse_service.h"
19 #include "native_client/src/trusted/weak_ref/weak_ref.h"
20 19
21 #include "ppapi/cpp/completion_callback.h" 20 #include "ppapi/cpp/completion_callback.h"
22 #include "ppapi/native_client/src/trusted/plugin/utility.h" 21 #include "ppapi/native_client/src/trusted/plugin/utility.h"
23 22
24 struct NaClFileInfo; 23 struct NaClFileInfo;
25 24
26 namespace plugin { 25 namespace plugin {
27 26
28 class ErrorInfo; 27 class ErrorInfo;
29 class Plugin; 28 class Plugin;
30 class SelLdrLauncherChrome; 29 class SelLdrLauncherChrome;
31 class SrpcClient; 30 class SrpcClient;
32 class ServiceRuntime; 31 class ServiceRuntime;
33 32
34 // Struct of params used by StartSelLdr. Use a struct so that callback 33 // Struct of params used by StartSelLdr. Use a struct so that callback
35 // creation templates aren't overwhelmed with too many parameters. 34 // creation templates aren't overwhelmed with too many parameters.
36 struct SelLdrStartParams { 35 struct SelLdrStartParams {
37 SelLdrStartParams(const std::string& url, 36 SelLdrStartParams(const std::string& url,
38 const PP_NaClFileInfo& file_info, 37 const PP_NaClFileInfo& file_info,
39 PP_NaClAppProcessType process_type) 38 PP_NaClAppProcessType process_type)
40 : url(url), 39 : url(url),
41 file_info(file_info), 40 file_info(file_info),
42 process_type(process_type) { 41 process_type(process_type) {
43 } 42 }
44 std::string url; 43 std::string url;
45 PP_NaClFileInfo file_info; 44 PP_NaClFileInfo file_info;
46 PP_NaClAppProcessType process_type; 45 PP_NaClAppProcessType process_type;
47 }; 46 };
48 47
49 // Callback resources are essentially our continuation state.
50 struct OpenManifestEntryResource {
51 public:
52 OpenManifestEntryResource(const std::string& target_url,
53 struct NaClFileInfo* finfo,
54 bool* op_complete)
55 : url(target_url),
56 file_info(finfo),
57 op_complete_ptr(op_complete) {}
58 ~OpenManifestEntryResource();
59
60 std::string url;
61 struct NaClFileInfo* file_info;
62 PP_NaClFileInfo pp_file_info;
63 bool* op_complete_ptr;
64 };
65
66 // Do not invoke from the main thread, since the main methods will
67 // invoke CallOnMainThread and then wait on a condvar for the task to
68 // complete: if invoked from the main thread, the main method not
69 // returning (and thus unblocking the main thread) means that the
70 // main-thread continuation methods will never get called, and thus
71 // we'd get a deadlock.
72 class PluginReverseInterface: public nacl::ReverseInterface {
73 public:
74 PluginReverseInterface(nacl::WeakRefAnchor* anchor,
75 PP_Instance pp_instance,
76 ServiceRuntime* service_runtime);
77
78 virtual ~PluginReverseInterface();
79
80 void ShutDown();
81
82 virtual void DoPostMessage(std::string message);
83
84 virtual void StartupInitializationComplete();
85
86 virtual bool OpenManifestEntry(std::string url_key,
87 struct NaClFileInfo *info);
88
89 virtual void ReportCrash();
90
91 virtual void ReportExitStatus(int exit_status);
92
93 // TODO(teravest): Remove this method once it's gone from
94 // nacl::ReverseInterface.
95 virtual int64_t RequestQuotaForWrite(std::string file_id,
96 int64_t offset,
97 int64_t bytes_to_write);
98
99 protected:
100 virtual void OpenManifestEntry_MainThreadContinuation(
101 OpenManifestEntryResource* p,
102 int32_t err);
103
104 virtual void StreamAsFile_MainThreadContinuation(
105 OpenManifestEntryResource* p,
106 int32_t result);
107
108 private:
109 nacl::WeakRefAnchor* anchor_; // holds a ref
110 // Should be used only in main thread in WeakRef-protected callbacks.
111 PP_Instance pp_instance_;
112 ServiceRuntime* service_runtime_;
113 NaClMutex mu_;
114 NaClCondVar cv_;
115 bool shutting_down_;
116 };
117
118 // ServiceRuntime abstracts a NativeClient sel_ldr instance. 48 // ServiceRuntime abstracts a NativeClient sel_ldr instance.
119 class ServiceRuntime { 49 class ServiceRuntime {
120 public: 50 public:
121 ServiceRuntime(Plugin* plugin, 51 ServiceRuntime(Plugin* plugin,
122 PP_Instance pp_instance, 52 PP_Instance pp_instance,
123 bool main_service_runtime, 53 bool main_service_runtime,
124 bool uses_nonsfi_mode); 54 bool uses_nonsfi_mode);
125 // The destructor terminates the sel_ldr process. 55 // The destructor terminates the sel_ldr process.
126 ~ServiceRuntime(); 56 ~ServiceRuntime();
127 57
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 Plugin* plugin() const { return plugin_; } 92 Plugin* plugin() const { return plugin_; }
163 void Shutdown(); 93 void Shutdown();
164 94
165 bool main_service_runtime() const { return main_service_runtime_; } 95 bool main_service_runtime() const { return main_service_runtime_; }
166 96
167 private: 97 private:
168 NACL_DISALLOW_COPY_AND_ASSIGN(ServiceRuntime); 98 NACL_DISALLOW_COPY_AND_ASSIGN(ServiceRuntime);
169 bool StartNexeInternal(); 99 bool StartNexeInternal();
170 100
171 bool SetupCommandChannel(); 101 bool SetupCommandChannel();
172 bool InitReverseService();
173 bool StartModule(); 102 bool StartModule();
174 void ReapLogs(); 103 void ReapLogs();
175 104
176 void ReportLoadError(const ErrorInfo& error_info); 105 void ReportLoadError(const ErrorInfo& error_info);
177 106
178 NaClSrpcChannel command_channel_; 107 NaClSrpcChannel command_channel_;
179 Plugin* plugin_; 108 Plugin* plugin_;
180 PP_Instance pp_instance_; 109 PP_Instance pp_instance_;
181 bool main_service_runtime_; 110 bool main_service_runtime_;
182 bool uses_nonsfi_mode_; 111 bool uses_nonsfi_mode_;
183 nacl::ReverseService* reverse_service_;
184 nacl::scoped_ptr<SelLdrLauncherChrome> subprocess_; 112 nacl::scoped_ptr<SelLdrLauncherChrome> subprocess_;
185 113
186 nacl::WeakRefAnchor* anchor_;
187
188 PluginReverseInterface* rev_interface_;
189
190 // Mutex and CondVar to protect start_sel_ldr_done_ and nexe_started_. 114 // Mutex and CondVar to protect start_sel_ldr_done_ and nexe_started_.
191 NaClMutex mu_; 115 NaClMutex mu_;
192 NaClCondVar cond_; 116 NaClCondVar cond_;
193 bool start_sel_ldr_done_; 117 bool start_sel_ldr_done_;
194 bool sel_ldr_wait_timed_out_; 118 bool sel_ldr_wait_timed_out_;
195 bool start_nexe_done_; 119 bool start_nexe_done_;
196 bool nexe_started_ok_; 120 bool nexe_started_ok_;
197 121
198 NaClHandle bootstrap_channel_; 122 NaClHandle bootstrap_channel_;
199 }; 123 };
200 124
201 } // namespace plugin 125 } // namespace plugin
202 126
203 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_ 127 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698