--- parser3/src/include/pa_sql_connection.h 2001/04/05 13:19:41 1.4 +++ parser3/src/include/pa_sql_connection.h 2003/01/27 16:19:11 1.30.2.2 @@ -1,69 +1,134 @@ /** @file - Parser: sql connection decl. + Parser: sql fconnection decl. - Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) - - Author: Alexander Petrosyan (http://design.ru/paf) - - $Id: pa_sql_connection.h,v 1.4 2001/04/05 13:19:41 paf Exp $ + Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) + Author: Alexandr Petrosian (http://paf.design.ru) */ #ifndef PA_SQL_CONNECTION_H #define PA_SQL_CONNECTION_H +static const char* IDENT_SQL_CONNECTION_H="$Date: 2003/01/27 16:19:11 $"; + #include "pa_pool.h" #include "pa_sql_driver.h" #include "pa_sql_driver_manager.h" +// defines + +/// @see SQL_Driver_services_impl::_throw +#ifdef PA_WITH_SJLJ_EXCEPTIONS + #define SQL_CONNECTION_SERVICED_FUNC_GUARDED(actions) actions +#else + #define SQL_CONNECTION_SERVICED_FUNC_GUARDED(actions) \ + if(!fservices || !setjmp(fservices->mark)) { \ + actions; \ + } else \ + fservices->propagate_exception(); +#endif + /// SQL connection. handy wrapper around low level SQL_Driver -class SQL_Connection : public Pooled { +class SQL_Connection: public PA_Object { public: - void set_services(Services_for_SQL_driver *services) { - fdriver.set_services(services); - } - - SQL_Connection(Pool& pool, - const String& aurl, - SQL_Driver& adriver, Services_for_SQL_driver& services, - char *url_cstr) : Pooled(pool), + SQL_Connection(ConstStringPtr aurl, SQL_Driver& adriver): furl(aurl), - fdriver(adriver) { - - set_services(&services); // associate with services[request] - fdriver.connect(url_cstr, &connection); + fdriver(adriver), + fconnection(0), + time_used(0), + marked_to_rollback(false) { } + + ConstStringPtr get_url() { return furl; } - void close() { - set_services(0); // deassociate from services[request] - SQL_driver_manager->close_connection(furl, *this); + void set_services(SQL_Driver_services *aservices) { + fservices=aservices; + } + bool expired(time_t older_dies) { + return /*!freferences && */time_used