X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Frouter_flexml.cpp;h=6fb36e73b67d74ea8640c4c952c5557d2d2185a9;hb=4bfec20c393570a81471c644fad6268eed3dba29;hp=759ef06e4380c47e8d089c0137264cce226a01c3;hpb=126d4a93355f95766cd1501ed1255b92e6171f33;p=metaproxy-moved-to-github.git diff --git a/src/router_flexml.cpp b/src/router_flexml.cpp index 759ef06..6fb36e7 100644 --- a/src/router_flexml.cpp +++ b/src/router_flexml.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2010 Index Data + Copyright (C) 2005-2011 Index Data Metaproxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -67,9 +67,9 @@ namespace metaproxy_1 { const char *file_include_path); void parse_xml_filters(xmlDocPtr doc, const xmlNode *node, - bool test_only); + bool test_only, const char *file_include_path); void parse_xml_routes(xmlDocPtr doc, const xmlNode *node, - bool test_only); + bool test_only, const char *file_include_path); bool m_xinclude; private: @@ -91,7 +91,8 @@ namespace metaproxy_1 { void mp::RouterFleXML::Rep::parse_xml_filters(xmlDocPtr doc, const xmlNode *node, - bool test_only) + bool test_only, + const char *file_include_path) { unsigned int filter_nr = 0; while(node && mp::xml::check_element_mp(node, "filter")) @@ -126,7 +127,7 @@ void mp::RouterFleXML::Rep::parse_xml_filters(xmlDocPtr doc, } mp::filter::Base* filter_base = m_factory->create(type_value); - filter_base->configure(node, test_only); + filter_base->configure(node, test_only, file_include_path); if (m_id_filter_map.find(id_value) != m_id_filter_map.end()) throw mp::XMLError("Filter " + id_value + " already defined"); @@ -140,7 +141,8 @@ void mp::RouterFleXML::Rep::parse_xml_filters(xmlDocPtr doc, void mp::RouterFleXML::Rep::parse_xml_routes(xmlDocPtr doc, const xmlNode *node, - bool test_only) + bool test_only, + const char *file_include_path) { mp::xml::check_element_mp(node, "route"); @@ -218,7 +220,7 @@ void mp::RouterFleXML::Rep::parse_xml_routes(xmlDocPtr doc, } mp::filter::Base* filter_base = m_factory->create(type_value); - filter_base->configure(node3, test_only); + filter_base->configure(node3, test_only, file_include_path); route.m_list.push_back( boost::shared_ptr(filter_base)); @@ -288,7 +290,7 @@ void mp::RouterFleXML::Rep::parse_xml_config_dom(xmlDocPtr doc, { parse_xml_filters(doc, mp::xml::jump_to_children(node, XML_ELEMENT_NODE), - test_only); + test_only, file_include_path); node = mp::xml::jump_to_next(node, XML_ELEMENT_NODE); } @@ -296,7 +298,7 @@ void mp::RouterFleXML::Rep::parse_xml_config_dom(xmlDocPtr doc, mp::xml::check_element_mp(node, "routes"); parse_xml_routes(doc, mp::xml::jump_to_children(node, XML_ELEMENT_NODE), - test_only); + test_only, file_include_path); node = mp::xml::jump_to_next(node, XML_ELEMENT_NODE); if (node) @@ -395,6 +397,23 @@ mp::RouterFleXML::Pos::~Pos() } +void mp::RouterFleXML::start() +{ + std::map::iterator route_it; + + route_it = m_p->m_routes.begin(); + while (route_it != m_p->m_routes.end()) + { + RouterFleXML::Route route = route_it->second; + + std::list >::iterator it; + + for (it = route.m_list.begin(); it != route.m_list.end(); it++) + (*it)->start(); + route_it++; + } +} + /* * Local variables: * c-basic-offset: 4