--- parser3/src/main/pa_stylesheet_manager.C 2001/11/08 14:47:32 1.6 +++ parser3/src/main/pa_stylesheet_manager.C 2003/01/21 15:51:15 1.16 @@ -1,17 +1,16 @@ /** @file Parser: sql driver manager implementation. - Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) - Author: Alexander Petrosyan (http://paf.design.ru) - - $Id: pa_stylesheet_manager.C,v 1.6 2001/11/08 14:47:32 paf Exp $ + Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) + Author: Alexandr Petrosian (http://paf.design.ru) */ #include "pa_config_includes.h" #ifdef XML +static const char* IDENT_STYLESHEET_MANAGER_C="$Date: 2003/01/21 15:51:15 $"; + #include "pa_stylesheet_manager.h" #include "pa_stylesheet_connection.h" -#include "ltdl.h" #include "pa_exception.h" #include "pa_common.h" #include "pa_threads.h" @@ -51,15 +50,15 @@ Stylesheet_manager::Stylesheet_manager(P } Stylesheet_manager::~Stylesheet_manager() { connection_cache.for_each(expire_connections, - reinterpret_cast((time_t)0/*=in past=expire all*/)); + reinterpret_cast(time(0)+1/*=in future=expire all*/)); } -Stylesheet_connection& Stylesheet_manager::get_connection(const String& request_file_spec) { +Stylesheet_connection_ptr Stylesheet_manager::get_connection(const String& request_file_spec) { Pool& pool=request_file_spec.pool(); // request pool // first trying to get cached stylesheet - Stylesheet_connection *result=get_connection_from_cache(request_file_spec); - if(!result) { + Stylesheet_connection *connection=get_connection_from_cache(request_file_spec); + if(!connection) { // then just construct it // make global_file_spec C-string on global pool @@ -69,12 +68,12 @@ Stylesheet_connection& Stylesheet_manage // make global_file_spec string on global pool String& global_file_spec=*new(this->pool()) String(this->pool(), global_file_spec_cstr); - result=new(this->pool()) Stylesheet_connection(this->pool(), global_file_spec); + connection=new(this->pool()) Stylesheet_connection(this->pool(), global_file_spec); } // associate with services[request] (deassociates at close) - result->set_services(&pool); - // return it - return *result; + connection->set_services(&pool); + // return autoclosing object for it + return Stylesheet_connection_ptr(connection); } void Stylesheet_manager::close_connection(const String& file_spec, @@ -150,7 +149,6 @@ static void add_connections_to_status_ca for(int countdown=stack.top_index(); countdown-->=0; ) add_connection_to_status_cache_table(iter.next(), info); } - Value& Stylesheet_manager::get_status(Pool& pool, const String *source) { VHash& result=*new(pool) VHash(pool);