Fix ripple tx broadcast (#765)
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
package io.emeraldpay.dshackle.quorum
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode
|
||||
import io.emeraldpay.dshackle.upstream.ChainResponse
|
||||
import io.emeraldpay.dshackle.upstream.Upstream
|
||||
import io.emeraldpay.dshackle.upstream.signature.ResponseSigner
|
||||
|
||||
open class JsonBroadcastQuorum() : CallQuorum, ValueAwareQuorum<JsonNode>(JsonNode::class.java) {
|
||||
|
||||
private var result: ChainResponse? = null
|
||||
private var txResponse: JsonNode? = null
|
||||
private var sig: ResponseSigner.Signature? = null
|
||||
|
||||
override fun isResolved(): Boolean {
|
||||
return result != null
|
||||
}
|
||||
|
||||
override fun isFailed(): Boolean {
|
||||
return result == null
|
||||
}
|
||||
|
||||
override fun getResponse(): ChainResponse? {
|
||||
return result
|
||||
}
|
||||
|
||||
override fun getSignature(): ResponseSigner.Signature? {
|
||||
return sig
|
||||
}
|
||||
|
||||
override fun recordValue(
|
||||
response: ChainResponse,
|
||||
responseValue: JsonNode?,
|
||||
signature: ResponseSigner.Signature?,
|
||||
upstream: Upstream,
|
||||
) {
|
||||
if (txResponse == null && responseValue != null) {
|
||||
txResponse = responseValue
|
||||
sig = signature
|
||||
result = response
|
||||
}
|
||||
}
|
||||
|
||||
override fun recordError(
|
||||
errorMessage: String?,
|
||||
signature: ResponseSigner.Signature?,
|
||||
upstream: Upstream,
|
||||
) {
|
||||
resolvers.add(upstream)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "Quorum: Json Broadcast to upstreams"
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package io.emeraldpay.dshackle.upstream.calls
|
||||
|
||||
import io.emeraldpay.dshackle.quorum.AlwaysQuorum
|
||||
import io.emeraldpay.dshackle.quorum.BroadcastQuorum
|
||||
import io.emeraldpay.dshackle.quorum.CallQuorum
|
||||
import io.emeraldpay.dshackle.quorum.JsonBroadcastQuorum
|
||||
import io.emeraldpay.dshackle.upstream.ethereum.rpc.RpcException
|
||||
|
||||
class DefaultRippleMethods : CallMethods {
|
||||
@@ -66,7 +66,7 @@ class DefaultRippleMethods : CallMethods {
|
||||
|
||||
override fun createQuorumFor(method: String): CallQuorum {
|
||||
if (add.contains(method)) {
|
||||
return BroadcastQuorum()
|
||||
return JsonBroadcastQuorum()
|
||||
}
|
||||
return AlwaysQuorum()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user