C++ Client-Side SDK
LaunchDarkly SDK
defaults.hpp
1 #pragma once
2 
3 #include <launchdarkly/config/shared/built/data_source_config.hpp>
4 #include <launchdarkly/config/shared/built/events.hpp>
5 #include <launchdarkly/config/shared/built/http_properties.hpp>
6 #include <launchdarkly/config/shared/built/persistence.hpp>
7 #include <launchdarkly/config/shared/built/service_endpoints.hpp>
8 #include <launchdarkly/config/shared/sdks.hpp>
9 #include <launchdarkly/logging/log_level.hpp>
10 
11 namespace launchdarkly::config::shared {
12 
18 template <typename SDK>
19 struct Defaults {
24  static bool Offline() { return false; }
25 
26  static std::string LogTag() { return "LaunchDarkly"; }
27  static launchdarkly::LogLevel LogLevel() { return LogLevel::kInfo; }
28 };
29 
30 template <>
32  static bool Offline() { return Defaults<AnySDK>::Offline(); }
33 
34  static auto ServiceEndpoints() -> shared::built::ServiceEndpoints {
35  return {"https://clientsdk.launchdarkly.com",
36  "https://clientstream.launchdarkly.com",
37  "https://mobile.launchdarkly.com"};
38  }
39 
40  static auto Events() -> shared::built::Events {
41  return {true,
42  100,
43  std::chrono::seconds(30),
44  "/mobile",
45  false,
46  AttributeReference::SetType(),
47  std::chrono::seconds(1),
48  5,
49  std::nullopt};
50  }
51 
52  static auto TLS() -> shared::built::TlsOptions { return {}; }
53 
54  static auto HttpProperties() -> shared::built::HttpProperties {
55  return {std::chrono::seconds{10},
56  std::chrono::seconds{10},
57  std::chrono::seconds{10},
58  std::chrono::seconds{10},
59  std::map<std::string, std::string>(),
60  TLS()};
61  }
62 
63  static auto StreamingConfig() -> shared::built::StreamingConfig<ClientSDK> {
64  return {std::chrono::seconds{1}, "/meval"};
65  }
66 
67  static auto DataSourceConfig()
69  return {Defaults<ClientSDK>::StreamingConfig(), false, false};
70  }
71 
72  static auto PollingConfig() -> shared::built::PollingConfig<ClientSDK> {
73  return {std::chrono::minutes(5), "/msdk/evalx/contexts",
74  "/msdk/evalx/context", std::chrono::minutes(5)};
75  }
76 
77  static std::size_t MaxCachedContexts() { return 5; }
78 };
79 
80 template <>
82  static auto ServiceEndpoints() -> built::ServiceEndpoints {
83  return {"https://sdk.launchdarkly.com",
84  "https://stream.launchdarkly.com",
85  "https://events.launchdarkly.com"};
86  }
87 
88  static auto Events() -> built::Events {
89  return {true,
90  10000,
91  std::chrono::seconds(5),
92  "/bulk",
93  false,
94  AttributeReference::SetType(),
95  std::chrono::seconds(1),
96  5,
97  1000};
98  }
99 
100  static auto TLS() -> shared::built::TlsOptions { return {}; }
101 
102  static auto HttpProperties() -> built::HttpProperties {
103  return {std::chrono::seconds{10},
104  std::chrono::seconds{10},
105  std::chrono::seconds{10},
106  std::chrono::seconds{10},
107  std::map<std::string, std::string>(),
108  TLS()};
109  }
110 
111  static auto StreamingConfig() -> built::StreamingConfig<ServerSDK> {
112  return {std::chrono::seconds{1}, "/all"};
113  }
114 
115  static auto PollingConfig() -> built::PollingConfig<ServerSDK> {
116  return {std::chrono::seconds{30}, "/sdk/latest-all",
117  std::chrono::seconds{30}};
118  }
119 };
120 
121 } // namespace launchdarkly::config::shared
Definition: http_properties.hpp:26
Definition: service_endpoints.hpp:11
Definition: http_properties.hpp:11
Definition: defaults.hpp:19
static bool Offline()
Definition: defaults.hpp:24