--- parser3/src/include/pa_sql_driver_manager.h 2001/11/05 11:46:25 1.16 +++ parser3/src/include/pa_sql_driver_manager.h 2003/01/27 17:17:06 1.26.2.3 @@ -2,22 +2,22 @@ Parser: sql driver manager decl. global sql driver manager, must be thread-safe - Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) - Author: Alexander Petrosyan (http://paf.design.ru) - - $Id: pa_sql_driver_manager.h,v 1.16 2001/11/05 11:46:25 paf Exp $ + Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) + Author: Alexandr Petrosian (http://paf.design.ru) */ #ifndef PA_SQL_DRIVER_MANAGER_H #define PA_SQL_DRIVER_MANAGER_H -#include "pa_config_includes.h" +static const char* IDENT_SQL_DRIVER_MANAGER_H="$Date: 2003/01/27 17:17:06 $"; + #include "pa_pool.h" #include "pa_sql_driver.h" #include "pa_hash.h" #include "pa_table.h" #include "pa_string.h" -#include "pa_status_provider.h" +#include "pa_cache_managers.h" +#include "pa_stack.h" // defines @@ -27,53 +27,55 @@ // forwards class SQL_Connection; +DECLARE_OBJECT_PTR (SQL_Connection) /// sql driver manager -class SQL_Driver_manager : public Pooled, public Status_provider { +class SQL_Driver_manager: public Cache_manager { friend class SQL_Connection; public: - SQL_Driver_manager(Pool& apool); - ~SQL_Driver_manager(); + SQL_Driver_manager(); + override ~SQL_Driver_manager(); /** connect to specified url, using driver dynamic library found in table, if not loaded yet checks driver version */ - SQL_Connection& get_connection(const String& url, const String& request_origin, + SQL_ConnectionPtr get_connection(Pool& pool, ConstStringPtr aurl, ConstStringPtr aorigin, Table *protocol2driver_and_client); private: // driver cache - SQL_Driver *get_driver_from_cache(const String& protocol); - void put_driver_to_cache(const String& protocol, SQL_Driver& driver); + SQL_Driver *get_driver_from_cache(ConstStringPtr protocol); + void put_driver_to_cache(ConstStringPtr protocol, SQL_Driver& driver); private: // connection cache - SQL_Connection *get_connection_from_cache(const String& url); - void put_connection_to_cache(const String& url, SQL_Connection& connection); - void maybe_expire_connection_cache(); + SQL_ConnectionPtr get_connection_from_cache(ConstStringPtr url); + void put_connection_to_cache(ConstStringPtr url, SQL_Connection& connection); private: time_t prev_expiration_pass_time; private: // for SQL_Connection /// caches connection - void close_connection(const String& url, SQL_Connection& connection); + void close_connection(ConstStringPtr url, SQL_Connection& connection); private: - Hash driver_cache; - Hash connection_cache; + Hash driver_cache; + typedef Hash *> connection_cache_type; + connection_cache_type connection_cache; -public: // Status_provider +public: // Cache_manager - virtual Value& get_status(Pool& pool, const String *source); + override ValuePtr get_status(Pool& pool, ConstStringPtr source); + override void maybe_expire_cache(); }; /// global -extern SQL_Driver_manager *SQL_driver_manager; +extern SQL_Driver_manager SQL_driver_manager; #endif