Year 2007.
[metaproxy-moved-to-github.git] / src / router_chain.hpp
index a965dd0..357dcc5 100644 (file)
@@ -1,66 +1,35 @@
-/* $Id: router_chain.hpp,v 1.1 2005-10-26 10:21:03 marc Exp $
-   Copyright (c) 2005, Index Data.
+/* $Id: router_chain.hpp,v 1.8 2007-01-25 14:05:54 adam Exp $
+   Copyright (c) 2005-2007, Index Data.
 
-%LICENSE%
+   See the LICENSE file for details
  */
 
 #ifndef ROUTER_CHAIN_HPP
 #define ROUTER_CHAIN_HPP
 
-#include <stdexcept>
-#include <list>
 
 #include "router.hpp"
 
+#include <boost/scoped_ptr.hpp>
+#include <stdexcept>
 
-namespace yp2 {
-    namespace filter {
-        class Base;
-    }
-    class Package;
-    
-    
+namespace metaproxy_1 {
     class RouterChain : public Router {
+        class Rep;
+        class Pos;
     public:
-        RouterChain(){};
-        virtual ~RouterChain(){};
-        virtual const filter::Base *move(const filter::Base *filter,
-                                   const Package *package) const {
-            std::list<const filter::Base *>::const_iterator it;
-            it = m_filter_list.begin();
-            if (filter)
-                {
-                    for (; it != m_filter_list.end(); it++)
-                        if (*it == filter)
-                            {
-                                it++;
-                                break;
-                            }
-                }
-            if (it == m_filter_list.end())
-                {
-                    //throw RouterException("no routing rules known");
-                    return 0;
-                }
-            return *it;
-        };
-        virtual void configure(){};
-        RouterChain & rule(const filter::Base &filter){
-            m_filter_list.push_back(&filter);
-            return *this;
-        }
-    protected:
-        std::list<const filter::Base *> m_filter_list;
+        RouterChain();
+        virtual ~RouterChain();
+        virtual RoutePos *createpos() const;
+        RouterChain & append(const filter::Base &filter);
     private:
+        boost::scoped_ptr<Rep> m_p;
         /// disabled because class is singleton
         RouterChain(const RouterChain &);
 
         /// disabled because class is singleton
         RouterChain& operator=(const RouterChain &);
     };
-  
-
-  
 }
 
 #endif