Finish the buffering refactor - still WIP. Towards #32
This commit is contained in:
@@ -46,6 +46,7 @@ import me.lucko.luckperms.common.storage.Datastore;
|
||||
import me.lucko.luckperms.common.storage.StorageFactory;
|
||||
import me.lucko.luckperms.common.tracks.TrackManager;
|
||||
import me.lucko.luckperms.common.users.UserManager;
|
||||
import me.lucko.luckperms.common.utils.BufferedRequest;
|
||||
import me.lucko.luckperms.common.utils.LocaleManager;
|
||||
import me.lucko.luckperms.common.utils.LogFactory;
|
||||
import me.lucko.luckperms.sponge.contexts.WorldCalculator;
|
||||
@@ -106,6 +107,7 @@ public class LPSpongePlugin implements LuckPermsPlugin {
|
||||
private LocaleManager localeManager;
|
||||
private ContextManager<Subject> contextManager;
|
||||
private CalculatorFactory calculatorFactory;
|
||||
private BufferedRequest<Void> updateTaskBuffer;
|
||||
|
||||
@Listener
|
||||
public void onEnable(GamePreInitializationEvent event) {
|
||||
@@ -157,13 +159,22 @@ public class LPSpongePlugin implements LuckPermsPlugin {
|
||||
ApiHandler.registerProvider(apiProvider);
|
||||
Sponge.getServiceManager().setProvider(this, LuckPermsApi.class, apiProvider);
|
||||
|
||||
final LPSpongePlugin i = this;
|
||||
updateTaskBuffer = new BufferedRequest<Void>(6000L, this::doAsync) {
|
||||
@Override
|
||||
protected Void perform() {
|
||||
scheduler.createTaskBuilder().async().execute(new UpdateTask(i)).submit(i);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
int mins = getConfiguration().getSyncTime();
|
||||
if (mins > 0) {
|
||||
scheduler.createTaskBuilder().async().interval(mins, TimeUnit.MINUTES).execute(new UpdateTask(this))
|
||||
.submit(LPSpongePlugin.this);
|
||||
} else {
|
||||
// Update online users
|
||||
runUpdateTask();
|
||||
updateTaskBuffer.request();
|
||||
}
|
||||
|
||||
scheduler.createTaskBuilder().intervalTicks(1L).execute(SpongeSenderFactory.get(this)).submit(this);
|
||||
@@ -292,11 +303,6 @@ public class LPSpongePlugin implements LuckPermsPlugin {
|
||||
return game.getPluginManager().isLoaded(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runUpdateTask() {
|
||||
scheduler.createTaskBuilder().async().execute(new UpdateTask(this)).submit(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAsync(Runnable r) {
|
||||
scheduler.createTaskBuilder().async().execute(r).submit(this);
|
||||
|
||||
@@ -52,16 +52,12 @@ public class LuckPermsSubjectData implements SubjectData {
|
||||
private final PermissionHolder holder;
|
||||
|
||||
private void objectSave(PermissionHolder t) {
|
||||
service.getPlugin().doAsync(() -> {
|
||||
if (t instanceof User) {
|
||||
((User) t).refreshPermissions();
|
||||
service.getPlugin().getDatastore().saveUser(((User) t));
|
||||
}
|
||||
if (t instanceof Group) {
|
||||
service.getPlugin().getDatastore().saveGroup(((Group) t));
|
||||
service.getPlugin().runUpdateTask();
|
||||
}
|
||||
});
|
||||
if (t instanceof User) {
|
||||
service.getPlugin().getDatastore().saveUser(((User) t), b -> ((User) t).getRefreshBuffer().request());
|
||||
}
|
||||
if (t instanceof Group) {
|
||||
service.getPlugin().getDatastore().saveGroup(((Group) t), b -> service.getPlugin().getUpdateTaskBuffer().request());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user