Remove RoaringBitmap

This commit is contained in:
themode 2021-12-28 10:05:10 +01:00 committed by TheMode
parent 6dc56b1f81
commit 3f10829935
3 changed files with 8 additions and 7 deletions

View File

@ -130,9 +130,6 @@ dependencies {
implementation 'com.github.ben-manes.caffeine:caffeine:3.0.4'
// https://mvnrepository.com/artifact/org.roaringbitmap/RoaringBitmap
implementation group: 'org.roaringbitmap', name: 'RoaringBitmap', version: '0.9.23'
// https://mvnrepository.com/artifact/org.jctools/jctools-core
implementation group: 'org.jctools', name: 'jctools-core', version: '3.3.0'

View File

@ -1,9 +1,10 @@
package net.minestom.server.timer;
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
import org.jctools.queues.MpscUnboundedArrayQueue;
import org.jetbrains.annotations.NotNull;
import org.roaringbitmap.RoaringBitmap;
import java.time.Duration;
import java.util.ArrayList;
@ -25,8 +26,8 @@ final class SchedulerImpl implements Scheduler {
private static final ForkJoinPool EXECUTOR = ForkJoinPool.commonPool();
private final MpscUnboundedArrayQueue<TaskImpl> taskQueue = new MpscUnboundedArrayQueue<>(64);
private final RoaringBitmap registeredTasks = new RoaringBitmap();
private final RoaringBitmap parkedTasks = new RoaringBitmap();
private final IntSet registeredTasks = new IntOpenHashSet();
private final IntSet parkedTasks = new IntOpenHashSet();
// Tasks scheduled on a certain tick
private final Int2ObjectAVLTreeMap<List<TaskImpl>> tickTaskQueue = new Int2ObjectAVLTreeMap<>();
@ -73,7 +74,7 @@ final class SchedulerImpl implements Scheduler {
}
synchronized void unparkTask(TaskImpl task) {
if (parkedTasks.checkedRemove(task.id()))
if (parkedTasks.remove(task.id()))
this.taskQueue.relaxedOffer(task);
}

View File

@ -84,10 +84,13 @@ public class TestScheduler {
var task = scheduler.buildTask(() -> result.set(true))
.delay(TaskSchedule.park())
.schedule();
assertTrue(task.isParked());
assertFalse(result.get(), "Task hasn't been unparked yet");
task.unpark();
assertFalse(task.isParked());
assertFalse(result.get(), "Tasks must be processed first");
scheduler.process();
assertFalse(task.isParked());
assertTrue(result.get(), "Parked task should be executed");
}