Lines
100 %
Functions
#pragma once
#include "envoy/extensions/matching/common_inputs/network/v3/network_inputs.pb.h"
#include "envoy/extensions/matching/common_inputs/network/v3/network_inputs.pb.validate.h"
#include "envoy/matcher/matcher.h"
#include "envoy/network/filter.h"
#include "envoy/registry/registry.h"
#include "source/common/network/utility.h"
namespace Envoy {
namespace Network {
namespace Matching {
template <class InputType, class ProtoType, class MatchingDataType>
class BaseFactory : public Matcher::DataInputFactory<MatchingDataType> {
protected:
explicit BaseFactory(const std::string& name) : name_(name) {}
public:
std::string name() const override { return "envoy.matching.inputs." + name_; }
Matcher::DataInputFactoryCb<MatchingDataType>
createDataInputFactoryCb(const Protobuf::Message&, ProtobufMessage::ValidationVisitor&) override {
return []() { return std::make_unique<InputType>(); };
};
ProtobufTypes::MessagePtr createEmptyConfigProto() override {
return std::make_unique<ProtoType>();
}
private:
const std::string name_;
} // namespace Matching
} // namespace Network
} // namespace Envoy