1
#pragma once
2

            
3
#include "envoy/content_parser/parser.h"
4

            
5
namespace Envoy {
6
namespace ContentParser {
7

            
8
/**
9
 * Factory for creating content parser instances. Provides parser metadata
10
 * such as stats prefix for potential namespaced metrics.
11
 */
12
class ParserFactory {
13
public:
14
106
  virtual ~ParserFactory() = default;
15

            
16
  /**
17
   * Create a new Parser instance.
18
   * @return ParserPtr a new parser instance
19
   */
20
  virtual ParserPtr createParser() PURE;
21

            
22
  /**
23
   * Get the stats prefix for this parser type.
24
   * @return const std::string& the stats prefix with trailing dot (e.g., "json.")
25
   */
26
  virtual const std::string& statsPrefix() const PURE;
27
};
28

            
29
using ParserFactoryPtr = std::unique_ptr<ParserFactory>;
30

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