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
|
package io.emeraldpay.dshackle.upstream.calls
|
||||||
|
|
||||||
import io.emeraldpay.dshackle.quorum.AlwaysQuorum
|
import io.emeraldpay.dshackle.quorum.AlwaysQuorum
|
||||||
import io.emeraldpay.dshackle.quorum.BroadcastQuorum
|
|
||||||
import io.emeraldpay.dshackle.quorum.CallQuorum
|
import io.emeraldpay.dshackle.quorum.CallQuorum
|
||||||
|
import io.emeraldpay.dshackle.quorum.JsonBroadcastQuorum
|
||||||
import io.emeraldpay.dshackle.upstream.ethereum.rpc.RpcException
|
import io.emeraldpay.dshackle.upstream.ethereum.rpc.RpcException
|
||||||
|
|
||||||
class DefaultRippleMethods : CallMethods {
|
class DefaultRippleMethods : CallMethods {
|
||||||
@@ -66,7 +66,7 @@ class DefaultRippleMethods : CallMethods {
|
|||||||
|
|
||||||
override fun createQuorumFor(method: String): CallQuorum {
|
override fun createQuorumFor(method: String): CallQuorum {
|
||||||
if (add.contains(method)) {
|
if (add.contains(method)) {
|
||||||
return BroadcastQuorum()
|
return JsonBroadcastQuorum()
|
||||||
}
|
}
|
||||||
return AlwaysQuorum()
|
return AlwaysQuorum()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user