diff --git a/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java b/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java index e8cf818336..f12c95b9fd 100644 --- a/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java +++ b/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java @@ -32,6 +32,7 @@ import bisq.common.ClockWatcher; import bisq.common.Timer; import bisq.common.UserThread; import bisq.common.app.Capabilities; +import bisq.common.app.Capability; import bisq.common.config.Config; import bisq.common.persistence.PersistenceManager; import bisq.common.proto.persistable.PersistedDataHost; @@ -206,6 +207,21 @@ public class PeerManager implements ConnectionListener, PersistedDataHost { } + public boolean peerHasCapability(NodeAddress peersNodeAddress, Capability capability) { + return findPeersCapabilities(peersNodeAddress) + .map(capabilities -> capabilities.contains(capability)) + .orElse(false); + } + + // TODO persist Capabilities + public Optional findPeersCapabilities(NodeAddress peersNodeAddress) { + return networkNode.getConfirmedConnections().stream() + .filter(c -> c.getPeersNodeAddressProperty().get() != null) + .filter(c -> c.getPeersNodeAddressProperty().get().equals(peersNodeAddress)) + .map(Connection::getCapabilities) + .findAny(); + } + /////////////////////////////////////////////////////////////////////////////////////////// // ConnectionListener implementation ///////////////////////////////////////////////////////////////////////////////////////////