+++ /dev/null
-// ANNA - Anna is Not Nothingness Anymore //
-// //
-// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
-// //
-// See project site at http://redmine.teslayout.com/projects/anna-suite //
-// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
-
-
-#ifndef anna_dbms_Delivery_hpp
-#define anna_dbms_Delivery_hpp
-
-#include <anna/comm/Delivery.hpp>
-
-namespace anna {
-
-namespace dbms {
-
-class Connection;
-
-/**
- Agrupacion logica de conexiones con la base de datos. Reparte la carga de las transacciones contra
- la base de datos entre las distintas conexiones que contenga esta instancia. Ademas en caso de estar
- en una ejecucion con soporte para multithread (ver anna::functions::supportMultithread) asegura
- que cada uno de los threads siempre utiliza la misma conexion lo cual asegura el mantinimiento de la
- integridad de cada una de las transacciones de los threads.
-*/
-class Delivery : comm::Delivery {
-public:
- /**
- Constructor.
- @param name Nombre logico de este grupo de conexiones.
- */
- Delivery(const char *name) : comm::Delivery(name) {;}
-
- /**
- Crea automaticamente las conexiones a la base de datos recibida como parametro con el usuario/password
- indicado.
- \param database Instancia de la base de datos contra la que realizamos la conexion.
- \param prefixName Prefijo del nombre logico de la conexiones que vamos a crear. El resto del nombre vendra
- dado por el numero secuencial de la conexion.
- \param user Nombre del usuario con el que realizamos la conexion.
- \param password Codigo de acceso del usuario.
- \param n Numero de conexion a crear.
- \warning Recordar que el numero maximo de conexiones a una base de datos esta limitado por Database::maxConnection.
- */
- void createConnections(Database& database, const char* prefixName, const char* user, const char* password, const int n)
- throw(RuntimeException, DatabaseException);
-
- /**
- Incorpora al conexion recibida como parametro a la agrupacion logica.
- \param connection Conexion que vamos a incorporar a la agrupacion logica.
- */
- void addConnection(Connection* connection) throw(RuntimeException) {
- this->add(connection);
- a_iiConnection = this->begin();
- }
-
- /**
- Devuelve la instancia de la conexion a base de datos con la que debemos trabajar.
- @return la instancia de la conexion a base de datos con la que debemos trabajar.
- \warning La conexion debe ser bloqueada por el Thread que la recibe (ver anna::Guard) para asegurar que
- cualquier otro thread que intente acceder a ella queda bloqueado a la espera de que terminemos de
- trabajar sobre ella.
- */
- Connection& getConnection() throw(RuntimeException);
-
-private:
- iterator a_iiConnection;
-
- void do_initialize() throw() { a_iiConnection = begin(); }
- comm::Resource* do_apply() throw(RuntimeException);
- static Connection* connection(iterator& ii) { return (Connection*) comm::Delivery::resource(ii); }
-
-};
-
-}
-}
-
-#endif