diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginCallback.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginCallback.java index 1b149cde1..3c0f3ca4d 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginCallback.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginCallback.java @@ -8,6 +8,8 @@ import org.briarproject.bramble.api.plugin.event.TransportStateEvent; import org.briarproject.bramble.api.properties.TransportProperties; import org.briarproject.bramble.api.settings.Settings; +import java.util.Collection; + /** * An interface through which a transport plugin interacts with the rest of * the application. @@ -25,6 +27,11 @@ public interface PluginCallback extends ConnectionHandler { */ TransportProperties getLocalProperties(); + /** + * Returns the plugin's remote transport properties. + */ + Collection getRemoteProperties(); + /** * Merges the given settings with the plugin's settings */ diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java index f2d0d6a72..3b9479565 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java @@ -1,6 +1,7 @@ package org.briarproject.bramble.plugin; import org.briarproject.bramble.api.connection.ConnectionManager; +import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.lifecycle.IoExecutor; @@ -44,6 +45,7 @@ import java.util.logging.Logger; import javax.annotation.concurrent.ThreadSafe; import javax.inject.Inject; +import static java.util.Collections.emptyList; import static java.util.logging.Level.FINE; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; @@ -303,6 +305,18 @@ class PluginManagerImpl implements PluginManager, Service { } } + @Override + public Collection getRemoteProperties() { + try { + Map remote = + transportPropertyManager.getRemoteProperties(id); + return remote.values(); + } catch (DbException e) { + logException(LOG, WARNING, e); + return emptyList(); + } + } + @Override public void mergeSettings(Settings s) { PluginManagerImpl.this.mergeSettings(s, id.getString()); diff --git a/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java b/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java index 1ae844f7b..909a2f858 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java @@ -22,11 +22,13 @@ import java.net.InetSocketAddress; import java.net.NetworkInterface; import java.net.ServerSocket; import java.net.Socket; +import java.util.Collection; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.atomic.AtomicBoolean; import static java.net.NetworkInterface.getNetworkInterfaces; +import static java.util.Collections.emptyList; import static java.util.Collections.list; import static java.util.concurrent.Executors.newCachedThreadPool; import static java.util.concurrent.TimeUnit.SECONDS; @@ -320,6 +322,11 @@ public class LanTcpPluginTest extends BrambleTestCase { return local; } + @Override + public Collection getRemoteProperties() { + return emptyList(); + } + @Override public void mergeSettings(Settings s) { } diff --git a/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/TestPluginCallback.java b/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/TestPluginCallback.java index aeb5a9ee9..b25038bc8 100644 --- a/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/TestPluginCallback.java +++ b/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/TestPluginCallback.java @@ -9,6 +9,10 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection; import org.briarproject.bramble.api.properties.TransportProperties; import org.briarproject.bramble.api.settings.Settings; +import java.util.Collection; + +import static java.util.Collections.emptyList; + @NotNullByDefault public class TestPluginCallback implements PluginCallback { @@ -22,6 +26,11 @@ public class TestPluginCallback implements PluginCallback { return new TransportProperties(); } + @Override + public Collection getRemoteProperties() { + return emptyList(); + } + @Override public void mergeSettings(Settings s) { }