5#ifndef V8_WASM_STREAMING_DECODER_H_
6#define V8_WASM_STREAMING_DECODER_H_
8#if !V8_ENABLE_WEBASSEMBLY
9#error This header should only be included if WebAssembly is enabled.
43 std::shared_ptr<WireBytesStorage>,
44 int code_section_start,
45 int code_section_length) = 0;
57 bool after_error) = 0;
76 virtual void Finish(
bool can_use_compiled_module =
true) = 0;
88 std::function<void(
const std::shared_ptr<NativeModule>&)>;
92 more_functions_can_be_serialized_callback_ = std::move(
callback);
98 compiled_module_bytes_ = bytes;
102 const std::shared_ptr<NativeModule>& native_module) = 0;
104 const std::string&
url()
const {
return *url_; }
105 std::shared_ptr<const std::string>
shared_url()
const {
return url_; }
111 static std::unique_ptr<StreamingDecoder> CreateAsyncStreamingDecoder(
112 std::unique_ptr<StreamingProcessor> processor);
114 static std::unique_ptr<StreamingDecoder> CreateSyncStreamingDecoder(
117 const char* api_method_name_for_errors,
118 std::shared_ptr<CompilationResultResolver> resolver);
123 const std::shared_ptr<std::string> url_ = std::make_shared<std::string>();
constexpr size_t size() const
constexpr T * begin() const
void SetMoreFunctionsCanBeSerializedCallback(MoreFunctionsCanBeSerializedCallback callback)
const std::string & url() const
std::shared_ptr< const std::string > shared_url() const
MoreFunctionsCanBeSerializedCallback more_functions_can_be_serialized_callback_
bool deserializing() const
std::function< void(const std::shared_ptr< NativeModule > &)> MoreFunctionsCanBeSerializedCallback
virtual void Finish(bool can_use_compiled_module=true)=0
virtual void OnBytesReceived(base::Vector< const uint8_t > bytes)=0
void SetUrl(base::Vector< const char > url)
base::Vector< const uint8_t > compiled_module_bytes_
virtual ~StreamingDecoder()=default
virtual void NotifyNativeModuleCreated(const std::shared_ptr< NativeModule > &native_module)=0
void SetCompiledModuleBytes(base::Vector< const uint8_t > bytes)
virtual void NotifyCompilationDiscarded()=0
virtual bool ProcessModuleHeader(base::Vector< const uint8_t > bytes)=0
virtual bool ProcessFunctionBody(base::Vector< const uint8_t > bytes, uint32_t offset)=0
virtual bool ProcessCodeSectionHeader(int num_functions, uint32_t offset, std::shared_ptr< WireBytesStorage >, int code_section_start, int code_section_length)=0
virtual void OnFinishedChunk()=0
virtual bool Deserialize(base::Vector< const uint8_t > module_bytes, base::Vector< const uint8_t > wire_bytes)=0
virtual ~StreamingProcessor()=default
virtual bool ProcessSection(SectionCode section_code, base::Vector< const uint8_t > bytes, uint32_t offset)=0
virtual void OnFinishedStream(base::OwnedVector< const uint8_t > bytes, bool after_error)=0
#define V8_EXPORT_PRIVATE