10#include "ers/FilterStream.h"
11#include "ers/InvalidReferenceIssue.h"
12#include "ers/NotImplemented.h"
13#include "ers/StreamFactory.h"
25 ers::Stream* create_stream(
const std::string& protocol,
const std::string& uri ) {
46 const ::std::string& exclude_str,
47 const std::string& target_str ) {
51 return new FilterStream( target_stream, include_list, exclude_list );
62 std::string::size_type include_start = params.find(
INCLUDE_TAG );
63 std::string::size_type exclude_start = params.find(
EXCLUDE_TAG );
64 std::string::size_type target_start = params.find(
TARGET_TAG );
65 std::string include_str = params.substr( include_start + 1, exclude_start - 1 );
66 std::string exclude_str =
67 params.substr( exclude_start + 1, target_start - exclude_start - 1 );
68 std::string target_str = params.substr( target_start + 1 );
71 return factory( include_str, exclude_str, target_str );
95 const std::vector<std::string>& include_list,
96 const std::vector<std::string>& exclude_list )
118 if ( !qualifiers.empty() )
120 std::vector<std::string>::const_iterator e_pos;
123 std::string::size_type conflict = qualifiers.find( *e_pos );
124 if ( conflict != std::string::npos ) {
return false; }
129 std::vector<std::string>::const_iterator i_pos;
132 std::string::size_type match = qualifiers.find( *i_pos );
133 if ( match != std::string::npos ) {
return true; }
167 std::vector<std::string>::const_iterator i_pos;
175 std::vector<std::string>::const_iterator e_pos;
static std::vector< std::string > tokenize(const std::string &text, const std::string &separators)
static FilterStream * factory(const std::string &include_str, const ::std::string &exclude_str, const std::string &target_str)
factory method for partially parse information
std::vector< std::string > m_include
include list
static const char *const TARGET_TAG
tag used to mark the target stream
virtual void print_to(std::ostream &stream) const
static const char *const FILTER_STREAM_TAG
tag used to identity this stream
static const char *const EXCLUDE_TAG
tag used to mark the start of the exclude list
static const char *const SEPARATORS
separators between include and exclude qualifiers
Stream * m_target_stream_ptr
chained target stream
virtual void send(const Issue *issue_ptr)
send method
std::vector< std::string > m_exclude
exclude list
~FilterStream()
destructor
static const char *const INCLUDE_TAG
tag used to mark the start of the include list
virtual bool is_accept(const Issue *issue_ptr)
filter method
const std::string & get_value(const std::string &key, const std::string &def) const
Reads the property list.
static const char *const QUALIFIER_LIST_KEY
key used to store the qualifier list
Stream * create_stream(severity_t s)
create a stream for severity_t
bool register_factory(const std::string &name, create_stream_callback callback)
register a factory method
static StreamFactory * instance()
return the singleton
efhlt::Interface * factory(void)