1 /* $Id: router.hpp,v 1.3 2005-10-15 14:09:09 adam Exp $
2 Copyright (c) 2005, Index Data.
19 class RouterException : public std::runtime_error {
21 RouterException(const std::string message)
22 : std::runtime_error("RouterException: " + message){};
31 /// determines next Filter to use from current Filter and Package
32 virtual const filter::Base *move(const filter::Base *filter,
33 const Package *package) const {
37 /// re-read configuration of routing tables
38 virtual void configure(){};
40 /// add routing rule expressed as Filter to Router
41 virtual Router & rule(const filter::Base &filter){
45 /// disabled because class is singleton
46 Router(const Router &);
48 /// disabled because class is singleton
49 Router& operator=(const Router &);
53 class RouterChain : public Router {
56 virtual ~RouterChain(){};
57 virtual const filter::Base *move(const filter::Base *filter,
58 const Package *package) const {
59 std::list<const filter::Base *>::const_iterator it;
60 it = m_filter_list.begin();
63 for (; it != m_filter_list.end(); it++)
70 if (it == m_filter_list.end())
72 //throw RouterException("no routing rules known");
77 virtual void configure(){};
78 RouterChain & rule(const filter::Base &filter){
79 m_filter_list.push_back(&filter);
83 std::list<const filter::Base *> m_filter_list;
85 /// disabled because class is singleton
86 RouterChain(const RouterChain &);
88 /// disabled because class is singleton
89 RouterChain& operator=(const RouterChain &);
100 * indent-tabs-mode: nil
101 * c-file-style: "stroustrup"
103 * vim: shiftwidth=4 tabstop=8 expandtab