mirror of
https://github.com/AsamK/signal-cli
synced 2025-08-30 02:50:39 +00:00
Make JobExecutor execute jobs asynchronously
This commit is contained in:
parent
eaa6b7cf57
commit
ed11bf6368
5 changed files with 31 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
||||||
package org.asamk.signal.manager.api;
|
package org.asamk.signal.manager.api;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
public class StickerPackId {
|
public class StickerPackId {
|
||||||
|
|
||||||
|
@ -32,4 +33,9 @@ public class StickerPackId {
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Arrays.hashCode(id);
|
return Arrays.hashCode(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "StickerPackId{" + Base64.getUrlEncoder().encodeToString(id) + '}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import org.asamk.signal.manager.storage.stickerPacks.StickerPackStore;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class Context {
|
public class Context implements AutoCloseable {
|
||||||
|
|
||||||
private final Object LOCK = new Object();
|
private final Object LOCK = new Object();
|
||||||
|
|
||||||
|
@ -170,6 +170,11 @@ public class Context {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
jobExecutor.close();
|
||||||
|
}
|
||||||
|
|
||||||
private interface Callable {
|
private interface Callable {
|
||||||
|
|
||||||
void call();
|
void call();
|
||||||
|
|
|
@ -2,16 +2,31 @@ package org.asamk.signal.manager.internal;
|
||||||
|
|
||||||
import org.asamk.signal.manager.helper.Context;
|
import org.asamk.signal.manager.helper.Context;
|
||||||
import org.asamk.signal.manager.jobs.Job;
|
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 Context context;
|
||||||
|
private final ExecutorService executorService;
|
||||||
|
|
||||||
public JobExecutor(final Context context) {
|
public JobExecutor(final Context context) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
this.executorService = Executors.newCachedThreadPool();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void enqueueJob(Job job) {
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1332,6 +1332,7 @@ public class ManagerImpl implements Manager {
|
||||||
stopReceiveThread(thread);
|
stopReceiveThread(thread);
|
||||||
}
|
}
|
||||||
executor.close();
|
executor.close();
|
||||||
|
context.close();
|
||||||
|
|
||||||
dependencies.getSignalWebSocket().disconnect();
|
dependencies.getSignalWebSocket().disconnect();
|
||||||
dependencies.getPushServiceSocket().close();
|
dependencies.getPushServiceSocket().close();
|
||||||
|
|
|
@ -23,6 +23,7 @@ public class RetrieveStickerPackJob implements Job {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(Context context) {
|
public void run(Context context) {
|
||||||
|
logger.trace("Downloading sticker pack {}", packId);
|
||||||
try {
|
try {
|
||||||
context.getStickerHelper().retrieveStickerPack(packId, packKey);
|
context.getStickerHelper().retrieveStickerPack(packId, packKey);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue