znone
2019-06-16 16519fab3d99ca277bce00d2bcbfd46b33a46391
include/qtl_mysql_pool.hpp
@@ -18,11 +18,14 @@
   virtual database* new_database() throw() override
   {
      database* db=new database;
      db->charset_name("utf8");
      if(!db->open(m_host.data(), m_user.data(), m_password.data(), m_database.data(), 0, m_port))
      {
         delete db;
         db=NULL;
      }
      else
      {
         db->charset_name("utf8");
      }
      return db;
   }
@@ -35,6 +38,44 @@
   std::string m_password;
};
#if MARIADB_VERSION_ID >= 050500
template<typename EventLoop>
class async_pool : public qtl::async_pool<async_pool<EventLoop>, EventLoop, async_connection>
{
   typedef qtl::async_pool<async_pool<EventLoop>, EventLoop, async_connection> base_class;
public:
   async_pool(EventLoop& ev) : base_class(ev), m_port(0) { }
   virtual ~async_pool() { }
   template<typename Handler>
   void new_connection(EventLoop& ev, Handler&& handler) throw()
   {
      async_connection* db = new async_connection;
      db->open(ev, [this, handler, db](const mysql::error& e) mutable {
         if (e)
         {
            delete db;
            db = nullptr;
         }
         else
         {
            db->charset_name("utf8");
         }
         handler(e, db);
      }, m_host.data(), m_user.data(), m_password.data(), m_database.data(), 0, m_port);
   }
protected:
   std::string m_host;
   unsigned short m_port;
   std::string m_database;
   std::string m_user;
   std::string m_password;
};
#endif //MariaDB
}
}