From 83bea0c8238a34a68ed6d68aea9cb95dc7452fc7 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Wed, 29 Apr 2020 00:54:05 +0100 Subject: [PATCH] report # of swarms in status, add forget method --- .../main/groovy/com/muwire/tracker/SwarmManager.groovy | 9 +++++++++ .../main/groovy/com/muwire/tracker/TrackerService.java | 1 + .../groovy/com/muwire/tracker/TrackerServiceImpl.groovy | 7 +++++++ 3 files changed, 17 insertions(+) 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) + } }