From f83275e1e79a5c0d7e45236e9bd28274f4f20ad4 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sat, 10 Oct 2020 16:42:14 +0100 Subject: [PATCH] update plugin for batched browse results --- .../java/com/muwire/webui/BrowseManager.java | 16 ++++++++++++---- .../main/java/com/muwire/webui/MuWireClient.java | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/webui/src/main/java/com/muwire/webui/BrowseManager.java b/webui/src/main/java/com/muwire/webui/BrowseManager.java index 9d3e0c7b..ab8f97cb 100644 --- a/webui/src/main/java/com/muwire/webui/BrowseManager.java +++ b/webui/src/main/java/com/muwire/webui/BrowseManager.java @@ -1,16 +1,19 @@ package com.muwire.webui; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.UUID; import com.muwire.core.Core; import com.muwire.core.Persona; import com.muwire.core.search.BrowseStatus; import com.muwire.core.search.BrowseStatusEvent; import com.muwire.core.search.UIBrowseEvent; +import com.muwire.core.search.UIResultBatchEvent; import com.muwire.core.search.UIResultEvent; public class BrowseManager { @@ -28,15 +31,19 @@ public class BrowseManager { return; // hmm browse.status = e.getStatus(); browse.revision++; - if (browse.status == BrowseStatus.FETCHING) + if (browse.status == BrowseStatus.FETCHING) { browse.totalResults = e.getTotalResults(); + browse.uuid = e.getUuid(); + } } - public void onUIResultEvent(UIResultEvent e) { - Browse browse = browses.get(e.getSender()); + public void onUIResultBatchEvent(UIResultBatchEvent e) { + Browse browse = browses.get(e.getResults()[0].getSender()); if (browse == null) return; - browse.results.add(e); + if (!browse.uuid.equals(e.getUuid())) + return; + browse.results.addAll(Arrays.asList(e.getResults())); browse.revision++; } @@ -65,6 +72,7 @@ public class BrowseManager { private volatile BrowseStatus status; private volatile int totalResults; private volatile long revision; + private volatile UUID uuid; private final List results = Collections.synchronizedList(new ArrayList<>()); Browse(Persona persona) { diff --git a/webui/src/main/java/com/muwire/webui/MuWireClient.java b/webui/src/main/java/com/muwire/webui/MuWireClient.java index 4decd08e..3fca94fe 100644 --- a/webui/src/main/java/com/muwire/webui/MuWireClient.java +++ b/webui/src/main/java/com/muwire/webui/MuWireClient.java @@ -164,7 +164,7 @@ public class MuWireClient { BrowseManager browseManager = new BrowseManager(core); core.getEventBus().register(BrowseStatusEvent.class, browseManager); - core.getEventBus().register(UIResultEvent.class, browseManager); + core.getEventBus().register(UIResultBatchEvent.class, browseManager); TrustManager trustManager = new TrustManager(); core.getEventBus().register(TrustEvent.class, trustManager);