64 virtual bool Matches(std::string_view strInput)
const noexcept = 0;
111 inline bool Matches(std::string_view strInput)
const noexcept override
155 inline bool Matches(std::string_view strInput)
const noexcept override
186 tFilterBase(strFilterString), oRegex(strRegex.begin(), strRegex.end())
192 inline bool Matches(std::string_view strInput)
const noexcept final override
194 return std::regex_match(strInput.begin(), strInput.end(), oRegex);
256 using tFilter = std::variant<tPlain, tPrefix, tWildcard, tRegex>;
273 return std::visit([](
auto&& oFilter)
noexcept -> std::string_view {
return oFilter.GetFilterString(); },
280 return std::visit([](
auto&& oFilter)
noexcept ->
bool {
return oFilter.GetTrim(); },
xFilter);
284 inline bool Matches(std::string_view strInput)
const noexcept
286 return std::visit([&](
auto&& oFilter)
noexcept ->
bool {
return oFilter.Matches(strInput); },
xFilter);
292 return std::visit([&](
auto&& oFilter)
noexcept ->
bool {
return oFilter.PrefixMatches(strPrefix); },
301 inline bool HasAttribute(
const std::string& strAttributeName)
const noexcept
317 if (std::holds_alternative<T>(it->second))
319 return std::get<T>(it->second);
323 THROW_ERROR_DESC(ERR_INVALID_TYPE,
"There is no attribute with the requested type.");
328 THROW_ERROR_DESC(ERR_NOT_FOUND,
"Attribute '%s' not found.", strAttributeName.c_str());
337 class ISubstreamNameFilterParser
350 virtual std::vector<tStreamFilter> ReadFromFile(std::string_view strFileName,
351 const tContext& oContext)
const = 0;
352 virtual void WriteToFile(std::string_view strFileName,
353 const std::vector<tStreamFilter>& oFilters,
354 const tContext& oContext)
const = 0;
422 void AddFilterFile(std::string_view strFileName, std::optional<tFilterMode> oTextModeOverride);
431 void SaveFiltersToFile(std::string_view strFileName, std::optional<tFilterMode> oTextModeOverride);
453 bool Matches(std::string_view strName) const noexcept;
471 const std::function<
void(std::string_view,
476 bool bInverseMatch = false) const;
486 const std::function<
void(std::string_view,
491 bool bInverseMatch = false) const;
494 static const ISubstreamNameFilterParser& GetFileParserFor(std::string_view strExtension);
#define THROW_ERROR_DESC(_code,...)
throws a tResult exception
Definition result.h:85
A_UTILS_NS::cResult tResult
For backwards compatibility and to bring latest version into scope.
Definition result.h:736
void AddFilterFile(std::string_view strFileName, std::optional< tFilterMode > oTextModeOverride)
std::variant< tPlain, tPrefix, tWildcard, tRegex > tFilter
Variant holding the filter specialization.
Definition substream_name_filter.h:256
void Reset(std::vector< tStreamFilter > oStreamFilters={}) noexcept
static std::string EscapeRegularExpression(std::string_view strString)
std::vector< tStreamFilter > GetStreamFilters() const &noexcept
void Select(std::string_view strPrefix, const adtf::streaming::ant::IStreamType &oType, const std::function< void(std::string_view, uint32_t, const tStreamFilter &, const adtf::ucom::ant::iobject_ptr< const adtf::streaming::ant::IStreamType > &)> &fnSelectedCallback, bool bInverseMatch=false) const
cSubstreamNameFilter() noexcept
tResult RemoveFilter(const tFilter &oFilter) noexcept
static std::string WildcardToRegex(std::string_view strString)
tFilterMode
Definition substream_name_filter.h:31
std::map< std::string, std::variant< bool, double, std::string > > tStreamAttributes
Storage type for additional stream attributes.
Definition substream_name_filter.h:258
bool Matches(std::string_view strName) const noexcept
void SaveFiltersToFile(std::string_view strFileName, std::optional< tFilterMode > oTextModeOverride)
void AddFilter(const tFilter &oFilter, const tStreamAttributes &oAttributes={})
bool PrefixMatches(std::string_view strName) const
Namespace for all functionality of the ADTF Filter SDK provided since v3.0.
Definition filter.h:26
Namespace for all internally used functionality implemented..
Definition configurable_runner.h:20
Namespace for the ADTF Filter SDK.
Definition configurable_runner.h:18
Namespace for the ADTF Streaming SDK.
Definition bindingproxyinport.h:14
Namespace for the ADTF uCOM SDK.
Definition adtf_system.h:324
Namespace for all functionality provided by ADTF and its SDKs.
Definition adtf_client_connector.h:14
Definition substream_name_filter.h:344
std::optional< tFilterMode > eFilterMode
Filter mode used for specifying when reading from text files.
Definition substream_name_filter.h:346
virtual bool GetTrim() const noexcept
Definition substream_name_filter.h:80
virtual bool Matches(std::string_view strInput) const noexcept=0
std::string strFilter
The actual filter string.
Definition substream_name_filter.h:56
virtual bool PrefixMatches(std::string_view strPrefix) const noexcept
Definition substream_name_filter.h:90
tFilterBase(std::string_view strFilterString)
Definition substream_name_filter.h:51
std::string_view GetFilterString() const noexcept
Definition substream_name_filter.h:71
tPlain(std::string_view strFilterString)
Definition substream_name_filter.h:106
bool Matches(std::string_view strInput) const noexcept override
Definition substream_name_filter.h:111
bool operator==(const tPlain &oOther) const noexcept
Definition substream_name_filter.h:121
bool GetTrim() const noexcept override
Definition substream_name_filter.h:149
bool Matches(std::string_view strInput) const noexcept override
Definition substream_name_filter.h:155
tPrefix(std::string_view strFilterString, bool bTrim)
Definition substream_name_filter.h:142
bool operator==(const tPrefix &oOther) const noexcept
Definition substream_name_filter.h:165
bool bTrim
Whether to trim the output.
Definition substream_name_filter.h:134
bool PrefixMatches(std::string_view) const noexcept final override
Definition substream_name_filter.h:198
bool Matches(std::string_view strInput) const noexcept final override
Definition substream_name_filter.h:192
tRegexFilterBase(std::string_view strFilterString, std::string_view strRegex)
Definition substream_name_filter.h:185
tRegex(std::string_view strFilterString)
Definition substream_name_filter.h:214
bool operator==(const tRegex &oOther) const noexcept
Definition substream_name_filter.h:223
Definition substream_name_filter.h:264
bool PrefixMatches(std::string_view strPrefix) const noexcept
Definition substream_name_filter.h:290
bool Matches(std::string_view strInput) const noexcept
Definition substream_name_filter.h:284
tFilter xFilter
The filter specifying which matching rules apply.
Definition substream_name_filter.h:266
tStreamAttributes oAttributes
Additional stream attributes.
Definition substream_name_filter.h:268
bool GetTrim() const noexcept
Definition substream_name_filter.h:278
std::string_view GetFilterString() const noexcept
Definition substream_name_filter.h:271
bool HasAttribute(const std::string &strAttributeName) const noexcept
Definition substream_name_filter.h:301
T GetAttributeValue(const std::string &strAttributeName) const
Definition substream_name_filter.h:313
tWildcard(std::string_view strFilterString)
Definition substream_name_filter.h:239
bool operator==(const tWildcard &oOther) const noexcept
Definition substream_name_filter.h:249