- * The service should only be used for running tasks on other executors - * at scheduled times. - * No significant work should be run by the service itself! - */ -@Qualifier -@Target({FIELD, METHOD, PARAMETER}) -@Retention(RUNTIME) -public @interface Scheduler { -} \ No newline at end of file diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/system/TaskScheduler.java b/bramble-api/src/main/java/org/briarproject/bramble/api/system/TaskScheduler.java new file mode 100644 index 000000000..dad4ef86c --- /dev/null +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/system/TaskScheduler.java @@ -0,0 +1,28 @@ +package org.briarproject.bramble.api.system; + +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +import java.util.concurrent.Future; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +/** + * A service that can be used to schedule the execution of tasks. + *
+ * The service should only be used for running tasks on other executors
+ * at scheduled times. No significant work should be run by the service itself.
+ */
+@NotNullByDefault
+public interface TaskScheduler {
+
+ /**
+ * See {@link ScheduledExecutorService#schedule(Runnable, long, TimeUnit)}.
+ */
+ Future> schedule(Runnable task, long delay, TimeUnit unit);
+
+ /**
+ * See {@link ScheduledExecutorService#scheduleWithFixedDelay(Runnable, long, long, TimeUnit)}.
+ */
+ Future> scheduleWithFixedDelay(Runnable task, long delay,
+ long interval, TimeUnit unit);
+}
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreEagerSingletons.java b/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreEagerSingletons.java
index ecec02b5f..ac13a5612 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreEagerSingletons.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreEagerSingletons.java
@@ -9,7 +9,6 @@ import org.briarproject.bramble.plugin.PluginModule;
import org.briarproject.bramble.properties.PropertiesModule;
import org.briarproject.bramble.rendezvous.RendezvousModule;
import org.briarproject.bramble.sync.validation.ValidationModule;
-import org.briarproject.bramble.system.SystemModule;
import org.briarproject.bramble.transport.TransportModule;
import org.briarproject.bramble.versioning.VersioningModule;
@@ -31,8 +30,6 @@ public interface BrambleCoreEagerSingletons {
void inject(RendezvousModule.EagerSingletons init);
- void inject(SystemModule.EagerSingletons init);
-
void inject(TransportModule.EagerSingletons init);
void inject(ValidationModule.EagerSingletons init);
@@ -50,7 +47,6 @@ public interface BrambleCoreEagerSingletons {
c.inject(new RendezvousModule.EagerSingletons());
c.inject(new PluginModule.EagerSingletons());
c.inject(new PropertiesModule.EagerSingletons());
- c.inject(new SystemModule.EagerSingletons());
c.inject(new TransportModule.EagerSingletons());
c.inject(new ValidationModule.EagerSingletons());
c.inject(new VersioningModule.EagerSingletons());
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java b/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java
index e2b7deae8..473df2b77 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java
@@ -21,7 +21,7 @@ import org.briarproject.bramble.rendezvous.RendezvousModule;
import org.briarproject.bramble.settings.SettingsModule;
import org.briarproject.bramble.sync.SyncModule;
import org.briarproject.bramble.sync.validation.ValidationModule;
-import org.briarproject.bramble.system.SystemModule;
+import org.briarproject.bramble.system.ClockModule;
import org.briarproject.bramble.transport.TransportModule;
import org.briarproject.bramble.versioning.VersioningModule;
@@ -29,6 +29,7 @@ import dagger.Module;
@Module(includes = {
ClientModule.class,
+ ClockModule.class,
ConnectionModule.class,
ContactModule.class,
CryptoModule.class,
@@ -48,7 +49,6 @@ import dagger.Module;
RendezvousModule.class,
SettingsModule.class,
SyncModule.class,
- SystemModule.class,
TransportModule.class,
ValidationModule.class,
VersioningModule.class
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/io/TimeoutMonitorImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/io/TimeoutMonitorImpl.java
index eb68cb3a4..ce90af8f0 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/io/TimeoutMonitorImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/io/TimeoutMonitorImpl.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.io;
import org.briarproject.bramble.api.io.TimeoutMonitor;
import org.briarproject.bramble.api.lifecycle.IoExecutor;
import org.briarproject.bramble.api.system.Clock;
-import org.briarproject.bramble.api.system.Scheduler;
+import org.briarproject.bramble.api.system.TaskScheduler;
import java.io.IOException;
import java.io.InputStream;
@@ -11,7 +11,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.logging.Logger;
import javax.annotation.concurrent.GuardedBy;
@@ -30,7 +29,7 @@ class TimeoutMonitorImpl implements TimeoutMonitor {
private static final long CHECK_INTERVAL_MS = SECONDS.toMillis(10);
- private final ScheduledExecutorService scheduler;
+ private final TaskScheduler scheduler;
private final Executor ioExecutor;
private final Clock clock;
private final Object lock = new Object();
@@ -41,7 +40,7 @@ class TimeoutMonitorImpl implements TimeoutMonitor {
private Future> task = null;
@Inject
- TimeoutMonitorImpl(@Scheduler ScheduledExecutorService scheduler,
+ TimeoutMonitorImpl(TaskScheduler scheduler,
@IoExecutor Executor ioExecutor, Clock clock) {
this.scheduler = scheduler;
this.ioExecutor = ioExecutor;
@@ -74,7 +73,7 @@ class TimeoutMonitorImpl implements TimeoutMonitor {
if (toCancel != null) toCancel.cancel(false);
}
- @Scheduler
+ // Scheduler
private void checkTimeouts() {
ioExecutor.execute(() -> {
List
* We can not do this within one database {@link Transaction},
* because fetching can take a long time
* and we can not block the database that long.
@@ -491,9 +494,9 @@ class FeedManagerImpl implements FeedManager, EventListener, OpenDatabaseHook,
private Comparator