diff --git a/tracker/src/main/groovy/com/muwire/tracker/SwarmManager.groovy b/tracker/src/main/groovy/com/muwire/tracker/SwarmManager.groovy index 3f4cf8bc..51c633ee 100644 --- a/tracker/src/main/groovy/com/muwire/tracker/SwarmManager.groovy +++ b/tracker/src/main/groovy/com/muwire/tracker/SwarmManager.groovy @@ -46,6 +46,10 @@ class SwarmManager { swarm.add(e.results[0].sender) } + int countSwarms() { + swarms.size() + } + void track(InfoHash infoHash) { Swarm swarm = swarms.computeIfAbsent(infoHash, {new Swarm(it)} as Function) if (swarm.needsQuery()) { @@ -61,4 +65,9 @@ class SwarmManager { originator : core.me, sig : sig.data, queryTime : timestamp, sig2 : DataUtil.signUUID(uuid, timestamp, core.spk))) } } + + boolean forget(InfoHash infoHash) { + Swarm swarm = swarms.remove(infoHash) + swarm != null + } } diff --git a/tracker/src/main/groovy/com/muwire/tracker/TrackerService.java b/tracker/src/main/groovy/com/muwire/tracker/TrackerService.java index 4ace8c46..2821cd3b 100644 --- a/tracker/src/main/groovy/com/muwire/tracker/TrackerService.java +++ b/tracker/src/main/groovy/com/muwire/tracker/TrackerService.java @@ -3,4 +3,5 @@ package com.muwire.tracker; public interface TrackerService { public TrackerStatus status(); public void track(String infoHash); + public boolean forget(String infoHash); } diff --git a/tracker/src/main/groovy/com/muwire/tracker/TrackerServiceImpl.groovy b/tracker/src/main/groovy/com/muwire/tracker/TrackerServiceImpl.groovy index 2790c146..c15e3b24 100644 --- a/tracker/src/main/groovy/com/muwire/tracker/TrackerServiceImpl.groovy +++ b/tracker/src/main/groovy/com/muwire/tracker/TrackerServiceImpl.groovy @@ -25,6 +25,7 @@ class TrackerServiceImpl implements TrackerService { public TrackerStatus status() { status.connections = core.getConnectionManager().getConnections().size() + status.swarms = swarmManager.countSwarms() status } @@ -38,4 +39,10 @@ class TrackerServiceImpl implements TrackerService { InfoHash ih = new InfoHash(Base64.decode(infoHash)) swarmManager.track(ih) } + + @Override + public boolean forget(String infoHash) { + InfoHash ih = new InfoHash(Base64.decode(infoHash)) + swarmManager.forget(ih) + } }