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