1
#pragma once
2

            
3
#include <vector>
4

            
5
#include "envoy/extensions/matching/input_matchers/metadata/v3/metadata.pb.h"
6
#include "envoy/matcher/matcher.h"
7
#include "envoy/type/matcher/v3/value.pb.h"
8

            
9
#include "source/common/common/matchers.h"
10
#include "source/extensions/matching/http/metadata_input/meta_input.h"
11

            
12
namespace Envoy {
13
namespace Extensions {
14
namespace Matching {
15
namespace InputMatchers {
16
namespace Metadata {
17

            
18
class Matcher : public Envoy::Matcher::InputMatcher, Logger::Loggable<Logger::Id::filter> {
19
public:
20
  Matcher(const Envoy::Matchers::ValueMatcherConstSharedPtr, const bool);
21
  ::Envoy::Matcher::MatchResult match(const Envoy::Matcher::DataInputGetResult& input) override;
22

            
23
private:
24
  Envoy::Matchers::ValueMatcherConstSharedPtr value_matcher_;
25
  bool invert_;
26
};
27

            
28
} // namespace Metadata
29
} // namespace InputMatchers
30
} // namespace Matching
31
} // namespace Extensions
32
} // namespace Envoy