From ef2c96cc99a0c78b30aa8cc7dd338c633832fa3b Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 25 Jul 2023 14:34:32 -0500 Subject: [PATCH] Add PeerManagerApi (#5164) --- .../bitcoins/core/api/node/PeerManagerApi.scala | 17 +++++++++++++++++ .../scala/org/bitcoins/node/PeerManager.scala | 5 +++-- 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 core/src/main/scala/org/bitcoins/core/api/node/PeerManagerApi.scala diff --git a/core/src/main/scala/org/bitcoins/core/api/node/PeerManagerApi.scala b/core/src/main/scala/org/bitcoins/core/api/node/PeerManagerApi.scala new file mode 100644 index 0000000000..a90776cfe6 --- /dev/null +++ b/core/src/main/scala/org/bitcoins/core/api/node/PeerManagerApi.scala @@ -0,0 +1,17 @@ +package org.bitcoins.core.api.node + +import scala.concurrent.Future + +trait PeerManagerApi { + + def disconnectPeer(peer: Peer): Future[Unit] + + def connectPeer(peer: Peer): Future[Unit] + + def isConnected(peer: Peer): Future[Boolean] + + def isDisconnected(peer: Peer): Future[Boolean] + + def isInitialized(peer: Peer): Future[Boolean] + +} diff --git a/node/src/main/scala/org/bitcoins/node/PeerManager.scala b/node/src/main/scala/org/bitcoins/node/PeerManager.scala index eff5cba1f8..a3c60e763e 100644 --- a/node/src/main/scala/org/bitcoins/node/PeerManager.scala +++ b/node/src/main/scala/org/bitcoins/node/PeerManager.scala @@ -27,7 +27,7 @@ import org.bitcoins.core.api.chain.db.{ CompactFilterDb, CompactFilterHeaderDb } -import org.bitcoins.core.api.node.{NodeType, Peer} +import org.bitcoins.core.api.node.{NodeType, Peer, PeerManagerApi} import org.bitcoins.core.p2p._ import org.bitcoins.core.protocol.transaction.Transaction import org.bitcoins.core.util.{NetworkUtil, StartStopAsync} @@ -57,6 +57,7 @@ case class PeerManager( nodeAppConfig: NodeAppConfig, chainAppConfig: ChainAppConfig) extends StartStopAsync[PeerManager] + with PeerManagerApi with PeerMessageSenderApi with SourceQueue[NodeStreamMessage] with P2PLogger { @@ -82,7 +83,7 @@ case class PeerManager( def connectedPeerCount: Int = _peerDataMap.size - private def connectPeer(peer: Peer): Future[Unit] = { + override def connectPeer(peer: Peer): Future[Unit] = { finderOpt match { case Some(finder) => require(finder.hasPeer(peer), s"Unknown $peer marked as usable")