From 0746b1433189ea23894c74475a67750e98f6297f Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Fri, 27 Aug 2021 06:43:31 -0500 Subject: [PATCH] Move BitcoindRpcAppConfig into the bitcoind-rpc project (#3610) --- .../org/bitcoins/bundle/gui/LandingPane.scala | 2 +- .../bundle/gui/LandingPaneModel.scala | 4 +-- .../org/bitcoins/scripts/ScanBitcoind.scala | 4 +-- .../server/BitcoindRpcAppConfigTest.scala | 2 +- .../bitcoins/server/BitcoinSAppConfig.scala | 1 + .../bitcoins/server/BitcoinSServerMain.scala | 9 ++++-- .../rpc/config}/BitcoindRpcAppConfig.scala | 23 ++------------- .../util/AppConfigFactoryActorSystem.scala | 2 +- .../bitcoins/core/api}/node/NodeType.scala | 2 +- .../org/bitcoins/node/NeutrinoNode.scala | 1 + .../main/scala/org/bitcoins/node/Node.scala | 2 +- .../scala/org/bitcoins/node/SpvNode.scala | 1 + .../bitcoins/node/config/NodeAppConfig.scala | 29 ++++++++++++++++--- .../networking/peer/DataMessageHandler.scala | 3 +- .../networking/peer/PeerMessageReceiver.scala | 3 +- project/Deps.scala | 1 + .../node/NodeTestWithCachedBitcoind.scala | 3 +- .../bitcoins/testkit/node/NodeUnitTest.scala | 1 + 18 files changed, 55 insertions(+), 38 deletions(-) rename {app/server/src/main/scala/org/bitcoins/server => bitcoind-rpc/src/main/scala/org/bitcoins/rpc/config}/BitcoindRpcAppConfig.scala (89%) rename {app/server/src/main/scala/org/bitcoins/server => bitcoind-rpc/src/main/scala/org/bitcoins/rpc}/util/AppConfigFactoryActorSystem.scala (89%) rename {node/src/main/scala/org/bitcoins => core/src/main/scala/org/bitcoins/core/api}/node/NodeType.scala (97%) diff --git a/app/bundle/src/main/scala/org/bitcoins/bundle/gui/LandingPane.scala b/app/bundle/src/main/scala/org/bitcoins/bundle/gui/LandingPane.scala index 27c277e3bc..b4b1e8060d 100644 --- a/app/bundle/src/main/scala/org/bitcoins/bundle/gui/LandingPane.scala +++ b/app/bundle/src/main/scala/org/bitcoins/bundle/gui/LandingPane.scala @@ -3,8 +3,8 @@ package org.bitcoins.bundle.gui import akka.actor.ActorSystem import grizzled.slf4j.Logging import org.bitcoins.commons.util.ServerArgParser +import org.bitcoins.core.api.node.NodeType import org.bitcoins.gui._ -import org.bitcoins.node.NodeType import org.bitcoins.server.BitcoinSAppConfig import scalafx.geometry._ import scalafx.scene.control.TabPane.TabClosingPolicy diff --git a/app/bundle/src/main/scala/org/bitcoins/bundle/gui/LandingPaneModel.scala b/app/bundle/src/main/scala/org/bitcoins/bundle/gui/LandingPaneModel.scala index cd19518b06..9cd51748c1 100644 --- a/app/bundle/src/main/scala/org/bitcoins/bundle/gui/LandingPaneModel.scala +++ b/app/bundle/src/main/scala/org/bitcoins/bundle/gui/LandingPaneModel.scala @@ -6,9 +6,9 @@ import grizzled.slf4j.Logging import org.bitcoins.bundle.gui.BundleGUI._ import org.bitcoins.commons.config.AppConfig import org.bitcoins.commons.util.{DatadirUtil, ServerArgParser} +import org.bitcoins.core.api.node.InternalImplementationNodeType import org.bitcoins.gui._ -import org.bitcoins.node.NodeType._ -import org.bitcoins.node._ +import org.bitcoins.core.api.node.NodeType._ import org.bitcoins.server.BitcoinSAppConfig.toNodeConf import org.bitcoins.server._ import scalafx.beans.property.ObjectProperty diff --git a/app/scripts/src/main/scala/org/bitcoins/scripts/ScanBitcoind.scala b/app/scripts/src/main/scala/org/bitcoins/scripts/ScanBitcoind.scala index 51e37d198a..7491820031 100644 --- a/app/scripts/src/main/scala/org/bitcoins/scripts/ScanBitcoind.scala +++ b/app/scripts/src/main/scala/org/bitcoins/scripts/ScanBitcoind.scala @@ -6,9 +6,9 @@ import akka.stream.scaladsl.{Keep, Sink, Source} import org.bitcoins.core.protocol.blockchain.Block import org.bitcoins.core.protocol.transaction.WitnessTransaction import org.bitcoins.rpc.client.common.BitcoindRpcClient -import org.bitcoins.server.BitcoindRpcAppConfig +import org.bitcoins.rpc.config.BitcoindRpcAppConfig import org.bitcoins.server.routes.BitcoinSRunner -import org.bitcoins.server.util.{BitcoinSAppScalaDaemon} +import org.bitcoins.server.util.BitcoinSAppScalaDaemon import scala.concurrent.Future diff --git a/app/server-test/src/test/scala/org/bitcoins/server/BitcoindRpcAppConfigTest.scala b/app/server-test/src/test/scala/org/bitcoins/server/BitcoindRpcAppConfigTest.scala index 42e0bd4c33..eb528e1a67 100644 --- a/app/server-test/src/test/scala/org/bitcoins/server/BitcoindRpcAppConfigTest.scala +++ b/app/server-test/src/test/scala/org/bitcoins/server/BitcoindRpcAppConfigTest.scala @@ -1,9 +1,9 @@ package org.bitcoins.server import java.nio.file._ - import com.typesafe.config.ConfigFactory import org.bitcoins.core.config._ +import org.bitcoins.rpc.config.BitcoindRpcAppConfig import org.bitcoins.testkit.util.BitcoinSAsyncTest import scala.reflect.io.Directory diff --git a/app/server/src/main/scala/org/bitcoins/server/BitcoinSAppConfig.scala b/app/server/src/main/scala/org/bitcoins/server/BitcoinSAppConfig.scala index 1289ad8bb0..58970b136e 100644 --- a/app/server/src/main/scala/org/bitcoins/server/BitcoinSAppConfig.scala +++ b/app/server/src/main/scala/org/bitcoins/server/BitcoinSAppConfig.scala @@ -12,6 +12,7 @@ import org.bitcoins.dlc.node.config.DLCNodeAppConfig import org.bitcoins.dlc.wallet.DLCAppConfig import org.bitcoins.keymanager.config.KeyManagerAppConfig import org.bitcoins.node.config.NodeAppConfig +import org.bitcoins.rpc.config.BitcoindRpcAppConfig import org.bitcoins.tor.config.TorAppConfig import org.bitcoins.wallet.config.WalletAppConfig diff --git a/app/server/src/main/scala/org/bitcoins/server/BitcoinSServerMain.scala b/app/server/src/main/scala/org/bitcoins/server/BitcoinSServerMain.scala index 98b47f6ff1..576859b155 100644 --- a/app/server/src/main/scala/org/bitcoins/server/BitcoinSServerMain.scala +++ b/app/server/src/main/scala/org/bitcoins/server/BitcoinSServerMain.scala @@ -9,7 +9,12 @@ import org.bitcoins.chain.models._ import org.bitcoins.commons.util.{DatadirParser, ServerArgParser} import org.bitcoins.core.api.chain.ChainApi import org.bitcoins.core.api.feeprovider.FeeRateApi -import org.bitcoins.core.api.node.NodeApi +import org.bitcoins.core.api.node.{ + ExternalImplementationNodeType, + InternalImplementationNodeType, + NodeApi, + NodeType +} import org.bitcoins.core.util.NetworkUtil import org.bitcoins.core.wallet.fee.SatoshisPerVirtualByte import org.bitcoins.dlc.node.DLCNode @@ -21,7 +26,7 @@ import org.bitcoins.feeprovider._ import org.bitcoins.node._ import org.bitcoins.node.config.NodeAppConfig import org.bitcoins.node.models.Peer -import org.bitcoins.rpc.config.ZmqConfig +import org.bitcoins.rpc.config.{BitcoindRpcAppConfig, ZmqConfig} import org.bitcoins.server.routes.{BitcoinSServerRunner, Server} import org.bitcoins.server.util.BitcoinSAppScalaDaemon import org.bitcoins.tor.config.TorAppConfig diff --git a/app/server/src/main/scala/org/bitcoins/server/BitcoindRpcAppConfig.scala b/bitcoind-rpc/src/main/scala/org/bitcoins/rpc/config/BitcoindRpcAppConfig.scala similarity index 89% rename from app/server/src/main/scala/org/bitcoins/server/BitcoindRpcAppConfig.scala rename to bitcoind-rpc/src/main/scala/org/bitcoins/rpc/config/BitcoindRpcAppConfig.scala index 5176d34f67..f1c4d67b0a 100644 --- a/app/server/src/main/scala/org/bitcoins/server/BitcoindRpcAppConfig.scala +++ b/bitcoind-rpc/src/main/scala/org/bitcoins/rpc/config/BitcoindRpcAppConfig.scala @@ -1,13 +1,10 @@ -package org.bitcoins.server +package org.bitcoins.rpc.config import akka.actor.ActorSystem import com.typesafe.config.Config import org.bitcoins.commons.config.{AppConfig, ConfigOps} -import org.bitcoins.node.NodeType -import org.bitcoins.node.config.NodeAppConfig import org.bitcoins.rpc.client.common.{BitcoindRpcClient, BitcoindVersion} -import org.bitcoins.rpc.config._ -import org.bitcoins.server.util.AppConfigFactoryActorSystem +import org.bitcoins.rpc.util.AppConfigFactoryActorSystem import org.bitcoins.tor.Socks5ProxyParams import org.bitcoins.tor.config.TorAppConfig @@ -37,21 +34,7 @@ case class BitcoindRpcAppConfig( protected[bitcoins] def baseDatadir: Path = directory - lazy val nodeConf: NodeAppConfig = NodeAppConfig(directory, confs: _*) - - override def start(): Future[Unit] = { - nodeConf.nodeType match { - case NodeType.BitcoindBackend => - binaryOpt match { - case Some(_) => - client.start().map(_ => ()) - case None => - Future.unit - } - case NodeType.SpvNode | NodeType.NeutrinoNode | NodeType.FullNode => - Future.unit - } - } + override def start(): Future[Unit] = Future.unit override def stop(): Future[Unit] = Future.unit diff --git a/app/server/src/main/scala/org/bitcoins/server/util/AppConfigFactoryActorSystem.scala b/bitcoind-rpc/src/main/scala/org/bitcoins/rpc/util/AppConfigFactoryActorSystem.scala similarity index 89% rename from app/server/src/main/scala/org/bitcoins/server/util/AppConfigFactoryActorSystem.scala rename to bitcoind-rpc/src/main/scala/org/bitcoins/rpc/util/AppConfigFactoryActorSystem.scala index d9a10d95dd..d12a7fab68 100644 --- a/app/server/src/main/scala/org/bitcoins/server/util/AppConfigFactoryActorSystem.scala +++ b/bitcoind-rpc/src/main/scala/org/bitcoins/rpc/util/AppConfigFactoryActorSystem.scala @@ -1,4 +1,4 @@ -package org.bitcoins.server.util +package org.bitcoins.rpc.util import akka.actor.ActorSystem import org.bitcoins.commons.config.{AppConfig, AppConfigFactoryBase} diff --git a/node/src/main/scala/org/bitcoins/node/NodeType.scala b/core/src/main/scala/org/bitcoins/core/api/node/NodeType.scala similarity index 97% rename from node/src/main/scala/org/bitcoins/node/NodeType.scala rename to core/src/main/scala/org/bitcoins/core/api/node/NodeType.scala index da11b6979c..6c87eb3602 100644 --- a/node/src/main/scala/org/bitcoins/node/NodeType.scala +++ b/core/src/main/scala/org/bitcoins/core/api/node/NodeType.scala @@ -1,4 +1,4 @@ -package org.bitcoins.node +package org.bitcoins.core.api.node import org.bitcoins.crypto.StringFactory diff --git a/node/src/main/scala/org/bitcoins/node/NeutrinoNode.scala b/node/src/main/scala/org/bitcoins/node/NeutrinoNode.scala index a61e4b64bd..a7483a5dd6 100644 --- a/node/src/main/scala/org/bitcoins/node/NeutrinoNode.scala +++ b/node/src/main/scala/org/bitcoins/node/NeutrinoNode.scala @@ -10,6 +10,7 @@ import org.bitcoins.core.api.chain.db.{ CompactFilterDb, CompactFilterHeaderDb } +import org.bitcoins.core.api.node.NodeType import org.bitcoins.core.protocol.BlockStamp import org.bitcoins.node.config.NodeAppConfig import org.bitcoins.node.models.Peer diff --git a/node/src/main/scala/org/bitcoins/node/Node.scala b/node/src/main/scala/org/bitcoins/node/Node.scala index 4e80df1dfd..dfa56becb6 100644 --- a/node/src/main/scala/org/bitcoins/node/Node.scala +++ b/node/src/main/scala/org/bitcoins/node/Node.scala @@ -10,7 +10,7 @@ import org.bitcoins.chain.models.{ CompactFilterHeaderDAO } import org.bitcoins.core.api.chain._ -import org.bitcoins.core.api.node.NodeApi +import org.bitcoins.core.api.node.{NodeApi, NodeType} import org.bitcoins.core.p2p.{NetworkPayload, ServiceIdentifier, TypeIdentifier} import org.bitcoins.core.protocol.transaction.Transaction import org.bitcoins.crypto.{DoubleSha256Digest, DoubleSha256DigestBE} diff --git a/node/src/main/scala/org/bitcoins/node/SpvNode.scala b/node/src/main/scala/org/bitcoins/node/SpvNode.scala index f117fc1361..d4e2718ea2 100644 --- a/node/src/main/scala/org/bitcoins/node/SpvNode.scala +++ b/node/src/main/scala/org/bitcoins/node/SpvNode.scala @@ -4,6 +4,7 @@ import akka.actor.ActorSystem import org.bitcoins.asyncutil.AsyncUtil import org.bitcoins.chain.config.ChainAppConfig import org.bitcoins.core.api.chain.ChainQueryApi.FilterResponse +import org.bitcoins.core.api.node.NodeType import org.bitcoins.core.bloom.BloomFilter import org.bitcoins.core.protocol.transaction.Transaction import org.bitcoins.core.protocol.{BitcoinAddress, BlockStamp} diff --git a/node/src/main/scala/org/bitcoins/node/config/NodeAppConfig.scala b/node/src/main/scala/org/bitcoins/node/config/NodeAppConfig.scala index 39c733350a..8096aa1392 100644 --- a/node/src/main/scala/org/bitcoins/node/config/NodeAppConfig.scala +++ b/node/src/main/scala/org/bitcoins/node/config/NodeAppConfig.scala @@ -9,13 +9,15 @@ import org.bitcoins.chain.models.{ CompactFilterDAO, CompactFilterHeaderDAO } -import org.bitcoins.commons.config.AppConfigFactory +import org.bitcoins.core.api.node.NodeType import org.bitcoins.core.util.Mutable import org.bitcoins.db.{DbAppConfig, JdbcProfileComponent} import org.bitcoins.node._ import org.bitcoins.node.db.NodeDbManagement import org.bitcoins.node.models.Peer import org.bitcoins.node.networking.peer.DataMessageHandler +import org.bitcoins.rpc.config.BitcoindRpcAppConfig +import org.bitcoins.rpc.util.AppConfigFactoryActorSystem import org.bitcoins.tor.config.TorAppConfig import org.bitcoins.tor.{Socks5ProxyParams, TorParams} @@ -28,7 +30,7 @@ import scala.concurrent.{ExecutionContext, Future} */ case class NodeAppConfig( private val directory: Path, - private val confs: Config*)(implicit override val ec: ExecutionContext) + private val confs: Config*)(implicit val system: ActorSystem) extends DbAppConfig with NodeDbManagement with JdbcProfileComponent[NodeAppConfig] { @@ -40,6 +42,8 @@ case class NodeAppConfig( configs: Seq[Config]): NodeAppConfig = NodeAppConfig(directory, configs: _*) + implicit override def ec: ExecutionContext = system.dispatcher + protected[bitcoins] def baseDatadir: Path = directory override def appConfig: NodeAppConfig = this @@ -58,6 +62,23 @@ case class NodeAppConfig( override def start(): Future[Unit] = { for { _ <- super.start() + _ <- { + nodeType match { + case NodeType.BitcoindBackend => + val bitcoindRpcAppConfig = + BitcoindRpcAppConfig(directory, confs: _*)(system) + bitcoindRpcAppConfig.binaryOpt match { + case Some(_) => + bitcoindRpcAppConfig.client + .start() + .map(_ => ()) + case None => + Future.unit + } + case NodeType.SpvNode | NodeType.NeutrinoNode | NodeType.FullNode => + Future.unit + } + } } yield { logger.debug(s"Initializing node setup") val numMigrations = migrate() @@ -114,7 +135,7 @@ case class NodeAppConfig( } } -object NodeAppConfig extends AppConfigFactory[NodeAppConfig] { +object NodeAppConfig extends AppConfigFactoryActorSystem[NodeAppConfig] { override val moduleName: String = "node" @@ -122,7 +143,7 @@ object NodeAppConfig extends AppConfigFactory[NodeAppConfig] { * data directory and given list of configuration overrides. */ override def fromDatadir(datadir: Path, confs: Vector[Config])(implicit - ec: ExecutionContext): NodeAppConfig = + system: ActorSystem): NodeAppConfig = NodeAppConfig(datadir, confs: _*) /** Creates either a neutrino node or a spv node based on the [[NodeAppConfig]] given */ diff --git a/node/src/main/scala/org/bitcoins/node/networking/peer/DataMessageHandler.scala b/node/src/main/scala/org/bitcoins/node/networking/peer/DataMessageHandler.scala index 1c19e14767..61168d0692 100644 --- a/node/src/main/scala/org/bitcoins/node/networking/peer/DataMessageHandler.scala +++ b/node/src/main/scala/org/bitcoins/node/networking/peer/DataMessageHandler.scala @@ -3,12 +3,13 @@ package org.bitcoins.node.networking.peer import akka.Done import org.bitcoins.chain.config.ChainAppConfig import org.bitcoins.core.api.chain.ChainApi +import org.bitcoins.core.api.node.NodeType import org.bitcoins.core.gcs.BlockFilter import org.bitcoins.core.p2p._ import org.bitcoins.crypto.DoubleSha256DigestBE import org.bitcoins.node.config.NodeAppConfig import org.bitcoins.node.models.BroadcastAbleTransactionDAO -import org.bitcoins.node.{Node, NodeType, P2PLogger} +import org.bitcoins.node.{Node, P2PLogger} import scala.concurrent.{ExecutionContext, Future, Promise} import scala.util.Try diff --git a/node/src/main/scala/org/bitcoins/node/networking/peer/PeerMessageReceiver.scala b/node/src/main/scala/org/bitcoins/node/networking/peer/PeerMessageReceiver.scala index fe4cf131e5..df09d85945 100644 --- a/node/src/main/scala/org/bitcoins/node/networking/peer/PeerMessageReceiver.scala +++ b/node/src/main/scala/org/bitcoins/node/networking/peer/PeerMessageReceiver.scala @@ -1,12 +1,13 @@ package org.bitcoins.node.networking.peer import akka.actor.ActorRefFactory +import org.bitcoins.core.api.node.NodeType import org.bitcoins.core.p2p._ import org.bitcoins.node.config.NodeAppConfig import org.bitcoins.node.models.Peer import org.bitcoins.node.networking.P2PClient import org.bitcoins.node.networking.peer.PeerMessageReceiverState._ -import org.bitcoins.node.{Node, NodeType, P2PLogger} +import org.bitcoins.node.{Node, P2PLogger} import scala.concurrent.Future diff --git a/project/Deps.scala b/project/Deps.scala index a597a63f18..9dd50589d1 100644 --- a/project/Deps.scala +++ b/project/Deps.scala @@ -592,6 +592,7 @@ object Deps { } val walletServerTest = List( + Compile.typesafeConfig, Test.scalaMock, Test.akkaHttpTestkit, Test.akkaStream diff --git a/testkit/src/main/scala/org/bitcoins/testkit/node/NodeTestWithCachedBitcoind.scala b/testkit/src/main/scala/org/bitcoins/testkit/node/NodeTestWithCachedBitcoind.scala index 8a8c5abbd1..fd7ca1fe33 100644 --- a/testkit/src/main/scala/org/bitcoins/testkit/node/NodeTestWithCachedBitcoind.scala +++ b/testkit/src/main/scala/org/bitcoins/testkit/node/NodeTestWithCachedBitcoind.scala @@ -1,8 +1,9 @@ package org.bitcoins.testkit.node import akka.actor.ActorSystem +import org.bitcoins.core.api.node.NodeType import org.bitcoins.node.models.Peer -import org.bitcoins.node.{Node, NodeType} +import org.bitcoins.node.Node import org.bitcoins.rpc.client.common.BitcoindRpcClient import org.bitcoins.rpc.client.v21.BitcoindV21RpcClient import org.bitcoins.server.BitcoinSAppConfig diff --git a/testkit/src/main/scala/org/bitcoins/testkit/node/NodeUnitTest.scala b/testkit/src/main/scala/org/bitcoins/testkit/node/NodeUnitTest.scala index aed489c12c..b64ba28d7f 100644 --- a/testkit/src/main/scala/org/bitcoins/testkit/node/NodeUnitTest.scala +++ b/testkit/src/main/scala/org/bitcoins/testkit/node/NodeUnitTest.scala @@ -5,6 +5,7 @@ import org.bitcoins.chain.blockchain.ChainHandlerCached import org.bitcoins.chain.config.ChainAppConfig import org.bitcoins.chain.models._ import org.bitcoins.core.api.chain.ChainApi +import org.bitcoins.core.api.node.NodeType import org.bitcoins.node._ import org.bitcoins.node.config.NodeAppConfig import org.bitcoins.node.models.Peer