package org.asamk.signal.manager.api;
import java.util.Arrays;
+import java.util.Base64;
public class StickerPackId {
public int hashCode() {
return Arrays.hashCode(id);
}
+
+ @Override
+ public String toString() {
+ return "StickerPackId{" + Base64.getUrlEncoder().encodeToString(id) + '}';
+ }
}
import java.util.function.Supplier;
-public class Context {
+public class Context implements AutoCloseable {
private final Object LOCK = new Object();
}
}
+ @Override
+ public void close() {
+ jobExecutor.close();
+ }
+
private interface Callable {
void call();
import org.asamk.signal.manager.helper.Context;
import org.asamk.signal.manager.jobs.Job;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-public class JobExecutor {
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+public class JobExecutor implements AutoCloseable {
+
+ private static final Logger logger = LoggerFactory.getLogger(JobExecutor.class);
private final Context context;
+ private final ExecutorService executorService;
public JobExecutor(final Context context) {
this.context = context;
+ this.executorService = Executors.newCachedThreadPool();
}
public void enqueueJob(Job job) {
- job.run(context);
+ logger.debug("Enqueuing {} job", job.getClass().getSimpleName());
+
+ executorService.execute(() -> job.run(context));
+ }
+
+ @Override
+ public void close() {
+ executorService.close();
}
}