1
#pragma once
2

            
3
#include "envoy/config/typed_config.h"
4
#include "envoy/content_parser/factory.h"
5
#include "envoy/server/factory_context.h"
6

            
7
namespace Envoy {
8
namespace ContentParser {
9

            
10
/**
11
 * Config factory for content parsers. Implementations create ParserFactory instances
12
 * from protobuf configuration.
13
 */
14
class NamedContentParserConfigFactory : public Config::TypedFactory {
15
public:
16
  ~NamedContentParserConfigFactory() override = default;
17

            
18
  /**
19
   * Create a ParserFactory from protobuf configuration.
20
   * @param config the protobuf configuration for the parser
21
   * @param context factory context for accessing server resources
22
   * @return ParserFactoryPtr a parser factory instance
23
   */
24
  virtual ParserFactoryPtr
25
  createParserFactory(const Protobuf::Message& config,
26
                      Server::Configuration::ServerFactoryContext& context) PURE;
27

            
28
14
  std::string category() const override { return "envoy.content_parsers"; }
29
};
30

            
31
} // namespace ContentParser
32
} // namespace Envoy