MySQL Threading changes

This commit is contained in:
Auxilor
2021-11-12 14:12:15 +00:00
parent c912b97438
commit cc344bf7ca
3 changed files with 32 additions and 12 deletions

View File

@@ -1,6 +1,7 @@
package com.willfp.eco.spigot.data
import com.willfp.eco.core.Eco
import com.willfp.eco.core.data.PlayerProfile
import com.willfp.eco.util.PlayerUtils
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
@@ -12,6 +13,7 @@ class DataListener : Listener {
@EventHandler
fun onLeave(event: PlayerQuitEvent) {
PlayerUtils.updateSavedDisplayName(event.player)
Eco.getHandler().ecoPlugin.logger.info("Profile before leave: ${PlayerProfile.load(event.player)}")
Eco.getHandler().playerProfileHandler.savePlayerBlocking(event.player.uniqueId)
Eco.getHandler().playerProfileHandler.unloadPlayer(event.player.uniqueId)
Eco.getHandler().ecoPlugin.logger.info("Player ${event.player.name} Quit (Saving)")
@@ -26,6 +28,7 @@ class DataListener : Listener {
@EventHandler
fun onLogin(event: PlayerLoginEvent) {
Eco.getHandler().playerProfileHandler.unloadPlayer(event.player.uniqueId)
Eco.getHandler().ecoPlugin.logger.info("Player ${event.player.name} Logged In (Saving)")
Eco.getHandler().ecoPlugin.logger.info("Player ${event.player.name} Logged In (Unloaded Profile)")
Eco.getHandler().ecoPlugin.logger.info("Profile after join: ${PlayerProfile.load(event.player)}")
}
}

View File

@@ -12,6 +12,7 @@ import org.jetbrains.exposed.dao.id.UUIDTable
import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.transactions.transaction
import java.util.*
import java.util.concurrent.Callable
import java.util.concurrent.Executors
@Suppress("UNCHECKED_CAST")
@@ -65,7 +66,7 @@ class MySQLDataHandler(
private fun <T> writeAsserted(uuid: UUID, key: NamespacedKey, value: T, async: Boolean = true) {
val column: Column<T> = getColumn(key.toString()) as Column<T>
fun executeTransaction() {
val future = executor.submit {
transaction {
Players.update({ Players.id eq uuid }) {
it[column] = value
@@ -73,10 +74,8 @@ class MySQLDataHandler(
}
}
if (async) {
executor.execute { executeTransaction() }
} else {
executeTransaction()
if (!async) {
future.get()
}
}
@@ -109,12 +108,14 @@ class MySQLDataHandler(
}
override fun <T> read(uuid: UUID, key: NamespacedKey): T? {
var value: T? = null
transaction {
val player = getPlayer(uuid)
value = player[getColumn(key.toString())] as T?
}
return value
return executor.submit(Callable<T?> {
var value: T? = null
transaction {
val player = getPlayer(uuid)
value = player[getColumn(key.toString())] as T?
}
return@Callable value
}).get()
}
object Players : UUIDTable("eco_players")