C++ Server-Side SDK
LaunchDarkly SDK
ifdv2_condition.hpp
1 #pragma once
2 
3 #include "fdv2_source_result.hpp"
4 
5 #include <launchdarkly/async/promise.hpp>
6 
7 #include <memory>
8 
9 namespace launchdarkly::server_side::data_interfaces {
10 
37  public:
38  enum class Type {
40  kFallback,
42  kRecovery,
44  kCancelled,
45  };
46 
52  [[nodiscard]] virtual async::Future<Type> Execute() = 0;
53 
58  virtual void Inform(FDv2SourceResult const& result) = 0;
59 
64  virtual void Close() = 0;
65 
69  [[nodiscard]] virtual Type GetType() const = 0;
70 
71  virtual ~IFDv2Condition() = default;
72  IFDv2Condition(IFDv2Condition const&) = delete;
73  IFDv2Condition(IFDv2Condition&&) = delete;
74  IFDv2Condition& operator=(IFDv2Condition const&) = delete;
75  IFDv2Condition& operator=(IFDv2Condition&&) = delete;
76 
77  protected:
78  IFDv2Condition() = default;
79 };
80 
89  public:
90  [[nodiscard]] virtual std::unique_ptr<IFDv2Condition> Build() = 0;
91 
95  [[nodiscard]] virtual IFDv2Condition::Type GetType() const = 0;
96 
97  virtual ~IFDv2ConditionFactory() = default;
100  IFDv2ConditionFactory& operator=(IFDv2ConditionFactory const&) = delete;
101  IFDv2ConditionFactory& operator=(IFDv2ConditionFactory&&) = delete;
102 
103  protected:
104  IFDv2ConditionFactory() = default;
105 };
106 
107 } // namespace launchdarkly::server_side::data_interfaces
virtual void Inform(FDv2SourceResult const &result)=0