Diff for /parser3/src/main/pa_sql_driver_manager.C between versions 1.19 and 1.29

version 1.19, 2001/05/17 18:43:06 version 1.29, 2001/08/28 10:43:33
Line 4 Line 4
         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://design.ru/paf)          Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
   
         $Id$  
 */  */
   static const char *RCSId="$Id$"; 
   
 #include "pa_sql_driver_manager.h"  #include "pa_sql_driver_manager.h"
 #include "ltdl.h"  #include "ltdl.h"
Line 55  private: Line 54  private:
 /// @param request_url protocol://[driver-dependent]  /// @param request_url protocol://[driver-dependent]
 SQL_Connection& SQL_Driver_manager::get_connection(const String& request_url,   SQL_Connection& SQL_Driver_manager::get_connection(const String& request_url, 
                                                                                                    Table *protocol2driver_and_client) {                                                                                                     Table *protocol2driver_and_client) {
 ////__asm int 3;  
         Pool& pool=request_url.pool(); // request pool                                                                                               Pool& pool=request_url.pool(); // request pool                                                                                     
   
         // we have table for locating protocol's library          // we have table for locating protocol's library
Line 111  SQL_Connection& SQL_Driver_manager::get_ Line 109  SQL_Connection& SQL_Driver_manager::get_
                                                 protocol2driver_and_client->origin_string(),                                                  protocol2driver_and_client->origin_string(),
                                                 "driver library column for protocol '%s' is empty",                                                   "driver library column for protocol '%s' is empty", 
                                                         request_protocol_cstr);                                                          request_protocol_cstr);
                                 if(!(dlopen_file_spec=protocol2driver_and_client->item(2)) || dlopen_file_spec->size()==0)                                  dlopen_file_spec=protocol2driver_and_client->item(2);
                                         PTHROW(0, 0,  
                                                 protocol2driver_and_client->origin_string(),  
                                                 "client library column for protocol '%s' is empty",   
                                                         request_protocol_cstr);  
                         } else                          } else
                                 PTHROW(0, 0,                                  PTHROW(0, 0,
                                         &request_url,                                          &request_url,
                                         "undefined protocol '%s'",                                           "undefined protocol '%s'", 
                                                 request_protocol_cstr);                                                  request_protocol_cstr);
   
                           if(lt_dlinit())
                                   PTHROW(0, 0,
                                           library,
                                           "prepare to dynamic loading failed, %s", lt_dlerror());
   
                         const char *filename=library->cstr(String::UL_FILE_NAME);                          const char *filename=library->cstr(String::UL_FILE_NAME);
                         lt_dlhandle handle=lt_dlopen(filename);                          lt_dlhandle handle=lt_dlopen(filename);
                         if (!handle)                          if (!handle)
Line 148  SQL_Connection& SQL_Driver_manager::get_ Line 147  SQL_Connection& SQL_Driver_manager::get_
                                                 driver_api_version, SQL_DRIVER_API_VERSION);                                                  driver_api_version, SQL_DRIVER_API_VERSION);
   
                         // initialise by connecting to sql client dynamic link library                          // initialise by connecting to sql client dynamic link library
                         const char *dlopen_file_spec_cstr=dlopen_file_spec->cstr(String::UL_FILE_NAME);                          bool specified_dlopen_file_spec=dlopen_file_spec && dlopen_file_spec->size();
                           const char *dlopen_file_spec_cstr=
                                   specified_dlopen_file_spec?
                                   dlopen_file_spec->cstr(String::UL_FILE_NAME):0;
                         if(const char *error=driver->initialize(                          if(const char *error=driver->initialize(
                                 dlopen_file_spec_cstr))                                  dlopen_file_spec_cstr))
                                 PTHROW(0, 0,                                  PTHROW(0, 0,
                                         library,                                          library,
                                         "driver failed to initialize client library '%s', %s",                                          "driver failed to initialize client library '%s', %s",
                                                 dlopen_file_spec_cstr, error);                                                  specified_dlopen_file_spec?dlopen_file_spec_cstr:"unspecifed", 
                                                   error);
   
                         // cache it                          // cache it
                         put_driver_to_cache(global_protocol, *driver);                          put_driver_to_cache(global_protocol, *driver);
Line 199  void SQL_Driver_manager::put_driver_to_c Line 202  void SQL_Driver_manager::put_driver_to_c
 }  }
   
 // connection cache  // connection cache
   /// @todo get rid of memory spending Stack [zeros deep inside got accumulated]
 SQL_Connection *SQL_Driver_manager::get_connection_from_cache(const String& url) {   SQL_Connection *SQL_Driver_manager::get_connection_from_cache(const String& url) { 
         SYNCHRONIZED;          SYNCHRONIZED;
   
Line 231  static void expire_connection(Array::Ite Line 234  static void expire_connection(Array::Ite
         SQL_Connection& connection=*static_cast<SQL_Connection *>(value);          SQL_Connection& connection=*static_cast<SQL_Connection *>(value);
         time_t older_dies=reinterpret_cast<time_t>(info);          time_t older_dies=reinterpret_cast<time_t>(info);
   
         if(connection.expired(older_dies))          if(connection.connected() && connection.expired(older_dies))
                 connection.disconnect();                  connection.disconnect();
 }  }
 static void expire_connections(const Hash::Key& key, Hash::Val *value, void *info) {  static void expire_connections(const Hash::Key& key, Hash::Val *value, void *info) {

Removed from v.1.19  
changed lines
  Added in v.1.29


E-mail: