LogCallback = clients::LogCallback;
27 usingErrorCallback = clients::ErrorCallback;
28 usingStatsCallback = clients::StatsCallback;
29 usingOauthbearerTokenRefreshCallback = clients::OauthbearerTokenRefreshCallback;
36 virtual~Object() =
default;
37 virtualstd::string toString()
const= 0;
41 staticstd::string getString(
constT&
) {
return typeid(T).name(); }
43 staticstd::string getString(
conststd::string& value) {
returnvalue; }
45 constValueType& validate(
conststd::string& key)
const 47 static conststd::vector<std::string> nonStringValueKeys = {
48 "log_cb",
"error_cb",
"stats_cb",
"oauthbearer_token_refresh_cb",
"interceptors" 51 if((expectedKey.empty() && std::any_of(nonStringValueKeys.cbegin(), nonStringValueKeys.cend(), [key](
const auto& k) { return k == key; }))
52|| (!expectedKey.empty() && key != expectedKey))
54 throwstd::runtime_error(
"Invalid key/value for configuration: "+ key);
61 structObjWrap:
publicObject
63 explicitObjWrap(T v): value(std::move(v)) {}
64std::string toString()
const override{
returngetString<T>(value); }
69T& getValue()
const{
return(
dynamic_cast<ObjWrap<T>&
>(*
object)).value; }
71ValueType() =
default;
73ValueType(
conststd::string& value)
74{
object= std::make_shared<ObjWrap<std::string>>(value); }
76ValueType(
constLogCallback& cb)
77: expectedKey(
"log_cb")
78{
object= std::make_shared<ObjWrap<LogCallback>>(cb); }
80ValueType(
constErrorCallback& cb)
81: expectedKey(
"error_cb")
82{
object= std::make_shared<ObjWrap<ErrorCallback>>(cb); }
84ValueType(
constStatsCallback& cb)
85: expectedKey(
"stats_cb")
86{
object= std::make_shared<ObjWrap<StatsCallback>>(cb); }
88ValueType(
constOauthbearerTokenRefreshCallback& cb)
89: expectedKey(
"oauthbearer_token_refresh_cb")
90{
object= std::make_shared<ObjWrap<OauthbearerTokenRefreshCallback>>(cb); }
93: expectedKey(
"interceptors")
94{
object= std::make_shared<ObjWrap<Interceptors>>(interceptors); }
96 booloperator==(
constValueType& rhs)
const{
returntoString() == rhs.toString(); }
98std::string toString()
const{
return object->toString(); }
101std::string expectedKey;
102std::shared_ptr<Object> object;
107 usingPropertiesMap = std::map<std::string, ValueType>;
111 Properties(PropertiesMap kvMap): _kvMap(std::move(kvMap))
113 for(
const auto& kv: _kvMap)
115kv.second.validate(kv.first);
120 booloperator==(
const Properties& rhs)
const{
return map() == rhs.
map(); }
129_kvMap[key] = ValueType(value).validate(key);
146 autosearch = _kvMap.find(key);
147 returnsearch != _kvMap.end();
155T&
get(
conststd::string& key)
const 157 autosearch = _kvMap.find(key);
158 if(search == _kvMap.end())
160KAFKA_THROW_ERROR(
Error(RD_KAFKA_RESP_ERR__INVALID_ARG,
"Failed to get \""+ key +
"\" from Properties!"));
163 constValueType& v = search->second;
164 returnv.getValue<T>();
172 if(!
contains(key))
returnOptional<std::string>{};
176 returnget<std::string>(key);
178 catch(
conststd::bad_cast&)
180 returnOptional<std::string>{};
192std::string toString()
const 196std::for_each(_kvMap.cbegin(), _kvMap.cend(),
197[&ret](
const auto& kv) {
198const std::string& key = kv.first;
199const std::string value = kv.second.toString();
201static const std::regex reSensitiveKey(R
"(.+\.password|.+\.username|.+secret|.+key|.+pem)"); 202 const bool isSensitive = std::regex_match(key, reSensitiveKey); 204 ret.append(ret.empty() ? "":
"|").append(key).append(
"=").append(isSensitive ?
"*": value);
212 constPropertiesMap&
map()
const{
return_kvMap; }
215PropertiesMap _kvMap;
Unified error type.
Definition: Error.h:32
The properties for Kafka clients.
Definition: Properties.h:24
T & get(const std::string &key) const
Get a property reference.
Definition: Properties.h:155
void eraseProperty(const std::string &key)
Remove a property.
Definition: Properties.h:187
void remove(const std::string &key)
Remove the property (if one exists).
Definition: Properties.h:136
Properties & put(const std::string &key, const T &value)
Set a property.
Definition: Properties.h:127
bool contains(const std::string &key) const
Check whether the map contains a property.
Definition: Properties.h:144
const PropertiesMap & map() const
Get all properties with a map.
Definition: Properties.h:212
Optional< std::string > getProperty(const std::string &key) const
Get a property.
Definition: Properties.h:170
Interceptors for Kafka clients.
Definition: Interceptors.h:14
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4