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

Unified Diff: ppapi/native_client/src/trusted/plugin/pnacl_coordinator.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, 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 side-by-side diff with in-line comments
Download patch
Index: ppapi/native_client/src/trusted/plugin/pnacl_coordinator.h
diff --git a/ppapi/native_client/src/trusted/plugin/pnacl_coordinator.h b/ppapi/native_client/src/trusted/plugin/pnacl_coordinator.h
deleted file mode 100644
index 0ef0dbb6f83c96bd12b5f51ab21342c21a473fe5..0000000000000000000000000000000000000000
--- a/ppapi/native_client/src/trusted/plugin/pnacl_coordinator.h
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PNACL_COORDINATOR_H_
-#define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PNACL_COORDINATOR_H_
-
-#include <vector>
-
-#include "native_client/src/include/nacl_macros.h"
-#include "native_client/src/shared/platform/nacl_sync_raii.h"
-#include "native_client/src/shared/srpc/nacl_srpc.h"
-#include "native_client/src/trusted/desc/nacl_desc_wrapper.h"
-
-#include "ppapi/cpp/completion_callback.h"
-
-#include "ppapi/native_client/src/trusted/plugin/nacl_subprocess.h"
-#include "ppapi/native_client/src/trusted/plugin/plugin_error.h"
-#include "ppapi/native_client/src/trusted/plugin/pnacl_resources.h"
-
-#include "ppapi/utility/completion_callback_factory.h"
-
-struct PP_PNaClOptions;
-
-namespace plugin {
-
-class Plugin;
-class PnaclCoordinator;
-class PnaclTranslateThread;
-class TempFile;
-
-// A class invoked by Plugin to handle PNaCl client-side translation.
-// Usage:
-// (1) Invoke the factory method, e.g.,
-// PnaclCoordinator* coord = BitcodeToNative(plugin,
-// "http://foo.com/my.pexe",
-// pnacl_options,
-// TranslateNotifyCallback);
-// (2) TranslateNotifyCallback gets invoked when translation is complete.
-// If the translation was successful, the pp_error argument is PP_OK.
-// Other values indicate errors.
-// (3) After finish_callback runs, get the file descriptor of the translated
-// nexe, e.g.,
-// fd = coord->ReleaseTranslatedFD();
-// (4) Load the nexe from "fd".
-// (5) delete coord.
-//
-// Translation proceeds in two steps:
-// (1) llc translates the bitcode in pexe_url_ to an object in obj_file_.
-// (2) ld links the object code in obj_file_ and produces a nexe in nexe_file_.
-class PnaclCoordinator {
- public:
- // Maximum number of object files passable to the translator. Cannot be
- // changed without changing the RPC signatures.
- const static size_t kMaxTranslatorObjectFiles = 16;
- virtual ~PnaclCoordinator();
-
- // The factory method for translations.
- static PnaclCoordinator* BitcodeToNative(
- Plugin* plugin,
- const std::string& pexe_url,
- const PP_PNaClOptions& pnacl_options,
- const pp::CompletionCallback& translate_notify_callback);
-
- // Call this to take ownership of the FD of the translated nexe after
- // BitcodeToNative has completed (and the finish_callback called).
- PP_FileHandle TakeTranslatedFileHandle();
-
- // Return a callback that should be notified when |bytes_compiled| bytes
- // have been compiled.
- pp::CompletionCallback GetCompileProgressCallback(int64_t bytes_compiled);
-
- // Return true if we should delay the progress event reporting.
- // This delay approximates:
- // - the size of the buffer of bytes sent but not-yet-compiled by LLC.
- // - the linking time.
- bool ShouldDelayProgressEvent() {
- const uint32_t kProgressEventSlopPct = 5;
- return ((expected_pexe_size_ - pexe_bytes_compiled_) * 100 /
- expected_pexe_size_) < kProgressEventSlopPct;
- }
-
-
- void BitcodeStreamCacheHit(PP_FileHandle handle);
- void BitcodeStreamCacheMiss(int64_t expected_pexe_size,
- PP_FileHandle handle);
-
- // Invoked when a pexe data chunk arrives (when using streaming translation)
- void BitcodeStreamGotData(const void* data, int32_t length);
-
- // Invoked when the pexe download finishes (using streaming translation)
- void BitcodeStreamDidFinish(int32_t pp_error);
-
- private:
- NACL_DISALLOW_COPY_AND_ASSIGN(PnaclCoordinator);
-
- // BitcodeToNative is the factory method for PnaclCoordinators.
- // Therefore the constructor is private.
- PnaclCoordinator(Plugin* plugin,
- const std::string& pexe_url,
- const PP_PNaClOptions& pnacl_options,
- const pp::CompletionCallback& translate_notify_callback);
-
- // Invoke to issue a GET request for bitcode.
- void OpenBitcodeStream();
-
- // Invoked when a pexe data chunk is compiled.
- void BitcodeGotCompiled(int32_t pp_error, int64_t bytes_compiled);
- // Once llc and ld nexes have been loaded and the two temporary files have
- // been created, this starts the translation. Translation starts two
- // subprocesses, one for llc and one for ld.
- void RunTranslate(int32_t pp_error);
-
- // Invoked when translation is finished.
- void TranslateFinished(int32_t pp_error);
-
- // Invoked when the read descriptor for nexe_file_ is created.
- void NexeReadDidOpen(int32_t pp_error);
-
- // Bring control back to the plugin by invoking the
- // |translate_notify_callback_|. This does not set the ErrorInfo report,
- // it is assumed that it was already set.
- void ExitWithError();
- // Run |translate_notify_callback_| with an error condition that is not
- // PPAPI specific. Also set ErrorInfo report.
- void ReportNonPpapiError(PP_NaClError err, const std::string& message);
- // Run when faced with a PPAPI error condition. Bring control back to the
- // plugin by invoking the |translate_notify_callback_|.
- // Also set ErrorInfo report.
- void ReportPpapiError(PP_NaClError err,
- int32_t pp_error, const std::string& message);
-
-
- // Keeps track of the pp_error upon entry to TranslateFinished,
- // for inspection after cleanup.
- int32_t translate_finish_error_;
-
- // The plugin owning the nexe for which we are doing translation.
- Plugin* plugin_;
-
- pp::CompletionCallback translate_notify_callback_;
- // Set to true when the translation (if applicable) is finished and the nexe
- // file is loaded, (or when there was an error), and the browser has been
- // notified via ReportTranslationFinished. If it is not set before
- // plugin/coordinator destruction, the destructor will call
- // ReportTranslationFinished.
- bool translation_finished_reported_;
- // Threadsafety is required to support file lookups.
- pp::CompletionCallbackFactory<PnaclCoordinator,
- pp::ThreadSafeThreadTraits> callback_factory_;
-
- // An auxiliary class that manages downloaded resources (llc and ld nexes).
- nacl::scoped_ptr<PnaclResources> resources_;
-
- // The URL for the pexe file.
- std::string pexe_url_;
- // Options for translation.
- PP_PNaClOptions pnacl_options_;
- // Architecture-specific attributes used for translation. These are
- // supplied by Chrome, not the developer, and are therefore different
- // from PNaCl options.
- std::string architecture_attributes_;
-
- // Object file, produced by the translator and consumed by the linker.
- std::vector<TempFile*> obj_files_;
- nacl::scoped_ptr<nacl::DescWrapper> invalid_desc_wrapper_;
- // Number of split modules (threads) for llc
- int split_module_count_;
-
- // Translated nexe file, produced by the linker.
- nacl::scoped_ptr<TempFile> temp_nexe_file_;
-
- // Used to report information when errors (PPAPI or otherwise) are reported.
- ErrorInfo error_info_;
-
- // True if an error was already reported, and translate_notify_callback_
- // was already run/consumed.
- bool error_already_reported_;
-
- // State for timing and size information for UMA stats.
- int64_t pexe_size_; // Count as we stream -- will converge to pexe size.
- int64_t pexe_bytes_compiled_; // Count as we compile.
- int64_t expected_pexe_size_; // Expected download total (-1 if unknown).
-
- // The helper thread used to do translations via SRPC.
- // It accesses fields of PnaclCoordinator so it must have a
- // shorter lifetime.
- nacl::scoped_ptr<PnaclTranslateThread> translate_thread_;
-};
-
-//----------------------------------------------------------------------
-
-} // namespace plugin;
-#endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PNACL_COORDINATOR_H_

Powered by Google App Engine
This is Rietveld 408576698