diff --git a/server/src/main/java/com/usatiuk/dhfs/storage/objects/repository/distributed/RemoteHostManager.java b/server/src/main/java/com/usatiuk/dhfs/storage/objects/repository/distributed/RemoteHostManager.java index 09dc393a..a58c5b24 100644 --- a/server/src/main/java/com/usatiuk/dhfs/storage/objects/repository/distributed/RemoteHostManager.java +++ b/server/src/main/java/com/usatiuk/dhfs/storage/objects/repository/distributed/RemoteHostManager.java @@ -20,7 +20,6 @@ import org.eclipse.microprofile.config.inject.ConfigProperty; import java.io.IOException; import java.util.*; import java.util.concurrent.TimeUnit; -import java.util.function.Function; @ApplicationScoped public class RemoteHostManager { @@ -30,6 +29,9 @@ public class RemoteHostManager { @Inject PersistentRemoteHostsService persistentRemoteHostsService; + @Inject + SyncHandler syncHandler; + TransientPeersState _transientPeersState = new TransientPeersState(); void init(@Observes @Priority(350) StartupEvent event) throws IOException { @@ -57,9 +59,6 @@ public class RemoteHostManager { } } - private final ArrayList> _connectionSuccessHandlers = new ArrayList<>(); - private final ArrayList> _connectionErrorHandlers = new ArrayList<>(); - public void handleConnectionSuccess(String host) { Log.info("Connected to " + host); if (_transientPeersState.runReadLocked(d -> d.getStates().getOrDefault( @@ -71,9 +70,7 @@ public class RemoteHostManager { curState.setState(TransientPeersStateData.TransientPeerState.ConnectionState.REACHABLE); return null; }); - for (var h : _connectionSuccessHandlers) { - h.apply(host); - } + syncHandler.doInitialResync(host); } public void handleConnectionError(String host) { @@ -84,18 +81,8 @@ public class RemoteHostManager { curState.setState(TransientPeersStateData.TransientPeerState.ConnectionState.UNREACHABLE); return null; }); - for (var h : _connectionErrorHandlers) { - h.apply(host); - } } - public void addConnectionSuccessHandler(Function handler) { - _connectionSuccessHandlers.add(handler); - } - - public void addConnectionErrorHandler(Function handler) { - _connectionErrorHandlers.add(handler); - } @FunctionalInterface public interface ClientFunction { diff --git a/server/src/main/java/com/usatiuk/dhfs/storage/objects/repository/distributed/SyncHandler.java b/server/src/main/java/com/usatiuk/dhfs/storage/objects/repository/distributed/SyncHandler.java index caa332cd..83ac7a22 100644 --- a/server/src/main/java/com/usatiuk/dhfs/storage/objects/repository/distributed/SyncHandler.java +++ b/server/src/main/java/com/usatiuk/dhfs/storage/objects/repository/distributed/SyncHandler.java @@ -40,17 +40,7 @@ public class SyncHandler { @Inject Instance conflictResolvers; - void init(@Observes @Priority(340) StartupEvent event) throws IOException { - remoteHostManager.addConnectionSuccessHandler((host) -> { - doInitialResync(host); - return null; - }); - } - - void shutdown(@Observes @Priority(240) ShutdownEvent event) throws IOException { - } - - private void doInitialResync(String host) { + public void doInitialResync(String host) { var got = remoteObjectServiceClient.getIndex(host); for (var h : got.getObjectsList()) { handleRemoteUpdate(IndexUpdatePush.newBuilder()