prefix_ void senf::log::Target::unroute(int index)
{
+ if (rib_.empty())
+ return;
RIB::iterator i;
if (index < 0) {
if (RIB::size_type(-index) >= rib_.size())
updateRoutingCache(entry.stream_, entry.area_);
}
+prefix_ void senf::log::Target::clear()
+{
+ RIB old;
+ rib_.swap(old);
+ RIB::const_iterator i (old.begin());
+ RIB::const_iterator const i_end (old.end());
+ for (; i != i_end; ++i)
+ if (i->action_ == ACCEPT)
+ updateRoutingCache(i->stream_, i->area_)
+}
+
////////////////////////////////////////
// private members
return rib_.end();
}
+prefix_ RoutingEntry const & senf::log::Target::operator[](size_type i)
+ size_type size() const
+{
+ return rib_[i];
+}
+
+prefix_ RoutingEntry const & senf::log::Target::operator[](size_type i)
+ size_type size() const
+{
+ return rib_.size();
+}
+
+prefix_ bool senf::log::Target::empty()
+ const
+{
+ return rib_.empty();
+}
+
///////////////////////////////////////////////////////////////////////////
// senf::log::Target::RoutingEntry
public:
typedef RIB::const_iterator iterator; ///< Routing table iterator
+ typedef RIB::size_type size_type;
///////////////////////////////////////////////////////////////////////////
///\name Structors and default members
iterator begin() const; ///< Iterator to beginning of routing table
iterator end() const; ///< Iterator past the end of routing table
+ RoutingEntry const & operator[](size_type i) ///< Access routing entry
+
+ size_type size() const; ///< Number of routing table entries
+ bool empty() const; ///< \c true, if routing table empty, \c false otherwise
+
+ void clear(); ///< Clear routing table
+
private:
void route(detail::StreamBase const * stream, detail::AreaBase const * area,
unsigned level, action_t action, int index);