|
|
| version 1.40, 2001/10/15 11:48:04 | version 1.41, 2001/10/19 12:43:30 |
|---|---|
| Line 38 public: | Line 38 public: |
| /// throw exception | /// throw exception |
| void _throw(const char *comment) { | void _throw(const char *comment) { |
| THROW(0, 0, | throw Exception(0, 0, |
| &furl, | &furl, |
| comment); | comment); |
| } | } |
| Line 57 SQL_Connection& SQL_Driver_manager::get_ | Line 57 SQL_Connection& SQL_Driver_manager::get_ |
| // we have table for locating protocol's library | // we have table for locating protocol's library |
| if(!protocol2driver_and_client) | if(!protocol2driver_and_client) |
| PTHROW(0, 0, | throw Exception(0, 0, |
| &request_url, | &request_url, |
| "$"MAIN_SQL_NAME":"MAIN_SQL_DRIVERS_NAME" table must be defined"); | "$"MAIN_SQL_NAME":"MAIN_SQL_DRIVERS_NAME" table must be defined"); |
| Line 74 SQL_Connection& SQL_Driver_manager::get_ | Line 74 SQL_Connection& SQL_Driver_manager::get_ |
| else { // no cached connection or it were unpingabe: connect/reconnect | else { // no cached connection or it were unpingabe: connect/reconnect |
| int pos=request_url.pos("://", 3); | int pos=request_url.pos("://", 3); |
| if(pos<0) | if(pos<0) |
| PTHROW(0, 0, | throw Exception(0, 0, |
| request_url.size()?&request_url:&request_origin, | request_url.size()?&request_url:&request_origin, |
| "connection string must start with protocol://"); // NOTE: not THROW, but PTHROW | "connection string must start with protocol://"); // NOTE: not THROW, but PTHROW |
| Line 104 SQL_Connection& SQL_Driver_manager::get_ | Line 104 SQL_Connection& SQL_Driver_manager::get_ |
| const String *library=0; | const String *library=0; |
| if(protocol2driver_and_client->locate(0, global_protocol)) { | if(protocol2driver_and_client->locate(0, global_protocol)) { |
| if(!(library=protocol2driver_and_client->item(1)) || library->size()==0) | if(!(library=protocol2driver_and_client->item(1)) || library->size()==0) |
| PTHROW(0, 0, | throw Exception(0, 0, |
| 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); |
| dlopen_file_spec=protocol2driver_and_client->item(2); | dlopen_file_spec=protocol2driver_and_client->item(2); |
| } else | } else |
| PTHROW(0, 0, | throw Exception(0, 0, |
| &request_url, | &request_url, |
| "undefined protocol '%s'", | "undefined protocol '%s'", |
| request_protocol_cstr); | request_protocol_cstr); |
| if(lt_dlinit()) | if(lt_dlinit()) |
| PTHROW(0, 0, | throw Exception(0, 0, |
| library, | library, |
| "prepare to dynamic loading failed, %s", lt_dlerror()); | "prepare to dynamic loading failed, %s", lt_dlerror()); |
| const char *filename=library->cstr(String::UL_FILE_SPEC); | const char *filename=library->cstr(String::UL_FILE_SPEC); |
| lt_dlhandle handle=lt_dlopen(filename); | lt_dlhandle handle=lt_dlopen(filename); |
| if (!handle) | if (!handle) |
| PTHROW(0, 0, | throw Exception(0, 0, |
| library, | library, |
| "can not open the module, %s", lt_dlerror()); | "can not open the module, %s", lt_dlerror()); |
| SQL_Driver_create_func create=(SQL_Driver_create_func)lt_dlsym(handle, | SQL_Driver_create_func create=(SQL_Driver_create_func)lt_dlsym(handle, |
| SQL_DRIVER_CREATE_NAME); | SQL_DRIVER_CREATE_NAME); |
| if(!create) | if(!create) |
| PTHROW(0, 0, | throw Exception(0, 0, |
| library, | library, |
| "function '"SQL_DRIVER_CREATE_NAME"' was not found"); | "function '"SQL_DRIVER_CREATE_NAME"' was not found"); |
| Line 140 SQL_Connection& SQL_Driver_manager::get_ | Line 140 SQL_Connection& SQL_Driver_manager::get_ |
| // validate driver api version | // validate driver api version |
| int driver_api_version=driver->api_version(); | int driver_api_version=driver->api_version(); |
| if(driver_api_version!=SQL_DRIVER_API_VERSION) | if(driver_api_version!=SQL_DRIVER_API_VERSION) |
| PTHROW(0, 0, | throw Exception(0, 0, |
| library, | library, |
| "driver implements API version 0x%04X not equal to 0x%04X", | "driver implements API version 0x%04X not equal to 0x%04X", |
| driver_api_version, SQL_DRIVER_API_VERSION); | driver_api_version, SQL_DRIVER_API_VERSION); |
| Line 152 SQL_Connection& SQL_Driver_manager::get_ | Line 152 SQL_Connection& SQL_Driver_manager::get_ |
| dlopen_file_spec->cstr(String::UL_FILE_SPEC):0; | dlopen_file_spec->cstr(String::UL_FILE_SPEC):0; |
| if(const char *error=driver->initialize( | if(const char *error=driver->initialize( |
| dlopen_file_spec_cstr)) | dlopen_file_spec_cstr)) |
| PTHROW(0, 0, | throw Exception(0, 0, |
| library, | library, |
| "driver failed to initialize client library '%s', %s", | "driver failed to initialize client library '%s', %s", |
| specified_dlopen_file_spec?dlopen_file_spec_cstr:"unspecifed", | specified_dlopen_file_spec?dlopen_file_spec_cstr:"unspecifed", |