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

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

Issue 418423002: Pepper: Stop using SRPC for irt_open_resource(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
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
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 nacl::string url; 61 nacl::string url;
62 PP_NaClFileInfo file_info; 62 PP_NaClFileInfo file_info;
63 bool uses_irt; 63 bool uses_irt;
64 bool uses_ppapi; 64 bool uses_ppapi;
65 bool enable_dev_interfaces; 65 bool enable_dev_interfaces;
66 bool enable_dyncode_syscalls; 66 bool enable_dyncode_syscalls;
67 bool enable_exception_handling; 67 bool enable_exception_handling;
68 bool enable_crash_throttling; 68 bool enable_crash_throttling;
69 }; 69 };
70 70
71 // Callback resources are essentially our continuation state.
72 struct OpenManifestEntryResource {
73 public:
74 OpenManifestEntryResource(const std::string& target_url,
75 struct NaClFileInfo* finfo,
76 bool* op_complete)
77 : url(target_url),
78 file_info(finfo),
79 op_complete_ptr(op_complete) {}
80 ~OpenManifestEntryResource();
81
82 std::string url;
83 struct NaClFileInfo* file_info;
84 PP_NaClFileInfo pp_file_info;
85 bool* op_complete_ptr;
86 };
87
88 // Do not invoke from the main thread, since the main methods will 71 // Do not invoke from the main thread, since the main methods will
89 // invoke CallOnMainThread and then wait on a condvar for the task to 72 // invoke CallOnMainThread and then wait on a condvar for the task to
90 // complete: if invoked from the main thread, the main method not 73 // complete: if invoked from the main thread, the main method not
91 // returning (and thus unblocking the main thread) means that the 74 // returning (and thus unblocking the main thread) means that the
92 // main-thread continuation methods will never get called, and thus 75 // main-thread continuation methods will never get called, and thus
93 // we'd get a deadlock. 76 // we'd get a deadlock.
94 class PluginReverseInterface: public nacl::ReverseInterface { 77 class PluginReverseInterface: public nacl::ReverseInterface {
95 public: 78 public:
96 PluginReverseInterface(nacl::WeakRefAnchor* anchor, 79 PluginReverseInterface(PP_Instance pp_instance,
97 PP_Instance pp_instance,
98 ServiceRuntime* service_runtime, 80 ServiceRuntime* service_runtime,
99 pp::CompletionCallback init_done_cb, 81 pp::CompletionCallback init_done_cb,
100 pp::CompletionCallback crash_cb); 82 pp::CompletionCallback crash_cb);
101 83
102 virtual ~PluginReverseInterface(); 84 virtual ~PluginReverseInterface();
103 85
104 void ShutDown(); 86 void ShutDown();
105 87
106 virtual void DoPostMessage(nacl::string message); 88 virtual void DoPostMessage(nacl::string message);
107 89
108 virtual void StartupInitializationComplete(); 90 virtual void StartupInitializationComplete();
109 91
110 virtual bool OpenManifestEntry(nacl::string url_key, 92 virtual bool OpenManifestEntry(nacl::string url_key,
111 struct NaClFileInfo *info); 93 struct NaClFileInfo *info);
112 94
113 virtual void ReportCrash(); 95 virtual void ReportCrash();
114 96
115 virtual void ReportExitStatus(int exit_status); 97 virtual void ReportExitStatus(int exit_status);
116 98
117 // TODO(teravest): Remove this method once it's gone from 99 // TODO(teravest): Remove this method once it's gone from
118 // nacl::ReverseInterface. 100 // nacl::ReverseInterface.
119 virtual int64_t RequestQuotaForWrite(nacl::string file_id, 101 virtual int64_t RequestQuotaForWrite(nacl::string file_id,
120 int64_t offset, 102 int64_t offset,
121 int64_t bytes_to_write); 103 int64_t bytes_to_write);
122 104
123 protected:
124 virtual void OpenManifestEntry_MainThreadContinuation(
125 OpenManifestEntryResource* p,
126 int32_t err);
127
128 virtual void StreamAsFile_MainThreadContinuation(
129 OpenManifestEntryResource* p,
130 int32_t result);
131
132 private: 105 private:
133 nacl::WeakRefAnchor* anchor_; // holds a ref
134 // Should be used only in main thread in WeakRef-protected callbacks.
135 PP_Instance pp_instance_; 106 PP_Instance pp_instance_;
136 ServiceRuntime* service_runtime_; 107 ServiceRuntime* service_runtime_;
137 NaClMutex mu_; 108 NaClMutex mu_;
138 NaClCondVar cv_; 109 NaClCondVar cv_;
139 bool shutting_down_; 110 bool shutting_down_;
140 111
141 pp::CompletionCallback init_done_cb_; 112 pp::CompletionCallback init_done_cb_;
142 pp::CompletionCallback crash_cb_; 113 pp::CompletionCallback crash_cb_;
143 }; 114 };
144 115
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 void ReportLoadError(const ErrorInfo& error_info); 186 void ReportLoadError(const ErrorInfo& error_info);
216 187
217 NaClSrpcChannel command_channel_; 188 NaClSrpcChannel command_channel_;
218 Plugin* plugin_; 189 Plugin* plugin_;
219 PP_Instance pp_instance_; 190 PP_Instance pp_instance_;
220 bool main_service_runtime_; 191 bool main_service_runtime_;
221 bool uses_nonsfi_mode_; 192 bool uses_nonsfi_mode_;
222 nacl::ReverseService* reverse_service_; 193 nacl::ReverseService* reverse_service_;
223 nacl::scoped_ptr<SelLdrLauncherChrome> subprocess_; 194 nacl::scoped_ptr<SelLdrLauncherChrome> subprocess_;
224 195
225 nacl::WeakRefAnchor* anchor_;
226
227 PluginReverseInterface* rev_interface_; 196 PluginReverseInterface* rev_interface_;
228 197
229 // Mutex and CondVar to protect start_sel_ldr_done_ and nexe_started_. 198 // Mutex and CondVar to protect start_sel_ldr_done_ and nexe_started_.
230 NaClMutex mu_; 199 NaClMutex mu_;
231 NaClCondVar cond_; 200 NaClCondVar cond_;
232 bool start_sel_ldr_done_; 201 bool start_sel_ldr_done_;
233 bool start_nexe_done_; 202 bool start_nexe_done_;
234 bool nexe_started_ok_; 203 bool nexe_started_ok_;
235 204
236 NaClHandle bootstrap_channel_; 205 NaClHandle bootstrap_channel_;
237 }; 206 };
238 207
239 } // namespace plugin 208 } // namespace plugin
240 209
241 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_ 210 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698