LCOV - code coverage report
Current view: top level - source/extensions/bootstrap/wasm - config.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 4 12 33.3 %
Date: 2024-01-05 06:35:25 Functions: 2 7 28.6 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "envoy/common/pure.h"
       4             : #include "envoy/extensions/wasm/v3/wasm.pb.h"
       5             : #include "envoy/extensions/wasm/v3/wasm.pb.validate.h"
       6             : #include "envoy/server/bootstrap_extension_config.h"
       7             : #include "envoy/server/filter_config.h"
       8             : #include "envoy/server/instance.h"
       9             : 
      10             : #include "source/common/protobuf/protobuf.h"
      11             : #include "source/extensions/common/wasm/wasm.h"
      12             : 
      13             : namespace Envoy {
      14             : namespace Extensions {
      15             : namespace Bootstrap {
      16             : namespace Wasm {
      17             : 
      18             : using Common::Wasm::PluginHandleSharedPtrThreadLocal;
      19             : using Envoy::Extensions::Common::Wasm::PluginHandleSharedPtr;
      20             : using Envoy::Extensions::Common::Wasm::PluginSharedPtr;
      21             : 
      22             : class WasmService {
      23             : public:
      24             :   WasmService(PluginSharedPtr plugin, PluginHandleSharedPtr singleton)
      25           0 :       : plugin_(plugin), singleton_(std::move(singleton)) {}
      26             :   WasmService(PluginSharedPtr plugin,
      27             :               ThreadLocal::TypedSlotPtr<PluginHandleSharedPtrThreadLocal>&& tls_slot)
      28           0 :       : plugin_(plugin), tls_slot_(std::move(tls_slot)) {}
      29             : 
      30             : private:
      31             :   PluginSharedPtr plugin_;
      32             :   PluginHandleSharedPtr singleton_;
      33             :   ThreadLocal::TypedSlotPtr<PluginHandleSharedPtrThreadLocal> tls_slot_;
      34             : };
      35             : 
      36             : using WasmServicePtr = std::unique_ptr<WasmService>;
      37             : 
      38             : class WasmFactory : public Server::Configuration::BootstrapExtensionFactory {
      39             : public:
      40           0 :   ~WasmFactory() override = default;
      41          38 :   std::string name() const override { return "envoy.bootstrap.wasm"; }
      42             :   Server::BootstrapExtensionPtr
      43             :   createBootstrapExtension(const Protobuf::Message& config,
      44             :                            Server::Configuration::ServerFactoryContext& context) override;
      45           1 :   ProtobufTypes::MessagePtr createEmptyConfigProto() override {
      46           1 :     return std::make_unique<envoy::extensions::wasm::v3::WasmService>();
      47           1 :   }
      48             : };
      49             : 
      50             : class WasmServiceExtension : public Server::BootstrapExtension, Logger::Loggable<Logger::Id::wasm> {
      51             : public:
      52             :   WasmServiceExtension(const envoy::extensions::wasm::v3::WasmService& config,
      53             :                        Server::Configuration::ServerFactoryContext& context)
      54           0 :       : config_(config), context_(context) {}
      55           0 :   WasmService& wasmService() {
      56           0 :     ASSERT(wasm_service_ != nullptr);
      57           0 :     return *wasm_service_;
      58           0 :   }
      59             :   void onServerInitialized() override;
      60             : 
      61             : private:
      62             :   void createWasm(Server::Configuration::ServerFactoryContext& context);
      63             : 
      64             :   envoy::extensions::wasm::v3::WasmService config_;
      65             :   Server::Configuration::ServerFactoryContext& context_;
      66             :   WasmServicePtr wasm_service_;
      67             :   Config::DataSource::RemoteAsyncDataProviderPtr remote_data_provider_;
      68             : };
      69             : 
      70             : } // namespace Wasm
      71             : } // namespace Bootstrap
      72             : } // namespace Extensions
      73             : } // namespace Envoy

Generated by: LCOV version 1.15