diff options
author | Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de> | 2015-02-10 22:25:17 +0100 |
---|---|---|
committer | Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de> | 2015-02-10 22:25:17 +0100 |
commit | 948c21d5907c78adf00b382d4dc7010b1db5346b (patch) | |
tree | 8714ae7008c00ef66f7d89503e1e6c55aa1c968e /httpd/dispatcher.cpp | |
parent | 02268e8249893d99ebf903425788e580d12a4cda (diff) | |
download | vdr-plugin-live-948c21d5907c78adf00b382d4dc7010b1db5346b.tar.gz vdr-plugin-live-948c21d5907c78adf00b382d4dc7010b1db5346b.tar.bz2 |
Remove included old 'tntnet' sources.
The LIVE plugin must now be built agains a correctly installed
libtntnet and libcxxtools and their development headers.
Diffstat (limited to 'httpd/dispatcher.cpp')
-rw-r--r-- | httpd/dispatcher.cpp | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/httpd/dispatcher.cpp b/httpd/dispatcher.cpp deleted file mode 100644 index 8620e76..0000000 --- a/httpd/dispatcher.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* dispatcher.cpp - * Copyright (C) 2003-2005 Tommi Maekitalo - * - * This program 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 Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * is provided AS IS, WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, and - * NON-INFRINGEMENT. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#include "tnt/dispatcher.h" -#include <tnt/httperror.h> -#include <functional> -#include <iterator> -#include <algorithm> -#include <cxxtools/log.h> - -log_define("tntnet.dispatcher") - -namespace tnt -{ - -void Dispatcher::addUrlMapEntry(const std::string& url, const CompidentType& ci) -{ - cxxtools::WrLock lock(rwlock); - - urlmap.push_back(urlmap_type::value_type(regex(url), ci)); -} - -Compident Dispatcher::mapComp(const std::string& compUrl) const -{ - urlmap_type::const_iterator pos = urlmap.begin(); - return mapCompNext(compUrl, pos); -} - -namespace { - class regmatch_formatter : public std::unary_function<const std::string&, std::string> - { - public: - regex_smatch what; - std::string operator() (const std::string& s) const - { return what.format(s); } - }; -} - -Dispatcher::urlMapCacheType::size_type Dispatcher::maxUrlMapCache = 8192; - -Dispatcher::CompidentType Dispatcher::mapCompNext(const std::string& compUrl, - Dispatcher::urlmap_type::const_iterator& pos) const -{ - // check cache - urlMapCacheType::key_type cacheKey = urlMapCacheType::key_type(compUrl, pos); - urlMapCacheType::const_iterator um = urlMapCache.find(cacheKey); - if (um != urlMapCache.end()) - return um->second; - - // no cache hit - regmatch_formatter formatter; - - for (; pos != urlmap.end(); ++pos) - { - if (pos->first.match(compUrl, formatter.what)) - { - const CompidentType& src = pos->second; - - CompidentType ci; - ci.libname = formatter(src.libname); - ci.compname = formatter(src.compname); - if (src.hasPathInfo()) - ci.setPathInfo(formatter(src.getPathInfo())); - std::transform(src.getArgs().begin(), src.getArgs().end(), - std::back_inserter(ci.getArgsRef()), formatter); - - // clear cache after maxUrlMapCache distict requests - if (urlMapCache.size() >= maxUrlMapCache) - { - log_warn("clear url-map-cache"); - urlMapCache.clear(); - } - - urlMapCache.insert(urlMapCacheType::value_type(cacheKey, ci)); - - return ci; - } - } - - throw NotFoundException(compUrl); -} - -Dispatcher::CompidentType Dispatcher::PosType::getNext() -{ - if (first) - first = false; - else - ++pos; - - return dis.mapCompNext(url, pos); -} - -} |