// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once #include namespace config { class IGenerationCallback { public: virtual void notifyGenerationChange(int64_t generation) = 0; virtual ~IGenerationCallback() {} }; class ICallback { public: virtual void configure(std::unique_ptr config) = 0; virtual ~ICallback() { } }; /** * Interface for callback methods used by ConfigFetcher, ConfigPoller and * LegacySubscriber. */ template class IFetcherCallback : public ICallback { protected: void configure(std::unique_ptr config) override { configure(std::unique_ptr(static_cast(config.release()))); } virtual void configure(std::unique_ptr config) = 0; }; } // namespace config