#707 Convert async processes as services

(work in progress - rough, untested changes)
This commit is contained in:
ljacqu
2016-05-17 19:49:06 +02:00
parent 3ad76b8ec5
commit f5c89e897f
14 changed files with 359 additions and 412 deletions
@@ -6,50 +6,37 @@ import fr.xephi.authme.cache.auth.PlayerCache;
import fr.xephi.authme.cache.limbo.LimboCache;
import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.output.MessageKey;
import fr.xephi.authme.process.Process;
import fr.xephi.authme.process.NewProcess;
import fr.xephi.authme.process.ProcessService;
import fr.xephi.authme.util.Utils;
import fr.xephi.authme.util.Utils.GroupType;
import org.bukkit.entity.Player;
/**
*/
public class AsynchronousLogout implements Process {
import javax.inject.Inject;
private final Player player;
private final String name;
private final AuthMe plugin;
private final DataSource database;
private boolean canLogout = true;
private final ProcessService service;
public class AsynchronousLogout implements NewProcess {
/**
* Constructor for AsynchronousLogout.
*
* @param player Player
* @param plugin AuthMe
* @param database DataSource
* @param service The process service
*/
public AsynchronousLogout(Player player, AuthMe plugin, DataSource database, ProcessService service) {
this.player = player;
this.plugin = plugin;
this.database = database;
this.name = player.getName().toLowerCase();
this.service = service;
}
@Inject
private AuthMe plugin;
private void preLogout() {
if (!PlayerCache.getInstance().isAuthenticated(name)) {
@Inject
private DataSource database;
@Inject
private ProcessService service;
@Inject
private PlayerCache playerCache;
@Inject
private LimboCache limboCache;
AsynchronousLogout() { }
public void logout(Player player) {
final String name = player.getName().toLowerCase();
if (!playerCache.isAuthenticated(name)) {
service.send(player, MessageKey.NOT_LOGGED_IN);
canLogout = false;
}
}
@Override
public void run() {
preLogout();
if (!canLogout) {
return;
}
final Player p = player;
@@ -61,7 +48,7 @@ public class AsynchronousLogout implements Process {
auth.setWorld(p.getWorld().getName());
database.updateQuitLoc(auth);
PlayerCache.getInstance().removePlayer(name);
playerCache.removePlayer(name);
database.setUnlogged(name);
service.scheduleSyncDelayedTask(new Runnable() {
@Override
@@ -69,10 +56,10 @@ public class AsynchronousLogout implements Process {
Utils.teleportToSpawn(p);
}
});
if (LimboCache.getInstance().hasLimboPlayer(name)) {
LimboCache.getInstance().deleteLimboPlayer(name);
if (limboCache.hasLimboPlayer(name)) {
limboCache.deleteLimboPlayer(name);
}
LimboCache.getInstance().addLimboPlayer(player);
limboCache.addLimboPlayer(player);
Utils.setGroup(player, GroupType.NOTLOGGEDIN);
service.scheduleSyncDelayedTask(new ProcessSynchronousPlayerLogout(p, plugin, service));
}