Moved Player#getFirstPlayed call to asynchronous execution #659

This commit is contained in:
Rsl1122 2018-08-08 11:08:20 +03:00
parent 397f1dd81b
commit 5b4ae5ba36
4 changed files with 9 additions and 8 deletions

View File

@ -97,7 +97,7 @@ public class PlayerOnlineListener implements Listener {
SessionCache.getInstance().cacheSession(uuid, new Session(uuid, time, world, gm)); SessionCache.getInstance().cacheSession(uuid, new Session(uuid, time, world, gm));
Processing.submit( Processing.submit(
new RegisterProcessor(uuid, player.getFirstPlayed(), playerName, new RegisterProcessor(uuid, player::getFirstPlayed, playerName,
new IPUpdateProcessor(uuid, address, time), new IPUpdateProcessor(uuid, address, time),
new NameProcessor(uuid, playerName, displayName), new NameProcessor(uuid, playerName, displayName),
new PlayerPageUpdateProcessor(uuid) new PlayerPageUpdateProcessor(uuid)

View File

@ -100,7 +100,7 @@ public class SpongePlayerListener {
SessionCache.getInstance().cacheSession(uuid, new Session(uuid, time, world, gm)); SessionCache.getInstance().cacheSession(uuid, new Session(uuid, time, world, gm));
Processing.submit( Processing.submit(
new RegisterProcessor(uuid, time, playerName, new RegisterProcessor(uuid, () -> time, playerName,
new IPUpdateProcessor(uuid, address, time), new IPUpdateProcessor(uuid, address, time),
new NameProcessor(uuid, playerName, displayName), new NameProcessor(uuid, playerName, displayName),
new PlayerPageUpdateProcessor(uuid) new PlayerPageUpdateProcessor(uuid)

View File

@ -10,6 +10,7 @@ import com.djrapitops.plan.system.processing.Processing;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.util.UUID; import java.util.UUID;
import java.util.function.Supplier;
/** /**
* Registers the user to the database and marks first session if the user has no actions. * Registers the user to the database and marks first session if the user has no actions.
@ -19,11 +20,11 @@ import java.util.UUID;
public class RegisterProcessor implements CriticalRunnable { public class RegisterProcessor implements CriticalRunnable {
private final UUID uuid; private final UUID uuid;
private final long registered; private final Supplier<Long> registered;
private final String name; private final String name;
private final Runnable[] afterProcess; private final Runnable[] afterProcess;
public RegisterProcessor(UUID uuid, long registered, String name, Runnable... afterProcess) { public RegisterProcessor(UUID uuid, Supplier<Long> registered, String name, Runnable... afterProcess) {
this.uuid = uuid; this.uuid = uuid;
this.registered = registered; this.registered = registered;
this.name = name; this.name = name;
@ -36,10 +37,10 @@ public class RegisterProcessor implements CriticalRunnable {
Verify.nullCheck(uuid, () -> new IllegalStateException("UUID was null")); Verify.nullCheck(uuid, () -> new IllegalStateException("UUID was null"));
try { try {
if (!db.check().isPlayerRegistered(uuid)) { if (!db.check().isPlayerRegistered(uuid)) {
db.save().registerNewUser(uuid, registered, name); db.save().registerNewUser(uuid, registered.get(), name);
} }
if (!db.check().isPlayerRegisteredOnThisServer(uuid)) { if (!db.check().isPlayerRegisteredOnThisServer(uuid)) {
db.save().registerNewUserOnThisServer(uuid, registered); db.save().registerNewUserOnThisServer(uuid, registered.get());
} }
} finally { } finally {
for (Runnable runnable : afterProcess) { for (Runnable runnable : afterProcess) {

View File

@ -594,7 +594,7 @@ public class SQLiteTest {
assertTrue(securityTable.getUsers().isEmpty()); assertTrue(securityTable.getUsers().isEmpty());
} }
private void saveAllData(SQLDB database) throws UnsupportedEncodingException, NoSuchAlgorithmException { private void saveAllData(SQLDB database) throws NoSuchAlgorithmException {
System.out.println("Saving all possible data to the Database.."); System.out.println("Saving all possible data to the Database..");
UserInfoTable userInfoTable = database.getUserInfoTable(); UserInfoTable userInfoTable = database.getUserInfoTable();
UsersTable usersTable = database.getUsersTable(); UsersTable usersTable = database.getUsersTable();
@ -864,7 +864,7 @@ public class SQLiteTest {
System.out.println("\n- Running RegisterProcessors -"); System.out.println("\n- Running RegisterProcessors -");
List<RegisterProcessor> processors = new ArrayList<>(); List<RegisterProcessor> processors = new ArrayList<>();
for (int i = 0; i < 200; i++) { for (int i = 0; i < 200; i++) {
processors.add(new RegisterProcessor(playerUUID, 500L, "name")); processors.add(new RegisterProcessor(playerUUID, () -> 500L, "name"));
} }
for (RegisterProcessor processor : processors) { for (RegisterProcessor processor : processors) {
processor.run(); processor.run();