1
#pragma once
2

            
3
#include "envoy/ratelimit/ratelimit.h"
4
#include "envoy/registry/registry.h"
5

            
6
#include "source/extensions/filters/common/expr/evaluator.h"
7

            
8
namespace Envoy {
9
namespace Extensions {
10
namespace RateLimitDescriptors {
11
namespace Expr {
12

            
13
/**
14
 * Config registration for the computed rate limit descriptor.
15
 * @see DescriptorProducerFactory.
16
 */
17
class ExprDescriptorFactory : public RateLimit::DescriptorProducerFactory {
18
public:
19
  std::string name() const override;
20
  ProtobufTypes::MessagePtr createEmptyConfigProto() override;
21
  absl::StatusOr<RateLimit::DescriptorProducerPtr>
22
  createDescriptorProducerFromProto(const Protobuf::Message& message,
23
                                    Server::Configuration::CommonFactoryContext& context) override;
24
};
25

            
26
} // namespace Expr
27
} // namespace RateLimitDescriptors
28
} // namespace Extensions
29
} // namespace Envoy