1
#pragma once
2

            
3
#include "envoy/config/subscription.h"
4

            
5
#include "source/common/config/opaque_resource_decoder_impl.h"
6
#include "source/common/config/resource_name.h"
7

            
8
namespace Envoy {
9
namespace Config {
10

            
11
template <typename Current> struct SubscriptionBase : public Config::SubscriptionCallbacks {
12
public:
13
  SubscriptionBase(ProtobufMessage::ValidationVisitor& validation_visitor,
14
                   absl::string_view name_field)
15
12816
      : resource_decoder_(std::make_shared<Config::OpaqueResourceDecoderImpl<Current>>(
16
12816
            validation_visitor, name_field)) {}
17

            
18
12814
  std::string getResourceName() const { return Envoy::Config::getResourceName<Current>(); }
19

            
20
protected:
21
  OpaqueResourceDecoderSharedPtr resource_decoder_;
22
};
23

            
24
} // namespace Config
25
} // namespace Envoy