Compare commits

...

2 Commits

Author SHA1 Message Date
0228787568 Add Pagination project
Signed-off-by: Quentin Legot <legotquentin@gmail.com>
2023-02-27 00:13:09 +01:00
1a4e3481d5 Change list by a queue in order to use a thread-safe non-blocking concurrent queue
Signed-off-by: Quentin Legot <legotquentin@gmail.com>
2023-02-20 14:19:51 +01:00
11 changed files with 32 additions and 30 deletions

View File

@ -1,11 +1,4 @@
dependencies { dependencies {
implementation 'org.postgresql:postgresql:42.5.0' implementation 'org.postgresql:postgresql:42.5.0'
testImplementation 'com.google.code.gson:gson:2.10' testImplementation 'com.google.code.gson:gson:2.10'
testImplementation "org.junit.jupiter:junit-jupiter-api:${project.junit_version}"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${project.junit_version}"
} }
test {
useJUnitPlatform()
}

0
Pagination/build.gradle Normal file
View File

View File

@ -0,0 +1,7 @@
package fr.altarik.toolbox;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}

View File

@ -9,9 +9,6 @@ dependencies {
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
testImplementation "org.junit.jupiter:junit-jupiter-api:${project.junit_version}"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${project.junit_version}"
} }
processResources { processResources {
@ -37,8 +34,3 @@ tasks.withType(JavaCompile).configureEach {
it.options.release = targetVersion it.options.release = targetVersion
} }
} }
test {
useJUnitPlatform()
}

View File

@ -2,13 +2,14 @@ package fr.altarik.toolbox.task;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Queue;
public class Scheduler implements Runnable { public class Scheduler implements Runnable {
private final List<SchedulerTaskData> tasks; private final Queue<SchedulerTaskData> tasks;
private final SendTaskWorkerI worker; private final SendTaskWorkerI worker;
public Scheduler(SendTaskWorkerI worker, List<SchedulerTaskData> tasks) { public Scheduler(SendTaskWorkerI worker, Queue<SchedulerTaskData> tasks) {
this.worker = worker; this.worker = worker;
this.tasks = tasks; this.tasks = tasks;
} }

View File

@ -2,7 +2,8 @@ package fr.altarik.toolbox.task.async;
import fr.altarik.toolbox.task.*; import fr.altarik.toolbox.task.*;
import java.util.Stack; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -14,7 +15,7 @@ import java.util.concurrent.TimeUnit;
public class AsyncPeriodicTasks implements PeriodicTaskI, AsyncTaskI, SendTaskWorkerI { public class AsyncPeriodicTasks implements PeriodicTaskI, AsyncTaskI, SendTaskWorkerI {
private final ExecutorService worker; private final ExecutorService worker;
private final Stack<SchedulerTaskData> tasks; private final Queue<SchedulerTaskData> tasks;
protected final Scheduler scheduler; protected final Scheduler scheduler;
private final ServerTickListener listener; private final ServerTickListener listener;
@ -26,7 +27,7 @@ public class AsyncPeriodicTasks implements PeriodicTaskI, AsyncTaskI, SendTaskWo
} else { } else {
worker = Executors.newFixedThreadPool(numberOfWorker); worker = Executors.newFixedThreadPool(numberOfWorker);
} }
tasks = new Stack<>(); tasks = new ConcurrentLinkedQueue<>();
this.scheduler = new Scheduler(this, tasks); this.scheduler = new Scheduler(this, tasks);
this.listener = new ServerTickListener(scheduler); this.listener = new ServerTickListener(scheduler);
} }

View File

@ -2,17 +2,17 @@ package fr.altarik.toolbox.task.sync;
import fr.altarik.toolbox.task.*; import fr.altarik.toolbox.task.*;
import java.util.ArrayList; import java.util.Queue;
import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue;
public class PeriodicSyncTask implements PeriodicTaskI, SendTaskWorkerI { public class PeriodicSyncTask implements PeriodicTaskI, SendTaskWorkerI {
private final ServerTickListener listener; private final ServerTickListener listener;
private final List<SchedulerTaskData> tasks; private final Queue<SchedulerTaskData> tasks;
protected final Scheduler scheduler; protected final Scheduler scheduler;
private PeriodicSyncTask() { private PeriodicSyncTask() {
this.tasks = new ArrayList<>(2); this.tasks = new ConcurrentLinkedQueue<>();
this.scheduler = new Scheduler(this, tasks); this.scheduler = new Scheduler(this, tasks);
this.listener = new ServerTickListener(scheduler); this.listener = new ServerTickListener(scheduler);
} }

View File

@ -2,17 +2,17 @@ package fr.altarik.toolbox.task.sync;
import fr.altarik.toolbox.task.*; import fr.altarik.toolbox.task.*;
import java.util.ArrayList; import java.util.Queue;
import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue;
public class SyncTask implements TaskI, SendTaskWorkerI { public class SyncTask implements TaskI, SendTaskWorkerI {
private final ServerTickListener listener; private final ServerTickListener listener;
private final List<SchedulerTaskData> tasks; private final Queue<SchedulerTaskData> tasks;
protected final Scheduler scheduler; protected final Scheduler scheduler;
private SyncTask() { private SyncTask() {
this.tasks = new ArrayList<>(2); this.tasks = new ConcurrentLinkedQueue<>();
this.scheduler = new Scheduler(this, tasks); this.scheduler = new Scheduler(this, tasks);
this.listener = new ServerTickListener(scheduler); this.listener = new ServerTickListener(scheduler);
} }

View File

@ -27,12 +27,19 @@ subprojects {
} }
} }
dependencies {
testImplementation "org.junit.jupiter:junit-jupiter-api:${project.junit_version}"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${project.junit_version}"
}
java { java {
withSourcesJar() withSourcesJar()
withJavadocJar() withJavadocJar()
} }
test {
useJUnitPlatform()
}
repositories { repositories {
maven { maven {

View File

@ -8,6 +8,6 @@ loader_version=0.14.12
fabric_version=0.70.0+1.19.3 fabric_version=0.70.0+1.19.3
maven_group=fr.altarik.toolbox maven_group=fr.altarik.toolbox
maven_version=3.0.1-SNAPSHOT maven_version=4.0.0-SNAPSHOT
repo_username=Altarik repo_username=Altarik
repo_password=password repo_password=password

View File

@ -10,4 +10,5 @@ pluginManagement {
} }
rootProject.name = 'Toolbox' rootProject.name = 'Toolbox'
include(':Tasks', ':Database') include(':Tasks', ':Database', ':Pagination')