Move BitcoindRpcAppConfig into the bitcoind-rpc project (#3610)

This commit is contained in:
Chris Stewart 2021-08-27 06:43:31 -05:00 committed by GitHub
parent 704b02ae6c
commit 0746b14331
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 55 additions and 38 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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}

View file

@ -1,4 +1,4 @@
package org.bitcoins.node
package org.bitcoins.core.api.node
import org.bitcoins.crypto.StringFactory

View file

@ -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

View file

@ -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}

View file

@ -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}

View file

@ -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 */

View file

@ -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

View file

@ -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

View file

@ -592,6 +592,7 @@ object Deps {
}
val walletServerTest = List(
Compile.typesafeConfig,
Test.scalaMock,
Test.akkaHttpTestkit,
Test.akkaStream

View file

@ -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

View file

@ -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