|
|
| version 1.8.4.1, 2001/09/12 15:34:58 | version 1.21, 2002/01/16 10:28:34 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: sql driver manager decl. | Parser: sql driver manager decl. |
| global sql driver manager, must be thread-safe | |
| Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru) | |
| Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf) | |
| $Id$ | $Id$ |
| global sql driver manager, must be thread-safe | |
| */ | */ |
| #ifndef PA_SQL_DRIVER_MANAGER_H | #ifndef PA_SQL_DRIVER_MANAGER_H |
| #define PA_SQL_DRIVER_MANAGER_H | #define PA_SQL_DRIVER_MANAGER_H |
| #include "pa_config_includes.h" | |
| #include "pa_pool.h" | #include "pa_pool.h" |
| #include "pa_sql_driver.h" | #include "pa_sql_driver.h" |
| #include "pa_hash.h" | #include "pa_hash.h" |
| #include "pa_stack.h" | |
| #include "pa_table.h" | #include "pa_table.h" |
| #include "pa_string.h" | #include "pa_string.h" |
| #include "pa_cache_managers.h" | |
| // defines | // defines |
| Line 31 | Line 26 |
| // forwards | // forwards |
| class SQL_Connection; | class SQL_Connection; |
| class SQL_Connection_ptr; | |
| /// sql driver manager | /// sql driver manager |
| class SQL_Driver_manager : public Pooled { | class SQL_Driver_manager : public Cache_manager { |
| friend SQL_Connection; | friend class SQL_Connection; |
| public: | public: |
| SQL_Driver_manager(Pool& pool) : Pooled(pool), | SQL_Driver_manager(Pool& apool); |
| driver_cache(pool), | virtual ~SQL_Driver_manager(); |
| connection_cache(pool), | |
| prev_expiration_pass_time(0) { | |
| } | |
| /** | /** |
| connect to specified url, | connect to specified url, |
| using driver dynamic library found in table, if not loaded yet | using driver dynamic library found in table, if not loaded yet |
| checks driver version | checks driver version |
| */ | */ |
| SQL_Connection& get_connection(const String& url, const String& request_origin, | SQL_Connection_ptr get_connection(const String& url, const String& request_origin, |
| Table *protocol2driver_and_client); | Table *protocol2driver_and_client); |
| private: // driver cache | private: // driver cache |
| Line 60 private: // connection cache | Line 53 private: // connection cache |
| SQL_Connection *get_connection_from_cache(const String& url); | SQL_Connection *get_connection_from_cache(const String& url); |
| void put_connection_to_cache(const String& url, SQL_Connection& connection); | void put_connection_to_cache(const String& url, SQL_Connection& connection); |
| void maybe_expire_connection_cache(); | |
| private: | private: |
| time_t prev_expiration_pass_time; | time_t prev_expiration_pass_time; |
| Line 73 private: | Line 65 private: |
| Hash driver_cache; | Hash driver_cache; |
| Hash connection_cache; | Hash connection_cache; |
| public: // Cache_manager | |
| virtual Value& get_status(Pool& pool, const String *source); | |
| virtual void maybe_expire_cache(); | |
| }; | }; |
| /// global | /// global |