--- parser3/src/include/pa_sql_driver_manager.h 2003/01/27 16:19:11 1.26.2.2 +++ parser3/src/include/pa_sql_driver_manager.h 2003/01/30 14:59:43 1.26.2.5 @@ -9,7 +9,7 @@ #ifndef PA_SQL_DRIVER_MANAGER_H #define PA_SQL_DRIVER_MANAGER_H -static const char* IDENT_SQL_DRIVER_MANAGER_H="$Date: 2003/01/27 16:19:11 $"; +static const char* IDENT_SQL_DRIVER_MANAGER_H="$Date: 2003/01/30 14:59:43 $"; #include "pa_pool.h" #include "pa_sql_driver.h" @@ -26,12 +26,18 @@ static const char* IDENT_SQL_DRIVER_MANA // forwards -class SQL_Connection; -DECLARE_OBJECT_PTR (SQL_Connection) +class SQL_Connection; DECLARE_OBJECT_PTR (SQL_Connection); /// sql driver manager class SQL_Driver_manager: public Cache_manager { friend class SQL_Connection; + + Pool driver_cache_pool; + typedef Hash driver_cache_type; + driver_cache_type driver_cache; + typedef Hash > > connection_cache_type; + connection_cache_type connection_cache; + public: SQL_Driver_manager(); @@ -42,30 +48,27 @@ public: using driver dynamic library found in table, if not loaded yet checks driver version */ - SQL_ConnectionPtr get_connection(Pool& pool, ConstStringPtr aurl, ConstStringPtr aorigin, + SQL_ConnectionPtr get_connection(Pool& pool, ConstStringPtr arequest_url, ConstStringPtr aorigin, Table *protocol2driver_and_client); private: // driver cache - SQL_Driver *get_driver_from_cache(ConstStringPtr protocol); - void put_driver_to_cache(ConstStringPtr protocol, SQL_Driver& driver); + SQL_Driver *get_driver_from_cache(driver_cache_type::key_type protocol); + void put_driver_to_cache(driver_cache_type::key_type protocol, driver_cache_type::value_type driver); private: // connection cache - SQL_Connection *get_connection_from_cache(ConstStringPtr url); - void put_connection_to_cache(ConstStringPtr url, SQL_Connection& connection); + SQL_ConnectionPtr get_connection_from_cache(connection_cache_type::key_type url); + void put_connection_to_cache(connection_cache_type::key_type url, + SQL_ConnectionPtr connection); private: time_t prev_expiration_pass_time; private: // for SQL_Connection /// caches connection - void close_connection(ConstStringPtr url, SQL_Connection& connection); - -private: - - Hash driver_cache; - Hash *> connection_cache; + void close_connection(connection_cache_type::key_type url, + SQL_ConnectionPtr connection); public: // Cache_manager