1
#pragma once
2

            
3
#include "envoy/network/filter.h"
4

            
5
namespace Envoy {
6
namespace Network {
7
namespace Matching {
8

            
9
/**
10
 * Implementation of Network::MatchingData, providing connection-level data to
11
 * the match tree.
12
 */
13
class MatchingDataImpl : public MatchingData {
14
public:
15
  explicit MatchingDataImpl(const ConnectionSocket& socket,
16
                            const StreamInfo::FilterState& filter_state,
17
                            const envoy::config::core::v3::Metadata& dynamic_metadata)
18
126
      : socket_(socket), filter_state_(filter_state), dynamic_metadata_(dynamic_metadata) {}
19
135
  const ConnectionSocket& socket() const override { return socket_; }
20
32
  const StreamInfo::FilterState& filterState() const override { return filter_state_; }
21
1
  const envoy::config::core::v3::Metadata& dynamicMetadata() const override {
22
1
    return dynamic_metadata_;
23
1
  }
24

            
25
private:
26
  const ConnectionSocket& socket_;
27
  const StreamInfo::FilterState& filter_state_;
28
  const envoy::config::core::v3::Metadata& dynamic_metadata_;
29
};
30

            
31
using NetworkMatchingDataImplSharedPtr = std::shared_ptr<MatchingDataImpl>;
32

            
33
/**
34
 * Implementation of Network::UdpMatchingData, providing UDP data to the match tree.
35
 */
36
class UdpMatchingDataImpl : public UdpMatchingData {
37
public:
38
  UdpMatchingDataImpl(const Address::Instance& local_address,
39
                      const Address::Instance& remote_address)
40
256
      : local_address_(local_address), remote_address_(remote_address) {}
41
21
  const Address::Instance& localAddress() const override { return local_address_; }
42
38
  const Address::Instance& remoteAddress() const override { return remote_address_; }
43

            
44
private:
45
  const Address::Instance& local_address_;
46
  const Address::Instance& remote_address_;
47
};
48

            
49
} // namespace Matching
50
} // namespace Network
51
} // namespace Envoy