Kotlin Corda-注册并侦听处理程序/响应程序流

Kotlin Corda-注册并侦听处理程序/响应程序流,kotlin,corda,Kotlin,Corda,考虑以下Corda流对: 发送方流量 类SendFlow(val消息:字符串,val会话:FlowSession):FlowLogic(){ @暂停 覆盖有趣的调用():布尔值{ 返回会话。发送和接收(消息) } @星表 @StartableByService @启动流程(版本=1) 类启动器(val消息:字符串,val收件人:参与方):FlowLogic(){ @暂停 覆盖有趣的调用():布尔值{ 返回子流(发送流(消息、发起流(参与方))) } } } 接收器流量 class Receiv

考虑以下Corda流对:

发送方流量

类SendFlow(val消息:字符串,val会话:FlowSession):FlowLogic(){
@暂停
覆盖有趣的调用():布尔值{
返回会话。发送和接收(消息)
}
@星表
@StartableByService
@启动流程(版本=1)
类启动器(val消息:字符串,val收件人:参与方):FlowLogic(){
@暂停
覆盖有趣的调用():布尔值{
返回子流(发送流(消息、发起流(参与方)))
}
}
}
接收器流量

class ReceiveFlow(val会话:FlowSession):FlowLogic(){
@暂停
重写有趣的调用():字符串{
val result=session.receive().unwrap{it}
session.send(结果=“你好,世界!”)
返回结果
}
@发起人(SendFlow.Initator::类)
类处理程序(val会话:FlowSession):FlowLogic(){
@暂停
重写有趣的调用():字符串{
返回子流(接收流(会话))
}
}
}
从RPC上的初始流中获得结果是有很好的文档记录的,而且很简单

rpc
.startFlow(SendFlow::启动器,“你好,世界!”,someParty)
.returnValue
.getOrThrow()//预期为true
我如何注册一些内容来侦听由(…)流发起的
@的输出也就是说,我希望能够在上观察从接收节点接收到的消息。

您可以使用RPC API在创建新流时观察它们,并在它们完成时观察它们的结果

此API可通过以下方式使用(Kotlin中的代码):

val rpcClient: CordaRpcOps // initialise this properly depending on your environment
rpcClient.stateMachinesFeed().updates.subscribe {
    when(it) {
        is StateMachineUpdate.Added -> {
            val flowId = it.id
            val flowInfo = it.stateMachineInfo
            // code to react to new flow initiation
        }
        is StateMachineUpdate.Removed -> {
            val flowId = it.id
            val flowResult = it.result
            flowResult.doOnSuccess(Consumer { result -> /* code to process result of successful completion */ })
            flowResult.doOnFailure(Consumer { error -> /* code to process error from failed completion */ })
        }
    }
}