MySQL Threading changes
This commit is contained in:
@@ -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)}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user