mirror of
https://github.com/corda/corda.git
synced 2025-06-17 14:48:16 +00:00
Merge branch 'release/os/4.3' into release/os/4.4
# Conflicts: # docs/source/docker-image.rst
This commit is contained in:
@ -6,6 +6,8 @@ import net.corda.core.CordaInternal
|
||||
import net.corda.core.DeleteForDJVM
|
||||
import net.corda.core.contracts.StateRef
|
||||
import net.corda.core.crypto.SecureHash
|
||||
import net.corda.core.identity.AbstractParty
|
||||
import net.corda.core.identity.AnonymousParty
|
||||
import net.corda.core.identity.Party
|
||||
import net.corda.core.identity.PartyAndCertificate
|
||||
import net.corda.core.internal.*
|
||||
@ -120,14 +122,18 @@ abstract class FlowLogic<out T> {
|
||||
* is routed depends on the [Destination] type, including whether this call does any initial communication.
|
||||
*/
|
||||
@Suspendable
|
||||
fun initiateFlow(destination: Destination): FlowSession = stateMachine.initiateFlow(destination)
|
||||
fun initiateFlow(destination: Destination): FlowSession {
|
||||
require(destination is Party || destination is AnonymousParty) { "Unsupported destination type ${destination.javaClass.name}" }
|
||||
return stateMachine.initiateFlow(destination, serviceHub.identityService.wellKnownPartyFromAnonymous(destination as AbstractParty)
|
||||
?: throw IllegalArgumentException("Could not resolve destination: $destination"))
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a communication session with [party]. Subsequently you may send/receive using this session object. Note
|
||||
* that this function does not communicate in itself, the counter-flow will be kicked off by the first send/receive.
|
||||
*/
|
||||
@Suspendable
|
||||
fun initiateFlow(party: Party): FlowSession = stateMachine.initiateFlow(party)
|
||||
fun initiateFlow(party: Party): FlowSession = stateMachine.initiateFlow(party, party)
|
||||
|
||||
/**
|
||||
* Specifies the identity, with certificate, to use for this flow. This will be one of the multiple identities that
|
||||
|
@ -21,6 +21,9 @@ import java.security.SignatureException
|
||||
* Please note that it will *not* store the transaction to the vault unless that is explicitly requested and checkSufficientSignatures is true.
|
||||
* Setting statesToRecord to anything else when checkSufficientSignatures is false will *not* update the vault.
|
||||
*
|
||||
* Attention: At the moment, this flow receives a [SignedTransaction] first thing and then proceeds by invoking a [ResolveTransactionsFlow] subflow.
|
||||
* This is used as a criterion to identify cases, where a counterparty has failed notarising a transact
|
||||
*
|
||||
* @property otherSideSession session to the other side which is calling [SendTransactionFlow].
|
||||
* @property checkSufficientSignatures if true checks all required signatures are present. See [SignedTransaction.verify].
|
||||
* @property statesToRecord which transaction states should be recorded in the vault, if any.
|
||||
|
@ -18,7 +18,7 @@ interface FlowStateMachine<FLOWRETURN> {
|
||||
fun <SUSPENDRETURN : Any> suspend(ioRequest: FlowIORequest<SUSPENDRETURN>, maySkipCheckpoint: Boolean): SUSPENDRETURN
|
||||
|
||||
@Suspendable
|
||||
fun initiateFlow(destination: Destination): FlowSession
|
||||
fun initiateFlow(destination: Destination, wellKnownParty: Party): FlowSession
|
||||
|
||||
fun checkFlowPermission(permissionName: String, extraAuditData: Map<String, String>)
|
||||
|
||||
|
@ -85,7 +85,12 @@ val _inheritableContextSerializationEnv = InheritableThreadLocalToggleField<Seri
|
||||
}
|
||||
}
|
||||
|
||||
private val serializationEnvFields = listOf(_nodeSerializationEnv, _driverSerializationEnv, _contextSerializationEnv, _inheritableContextSerializationEnv)
|
||||
private val serializationEnvFields = listOf(
|
||||
_nodeSerializationEnv,
|
||||
_driverSerializationEnv,
|
||||
_contextSerializationEnv,
|
||||
_inheritableContextSerializationEnv
|
||||
)
|
||||
|
||||
val _allEnabledSerializationEnvs: List<Pair<String, SerializationEnvironment>>
|
||||
get() = serializationEnvFields.mapNotNull { it.get()?.let { env -> Pair(it.name, env) } }
|
||||
@ -94,7 +99,8 @@ val effectiveSerializationEnv: SerializationEnvironment
|
||||
get() {
|
||||
return _allEnabledSerializationEnvs.let {
|
||||
checkNotNull(it.singleOrNull()?.second) {
|
||||
"Expected exactly 1 of {${serializationEnvFields.joinToString(", ") { it.name }}} but got: {${it.joinToString(", ") { it.first }}}"
|
||||
"Expected exactly 1 of {${serializationEnvFields.joinToString(", ") { it.name }}} " +
|
||||
"but got: {${it.joinToString(", ") { it.first }}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user