--- /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_mysql_Connection_hpp
+#define anna_dbms_mysql_Connection_hpp
+
+
+#include <anna/dbms/Connection.hpp>
+#include <anna/dbms/DatabaseException.hpp>
+
+#include <anna/dbms.mysql/forward.hpp>
+
+namespace anna {
+
+namespace dbms {
+
+class Database;
+
+namespace mysql {
+
+class Database;
+
+/**
+ Clase que modela la conexion con el RDBMS MySQL (tm).
+
+ Esta clase no puede usarse directamente, ya que la capa ANNA.dbms obliga a que todas las peticiones
+ se hagan atraves de una instancia anna::dbms::Connection.
+
+ Para obtener una conexion a una determinada base de datos habra que instanciar dicha base de datos
+ e invocar al metodo createConnection. Independientemente del tipo de conexion particular que la
+ base de datos retorne, debemos asignarlo a un puntero de tipo anna::dbms::Connection.
+*/
+class Connection : public dbms::Connection {
+public:
+ /**
+ Devuelve una cadena con la informacion referente a esta instancia.
+ @return Una cadena con la informacion referente a esta instancia.
+ */
+ std::string asString() const throw();
+
+ /**
+ Operador de conversion.
+ \return El puntero al entorno asociado a esta base de datos.
+ */
+ operator st_mysql*() throw() { return a_mysql; }
+
+private:
+ Database& a_mysqlDatabase;
+ st_mysql* a_mysql;
+
+ Connection(Database& database, const std::string& name, const char* user, const char* password);
+
+ bool isAvailable() const throw(RuntimeException) { return a_mysql != NULL; }
+
+ void do_commit() throw(RuntimeException, DatabaseException);
+ void do_rollback() throw();
+ void open() throw(DatabaseException);
+ void close() throw();
+
+ friend class anna::dbms::mysql::Database;
+};
+
+}
+}
+}
+
+#endif