summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules/server/mod-wiring.cpp
diff options
context:
space:
mode:
authorjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-08-22 05:02:11 +0000
committerjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-08-22 05:02:11 +0000
commit3c98b27f754a3ef97a8b0a02ecfd0ac1aa6e1fe5 (patch)
tree085366a1d1bb269197cf1c1844176ed784eff4be /sca-cpp/trunk/modules/server/mod-wiring.cpp
parentb70da6b982209e43079708df1da43ae4054f3d80 (diff)
Improve performance by reusing HTTP proxy connections across invocations and using local function proxies instead of HTTP proxies for local wires.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@987845 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-cpp/trunk/modules/server/mod-wiring.cpp')
-rw-r--r--sca-cpp/trunk/modules/server/mod-wiring.cpp17
1 files changed, 6 insertions, 11 deletions
diff --git a/sca-cpp/trunk/modules/server/mod-wiring.cpp b/sca-cpp/trunk/modules/server/mod-wiring.cpp
index 17cfcaae0e..188aa620fb 100644
--- a/sca-cpp/trunk/modules/server/mod-wiring.cpp
+++ b/sca-cpp/trunk/modules/server/mod-wiring.cpp
@@ -53,8 +53,10 @@ const bool useModProxy = true;
*/
class ServerConf {
public:
- ServerConf(server_rec* s) : server(s), contributionPath(""), compositeName(""), virtualHostContributionPath(""), virtualHostCompositeName("") {
+ ServerConf(apr_pool_t* p, server_rec* s) : p(p), server(s), contributionPath(""), compositeName(""), virtualHostContributionPath(""), virtualHostCompositeName("") {
}
+
+ const gc_pool p;
server_rec* server;
string contributionPath;
string compositeName;
@@ -79,13 +81,6 @@ const bool hasVirtualCompositeConf(const ServerConf& sc) {
}
/**
- * Returns true if a URI is absolute.
- */
-const bool isAbsolute(const string& uri) {
- return contains(uri, "://");
-}
-
-/**
* Route a /references/component-name/reference-name request,
* to the target of the component reference.
*/
@@ -107,7 +102,7 @@ int translateReference(const ServerConf& sc, request_rec *r) {
debug(target, "modwiring::translateReference::target");
// Route to an absolute target URI using mod_proxy or an HTTP client redirect
- if (isAbsolute(target)) {
+ if (httpd::isAbsolute(target)) {
if (useModProxy) {
// Build proxy URI using current request's protocol scheme
r->filename = apr_pstrdup(r->pool, c_str(string("proxy:") + httpd::scheme(r) + substr(target, find(target, "://"))));
@@ -270,7 +265,7 @@ const bool confComponents(ServerConf& sc) {
*/
class VirtualHostConf {
public:
- VirtualHostConf(const ServerConf& ssc) : sc(ssc.server) {
+ VirtualHostConf(const gc_pool& p, const ServerConf& ssc) : sc(pool(p), ssc.server) {
sc.virtualHostContributionPath = ssc.virtualHostContributionPath;
sc.virtualHostCompositeName = ssc.virtualHostCompositeName;
}
@@ -316,7 +311,7 @@ int translate(request_rec *r) {
const ServerConf& sc = httpd::serverConf<ServerConf>(r, &mod_tuscany_wiring);
// Process dynamic virtual host configuration
- VirtualHostConf vhc(sc);
+ VirtualHostConf vhc(gc_pool(r->pool), sc);
const bool usevh = hasVirtualCompositeConf(vhc.sc) && httpd::isVirtualHostRequest(sc.server, r);
if (usevh) {
const failable<bool> cr = virtualHostConfig(vhc.sc, r);