Может ли узел Corda инициировать сеанс потока с самим собой? - PullRequest
0 голосов
/ 08 ноября 2018

В потоке Corda вы можете инициировать FlowSession с контрагентом для отправки и получения данных.

Может ли узел инициировать FlowSession с собой?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Начиная с Corda 4, будет выдано исключение с сообщением:

Не предоставлять сеансы потока для локального узла. FinalityFlow будет записывать нотариально заверенную транзакцию локально.

0 голосов
/ 08 ноября 2018

Да, это совершенно нормально. Например, будет работать следующее:

@InitiatingFlow
@StartableByRPC
class Initiator : FlowLogic<Unit>() {
    override val progressTracker = ProgressTracker()

    @Suspendable
    override fun call() {
        val selfSession = initiateFlow(ourIdentity)
        selfSession.send("It's me!")
    }
}

@InitiatedBy(Initiator::class)
class Responder(val counterpartySession: FlowSession) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        logger.info(counterpartySession.receive<String>().unwrap { it })
    }
}
...