add database-aware MySQL pooling
This commit is contained in:
@@ -27,10 +27,11 @@ struct MySQL {
|
||||
String request_host;
|
||||
String request_username;
|
||||
String request_password;
|
||||
String request_database;
|
||||
|
||||
std::vector<MySQLFieldInfo> field_info;
|
||||
|
||||
bool connect(String host = "localhost", String username = "root", String password = "");
|
||||
bool connect(String host = "localhost", String username = "root", String password = "", String database = "");
|
||||
bool reset_connection();
|
||||
void disconnect();
|
||||
String error();
|
||||
@@ -46,14 +47,14 @@ struct MySQL {
|
||||
|
||||
};
|
||||
|
||||
inline MySQL* mysql_connect(String host = "localhost", String username = "root", String password = "")
|
||||
inline MySQL* mysql_connect(String host = "localhost", String username = "root", String password = "", String database = "")
|
||||
{
|
||||
if(context)
|
||||
{
|
||||
for(void* raw : context->resources.mysql_connections)
|
||||
{
|
||||
MySQL* db = (MySQL*)raw;
|
||||
if(db && db->request_pooled && db->connection && db->request_host == host && db->request_username == username && db->request_password == password)
|
||||
if(db && db->request_pooled && db->connection && db->request_host == host && db->request_username == username && db->request_password == password && db->request_database == database)
|
||||
{
|
||||
db->request_leases++;
|
||||
return(db);
|
||||
@@ -67,7 +68,8 @@ inline MySQL* mysql_connect(String host = "localhost", String username = "root",
|
||||
db->request_host = host;
|
||||
db->request_username = username;
|
||||
db->request_password = password;
|
||||
db->connect(host, username, password);
|
||||
db->request_database = database;
|
||||
db->connect(host, username, password, database);
|
||||
return(db);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user