Return FfiResult errors as FfiError enum short values
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package org.bitcoindevkit.bdk
|
||||
|
||||
enum class JnaError {
|
||||
enum class FfiError {
|
||||
None,
|
||||
InvalidU32Bytes,
|
||||
Generic,
|
||||
ScriptDoesntHaveAddressForm,
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.bitcoindevkit.bdk
|
||||
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
class FfiException(val err: FfiError) : Exception() {
|
||||
private val log: Logger = LoggerFactory.getLogger(FfiException::class.java)
|
||||
|
||||
init {
|
||||
log.error("JnaError: [{}] {}",err.ordinal, err.name)
|
||||
}
|
||||
|
||||
internal constructor(err: Short) : this(FfiError.values()[err.toInt()])
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
package org.bitcoindevkit.bdk
|
||||
|
||||
class JnaException internal constructor(val err: JnaError) : Exception()
|
||||
@@ -8,7 +8,7 @@ interface LibJna : Library {
|
||||
//
|
||||
// char * ok;
|
||||
//
|
||||
// char * err;
|
||||
// FfiError_t err;
|
||||
//
|
||||
//} FfiResult_char_ptr_t;
|
||||
open class FfiResult_char_ptr_t : Structure() {
|
||||
@@ -19,7 +19,7 @@ interface LibJna : Library {
|
||||
var ok: String = ""
|
||||
|
||||
@JvmField
|
||||
var err: String = ""
|
||||
var err: Short = 0
|
||||
|
||||
override fun getFieldOrder() = listOf("ok", "err")
|
||||
}
|
||||
@@ -30,7 +30,7 @@ interface LibJna : Library {
|
||||
|
||||
// typedef struct {
|
||||
//
|
||||
// char * err;
|
||||
// FfiError_t err;
|
||||
//
|
||||
//} FfiResultVoid_t;
|
||||
open class FfiResultVoid_t : Structure() {
|
||||
@@ -38,7 +38,7 @@ interface LibJna : Library {
|
||||
class ByReference : FfiResultVoid_t(), Structure.ByReference
|
||||
|
||||
@JvmField
|
||||
var err: String = ""
|
||||
var err: Short = 0
|
||||
|
||||
override fun getFieldOrder() = listOf("err")
|
||||
}
|
||||
@@ -89,7 +89,7 @@ interface LibJna : Library {
|
||||
//
|
||||
// OpaqueWallet_t * ok;
|
||||
//
|
||||
// char * err;
|
||||
// FfiError_t err;
|
||||
//
|
||||
// } FfiResult_OpaqueWallet_ptr_t;
|
||||
open class FfiResult_OpaqueWallet_ptr_t : Structure() {
|
||||
@@ -100,7 +100,7 @@ interface LibJna : Library {
|
||||
var ok: OpaqueWallet_t = OpaqueWallet_t()
|
||||
|
||||
@JvmField
|
||||
var err: String = ""
|
||||
var err: Short = 0
|
||||
|
||||
override fun getFieldOrder() = listOf("ok", "err")
|
||||
}
|
||||
@@ -215,7 +215,7 @@ interface LibJna : Library {
|
||||
//
|
||||
// Vec_LocalUtxo_t ok;
|
||||
//
|
||||
// char * err;
|
||||
// FfiError_t err;
|
||||
//
|
||||
// } FfiResult_Vec_LocalUtxo_t;
|
||||
open class FfiResultVec_LocalUtxo_t : Structure() {
|
||||
@@ -227,7 +227,7 @@ interface LibJna : Library {
|
||||
var ok: Vec_LocalUtxo_t = Vec_LocalUtxo_t()
|
||||
|
||||
@JvmField
|
||||
var err: String = ""
|
||||
var err: Short = 0
|
||||
|
||||
override fun getFieldOrder() = listOf("ok", "err")
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.bitcoindevkit.bdk.types
|
||||
|
||||
import org.bitcoindevkit.bdk.JnaError
|
||||
import org.bitcoindevkit.bdk.JnaException
|
||||
import org.bitcoindevkit.bdk.FfiException
|
||||
import org.bitcoindevkit.bdk.LibBase
|
||||
import org.bitcoindevkit.bdk.LibJna
|
||||
import org.slf4j.Logger
|
||||
@@ -16,9 +15,8 @@ class StringResult constructor(private val ffiResultCharPtrT: LibJna.FfiResult_c
|
||||
val err = ffiResultCharPtrT.err
|
||||
val ok = ffiResultCharPtrT.ok
|
||||
when {
|
||||
err.isNotEmpty() -> {
|
||||
log.error("JnaError: $err")
|
||||
throw JnaException(JnaError.valueOf(err))
|
||||
err > 0 -> {
|
||||
throw FfiException(err)
|
||||
}
|
||||
else -> {
|
||||
return ok
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.bitcoindevkit.bdk.types
|
||||
|
||||
import org.bitcoindevkit.bdk.JnaError
|
||||
import org.bitcoindevkit.bdk.JnaException
|
||||
import org.bitcoindevkit.bdk.FfiException
|
||||
import org.bitcoindevkit.bdk.LibBase
|
||||
import org.bitcoindevkit.bdk.LibJna
|
||||
import org.slf4j.Logger
|
||||
@@ -16,9 +15,8 @@ class VoidResult constructor(private val ffiResultVoidT: LibJna.FfiResultVoid_t.
|
||||
val err = ffiResultVoidT.err
|
||||
|
||||
when {
|
||||
err.isNotEmpty() -> {
|
||||
log.error("JnaError: $err")
|
||||
throw JnaException(JnaError.valueOf(err))
|
||||
err > 0 -> {
|
||||
throw FfiException(err)
|
||||
}
|
||||
else -> {
|
||||
return
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.bitcoindevkit.bdk.wallet
|
||||
|
||||
import org.bitcoindevkit.bdk.JnaError
|
||||
import org.bitcoindevkit.bdk.JnaException
|
||||
import org.bitcoindevkit.bdk.FfiException
|
||||
import org.bitcoindevkit.bdk.LibBase
|
||||
import org.bitcoindevkit.bdk.LibJna
|
||||
import org.slf4j.Logger
|
||||
@@ -16,9 +15,8 @@ class VecLocalUtxoResult(private val ffiResultVecLocalUtxoT: LibJna.FfiResultVec
|
||||
val err = ffiResultVecLocalUtxoT.err
|
||||
val ok = ffiResultVecLocalUtxoT.ok
|
||||
when {
|
||||
err .isNotEmpty() -> {
|
||||
log.error("JnaError: $err")
|
||||
throw JnaException(JnaError.valueOf(err))
|
||||
err > 0 -> {
|
||||
throw FfiException(err)
|
||||
}
|
||||
else -> {
|
||||
val first = ok.ptr!!
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.bitcoindevkit.bdk.wallet
|
||||
|
||||
import org.bitcoindevkit.bdk.JnaError
|
||||
import org.bitcoindevkit.bdk.JnaException
|
||||
import org.bitcoindevkit.bdk.FfiException
|
||||
import org.bitcoindevkit.bdk.LibBase
|
||||
import org.bitcoindevkit.bdk.LibJna
|
||||
import org.slf4j.Logger
|
||||
@@ -16,9 +15,8 @@ class WalletResult constructor(private val ffiResultOpaqueWalletPtrT: LibJna.Ffi
|
||||
val err = ffiResultOpaqueWalletPtrT.err
|
||||
val ok = ffiResultOpaqueWalletPtrT.ok
|
||||
when {
|
||||
err.isNotEmpty() -> {
|
||||
log.error("JnaError: $err")
|
||||
throw JnaException(JnaError.valueOf(err))
|
||||
err > 0 -> {
|
||||
throw FfiException(err)
|
||||
}
|
||||
else -> {
|
||||
return ok
|
||||
|
||||
@@ -31,10 +31,10 @@ abstract class LibTest : LibBase() {
|
||||
|
||||
@Test
|
||||
fun walletResultError() {
|
||||
val jnaException = assertThrows(JnaException::class.java) {
|
||||
val jnaException = assertThrows(FfiException::class.java) {
|
||||
Wallet("bad", "bad", blockchainConfig, databaseConfig)
|
||||
}
|
||||
assertEquals(jnaException.err, JnaError.Descriptor)
|
||||
assertEquals(jnaException.err, FfiError.Descriptor)
|
||||
}
|
||||
|
||||
// @Test
|
||||
|
||||
Reference in New Issue
Block a user