X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fquelaton%2FActiveSubscriptions.java;h=43317d01e4292d75ad843e36187e166274a217a8;hb=979b46ce2bec0482076a1d340419e5ba60acc30f;hp=241253d7496b5cee4d5ca65bb1bac40ad53b43b0;hpb=35b4749027c92138a5cce39a0a6e2a3718f76105;p=jFCPlib.git diff --git a/src/main/java/net/pterodactylus/fcp/quelaton/ActiveSubscriptions.java b/src/main/java/net/pterodactylus/fcp/quelaton/ActiveSubscriptions.java index 241253d..43317d0 100644 --- a/src/main/java/net/pterodactylus/fcp/quelaton/ActiveSubscriptions.java +++ b/src/main/java/net/pterodactylus/fcp/quelaton/ActiveSubscriptions.java @@ -23,8 +23,13 @@ import net.pterodactylus.fcp.SubscribedUSKUpdate; */ public class ActiveSubscriptions { + private final Supplier unsubscribeUskCommandSupplier; private final Map subscriptions = Collections.synchronizedMap(new HashMap<>()); + public ActiveSubscriptions(Supplier unsubscribeUskCommandSupplier) { + this.unsubscribeUskCommandSupplier = unsubscribeUskCommandSupplier; + } + public void renew(Consumer fcpEventSender, Supplier subscribeUskCommandSupplier) throws ExecutionException, InterruptedException { fcpEventSender.accept(createFcpListener()); @@ -58,7 +63,7 @@ public class ActiveSubscriptions { return remoteUskSubscription; } - private static class RemoteUskSubscription implements UskSubscription { + private class RemoteUskSubscription implements UskSubscription { private final String identifier; private final String uri; @@ -99,6 +104,11 @@ public class ActiveSubscriptions { } } + public void cancel() throws ExecutionException, InterruptedException { + unsubscribeUskCommandSupplier.get().identifier(identifier).execute().get(); + subscriptions.remove(identifier); + } + } }