使用“FlowSession.send”方法传递多个变量

时间:2018-04-12 12:17:51

标签: corda

成像我们有两个类, Payer Class Receiver Class 。 是否可以使用以下方法传递/发送多个变量: FlowSession.send()

尝试时,例如以下

sessionWithRecipient.send(Variable1)
sessionWithRecipient.send(Variable2)

似乎只有第一个变量将被发送到收件人类。

在响应者流程中,我使用下面显示的命令接收变量并将其解包:

val variable1 = initiatorSession.receive<Int>().unwrap { it }
val variable2 = initiatorSession.receive<Int>().unwrap { it }

您能帮我解决一下发送和接收多个变量的方法吗?谢谢:))

2 个答案:

答案 0 :(得分:2)

而不是发送两次。只需创建一个包含所有所需成员变量的包装器对象。然后将这个Wrapper对象列入白名单。这样你只需要发送一次。我觉得这样清洁。

答案 1 :(得分:1)

以下工作正常,将Sum is 3.打印到控制台:

@InitiatingFlow
@StartableByRPC
class Initiator(val counterparty: Party) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        val counterpartySession = initiateFlow(counterparty)
        counterpartySession.send(1)
        counterpartySession.send(2)
    }
}

@InitiatedBy(Initiator::class)
class Responder(val counterpartySession: FlowSession) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        val int1 = counterpartySession.receive<Int>().unwrap { it }
        val int2 = counterpartySession.receive<Int>().unwrap { it }
        logger.info("Sum is ${int1 + int2}.")
    }
}