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_ |