1
#pragma once
2

            
3
#include "envoy/access_log/access_log_config.h"
4

            
5
#include "source/extensions/common/wasm/remote_async_datasource.h"
6

            
7
namespace Envoy {
8
namespace Extensions {
9
namespace AccessLoggers {
10
namespace Wasm {
11

            
12
/**
13
 * Config registration for the file access log. @see AccessLogInstanceFactory.
14
 */
15
class WasmAccessLogFactory : public AccessLog::AccessLogInstanceFactory,
16
                             Logger::Loggable<Logger::Id::wasm> {
17
public:
18
  AccessLog::InstanceSharedPtr
19
  createAccessLogInstance(const Protobuf::Message& config, AccessLog::FilterPtr&& filter,
20
                          Server::Configuration::GenericFactoryContext& context,
21
                          std::vector<Formatter::CommandParserPtr>&& = {}) override;
22

            
23
  ProtobufTypes::MessagePtr createEmptyConfigProto() override;
24

            
25
  std::string name() const override;
26

            
27
private:
28
  absl::flat_hash_map<std::string, std::string> convertJsonFormatToMap(Protobuf::Struct config);
29
};
30

            
31
} // namespace Wasm
32
} // namespace AccessLoggers
33
} // namespace Extensions
34
} // namespace Envoy