sqllock.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
  2. // For more information, see LICENCE in the main folder
  3. #include "sqllock.hpp"
  4. #include <mutex>
  5. #include <common/showmsg.hpp>
  6. std::mutex dbmutex;
  7. extern Sql * login_handle;
  8. extern Sql * char_handle;
  9. extern Sql * map_handle;
  10. extern Sql * web_handle;
  11. SQLLock::SQLLock(locktype lt) : ulock(dbmutex, std::defer_lock), lt(lt) {
  12. switch(lt) {
  13. case LOGIN_SQL_LOCK:
  14. handle = login_handle;
  15. break;
  16. case CHAR_SQL_LOCK:
  17. handle = char_handle;
  18. break;
  19. case MAP_SQL_LOCK:
  20. handle = map_handle;
  21. break;
  22. case WEB_SQL_LOCK:
  23. handle = web_handle;
  24. break;
  25. }
  26. }
  27. void SQLLock::lock() {
  28. // switch(lt) {
  29. // case LOGIN_SQL_LOCK:
  30. // ShowDebug("Locking login sql\n");
  31. // break;
  32. // case CHAR_SQL_LOCK:
  33. // ShowDebug("Locking char sql\n");
  34. // break;
  35. // case MAP_SQL_LOCK:
  36. // ShowDebug("Locking map sql\n");
  37. // break;
  38. // case WEB_SQL_LOCK:
  39. // ShowDebug("Locking web sql\n");
  40. // break;
  41. // }
  42. ulock.lock();
  43. }
  44. void SQLLock::unlock() {
  45. ulock.unlock();
  46. // switch(lt) {
  47. // case LOGIN_SQL_LOCK:
  48. // ShowDebug("Unlocked login sql\n");
  49. // break;
  50. // case CHAR_SQL_LOCK:
  51. // ShowDebug("Unlocked char sql\n");
  52. // break;
  53. // case MAP_SQL_LOCK:
  54. // ShowDebug("Unlocked map sql\n");
  55. // break;
  56. // case WEB_SQL_LOCK:
  57. // ShowDebug("Unlocked web sql\n");
  58. // break;
  59. // }
  60. }
  61. // can only get handle if locked
  62. Sql * SQLLock::getHandle() {
  63. if (!ulock.owns_lock())
  64. return nullptr;
  65. return handle;
  66. }
  67. SQLLock::~SQLLock() {
  68. }