Reorganized code into wallet mod/package

This commit is contained in:
Steve Myers
2021-07-03 10:16:02 -07:00
parent f8365cc939
commit 62f18bdc2c
16 changed files with 85 additions and 98 deletions

View File

@@ -1,38 +0,0 @@
package org.bitcoindevkit.bdk
import com.sun.jna.Pointer
import com.sun.jna.PointerType
import org.slf4j.Logger
import org.slf4j.LoggerFactory
abstract class ResultBase<PT : PointerType, RT : Any> internal constructor(private val pointerT: PT) :
LibBase() {
protected open val log: Logger = LoggerFactory.getLogger(ResultBase::class.java)
protected abstract fun err(pointerT: PT): Pointer?
protected abstract fun ok(pointerT: PT): RT
protected abstract fun free(pointerT: PT)
private fun checkErr(pointerT: PT) {
val errPointer = err(pointerT)
val err = errPointer?.getString(0)
libJna.free_string(errPointer)
if (err != null) {
log.error("JnaError: $err")
throw JnaException(JnaError.valueOf(err))
}
}
fun value(): RT {
checkErr(pointerT)
return ok(pointerT)
}
protected fun finalize() {
free(pointerT)
log.debug("$pointerT freed")
}
}

View File

@@ -1,6 +1,10 @@
package org.bitcoindevkit.bdk
package org.bitcoindevkit.bdk.types
import com.sun.jna.Pointer
import org.bitcoindevkit.bdk.FfiResult
import org.bitcoindevkit.bdk.JnaError
import org.bitcoindevkit.bdk.JnaException
import org.bitcoindevkit.bdk.LibBase
import org.slf4j.Logger
import org.slf4j.LoggerFactory

View File

@@ -1,6 +1,7 @@
package org.bitcoindevkit.bdk
package org.bitcoindevkit.bdk.types
import com.sun.jna.Pointer
import org.bitcoindevkit.bdk.LibJna
class StringResult constructor(stringResultPtr: LibJna.FfiResult_char_ptr_t.ByValue) :
Result<LibJna.FfiResult_char_ptr_t.ByValue, String>(stringResultPtr) {

View File

@@ -1,6 +1,7 @@
package org.bitcoindevkit.bdk
package org.bitcoindevkit.bdk.types
import com.sun.jna.Pointer
import org.bitcoindevkit.bdk.LibJna
class VoidResult constructor(voidResultPtr: LibJna.FfiResult_void_t.ByValue) :
Result<LibJna.FfiResult_void_t.ByValue, Unit>(voidResultPtr) {

View File

@@ -3,7 +3,7 @@ package org.bitcoindevkit.bdk
import org.slf4j.Logger
import org.slf4j.LoggerFactory
abstract class BlockchainConfig() : LibBase() {
abstract class BlockchainConfig : LibBase() {
private val log: Logger = LoggerFactory.getLogger(BlockchainConfig::class.java)
abstract val blockchainConfigT: LibJna.BlockchainConfig_t

View File

@@ -3,7 +3,7 @@ package org.bitcoindevkit.bdk
import org.slf4j.Logger
import org.slf4j.LoggerFactory
abstract class DatabaseConfig() : LibBase() {
abstract class DatabaseConfig : LibBase() {
private val log: Logger = LoggerFactory.getLogger(DatabaseConfig::class.java)
abstract val databaseConfigT: LibJna.DatabaseConfig_t
@@ -13,7 +13,7 @@ abstract class DatabaseConfig() : LibBase() {
}
}
class MemoryConfig() : DatabaseConfig() {
class MemoryConfig : DatabaseConfig() {
private val log: Logger = LoggerFactory.getLogger(MemoryConfig::class.java)
override val databaseConfigT = libJna.new_memory_config()

View File

@@ -1,5 +1,9 @@
package org.bitcoindevkit.bdk
package org.bitcoindevkit.bdk.wallet
import org.bitcoindevkit.bdk.JnaError
import org.bitcoindevkit.bdk.JnaException
import org.bitcoindevkit.bdk.LibBase
import org.bitcoindevkit.bdk.LibJna
import org.slf4j.Logger
import org.slf4j.LoggerFactory

View File

@@ -1,5 +1,11 @@
package org.bitcoindevkit.bdk
package org.bitcoindevkit.bdk.wallet
import org.bitcoindevkit.bdk.BlockchainConfig
import org.bitcoindevkit.bdk.DatabaseConfig
import org.bitcoindevkit.bdk.LibBase
import org.bitcoindevkit.bdk.LibJna
import org.bitcoindevkit.bdk.types.StringResult
import org.bitcoindevkit.bdk.types.VoidResult
import org.slf4j.Logger
import org.slf4j.LoggerFactory

View File

@@ -1,6 +1,8 @@
package org.bitcoindevkit.bdk
package org.bitcoindevkit.bdk.wallet
import com.sun.jna.Pointer
import org.bitcoindevkit.bdk.LibJna
import org.bitcoindevkit.bdk.types.Result
class WalletResult constructor(walletResultPtr: LibJna.FfiResult_OpaqueWallet_t.ByValue) :
Result<LibJna.FfiResult_OpaqueWallet_t.ByValue, LibJna.OpaqueWallet_t>(walletResultPtr) {

View File

@@ -1,5 +1,6 @@
package org.bitcoindevkit.bdk
import org.bitcoindevkit.bdk.wallet.Wallet
import org.junit.Assert.*
import org.junit.Test
import org.slf4j.Logger