Files
rathena/src/web/sqllock.cpp
2023-02-12 12:46:06 -08:00

82 lines
1.6 KiB
C++

// Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
#include "sqllock.hpp"
#include <mutex>
#include <common/showmsg.hpp>
std::mutex dbmutex;
extern Sql * login_handle;
extern Sql * char_handle;
extern Sql * map_handle;
extern Sql * web_handle;
SQLLock::SQLLock(locktype lt) : ulock(dbmutex, std::defer_lock), lt(lt) {
switch(lt) {
case LOGIN_SQL_LOCK:
handle = login_handle;
break;
case CHAR_SQL_LOCK:
handle = char_handle;
break;
case MAP_SQL_LOCK:
handle = map_handle;
break;
case WEB_SQL_LOCK:
handle = web_handle;
break;
}
}
void SQLLock::lock() {
// switch(lt) {
// case LOGIN_SQL_LOCK:
// ShowDebug("Locking login sql\n");
// break;
// case CHAR_SQL_LOCK:
// ShowDebug("Locking char sql\n");
// break;
// case MAP_SQL_LOCK:
// ShowDebug("Locking map sql\n");
// break;
// case WEB_SQL_LOCK:
// ShowDebug("Locking web sql\n");
// break;
// }
ulock.lock();
}
void SQLLock::unlock() {
ulock.unlock();
// switch(lt) {
// case LOGIN_SQL_LOCK:
// ShowDebug("Unlocked login sql\n");
// break;
// case CHAR_SQL_LOCK:
// ShowDebug("Unlocked char sql\n");
// break;
// case MAP_SQL_LOCK:
// ShowDebug("Unlocked map sql\n");
// break;
// case WEB_SQL_LOCK:
// ShowDebug("Unlocked web sql\n");
// break;
// }
}
// can only get handle if locked
Sql * SQLLock::getHandle() {
if (!ulock.owns_lock())
return nullptr;
return handle;
}
SQLLock::~SQLLock() {
}