首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >akka fsm matchEvent植入

akka fsm matchEvent植入
EN

Stack Overflow用户
提问于 2016-10-31 12:39:13
回答 2查看 289关注 0票数 0

我试图理解AKKA "matchEvent“:

代码语言:javascript
复制
public final <ET> FSMStateFunctionBuilder<S, D> matchEvent(Class<ET> eventType, TypedPredicate2<ET, D> predicate, Apply2<ET, D, State<S, D>> apply) {
        return (new FSMStateFunctionBuilder()).event(eventType, predicate, apply);
    }

在查看http://doc.akka.io/japi/akka/2.3.4/index.html?akka/actor/AbstractFSM.html之后,我发现了以下内容:

代码语言:javascript
复制
public <P> FSMStateFunctionBuilder<S,D> event(java.lang.Class<P> eventType,
                                              FI.TypedPredicate2<P,D> predicate,
                                              FI.Apply2<P,D,FSM.State<S,D>> apply)

如果事件类型与谓词匹配,则添加匹配的case语句。参数: eventType --要在谓词上匹配的事件类型--将对数据进行计算和事件应用的谓词--一个应用于事件和状态数据(如果有匹配返回)的操作:添加了case语句的生成器。

有谁能告诉我,事件的匹配是如何实现的?

EN

回答 2

Stack Overflow用户

发布于 2016-11-03 16:16:25

从docs 简单例子中提取

代码语言:javascript
复制
...
public class Buncher extends AbstractFSM<State, Data> {
{
  startWith(Idle, Uninitialized);

  when(Idle,
    matchEvent(SetTarget.class, Uninitialized.class,
      (setTarget, uninitialized) ->
        stay().using(new Todo(setTarget.getRef(), new LinkedList<>()))));

  // transition elided ...

  when(Active, Duration.create(1, "second"),
    matchEvent(Arrays.asList(Flush.class, StateTimeout()), Todo.class,
      (event, todo) -> goTo(Idle).using(todo.copy(new LinkedList<>()))));

  // unhandled elided ...

  initialize();
  }
}
票数 0
EN

Stack Overflow用户

发布于 2017-10-15 00:48:49

如果您想表示基于传入事件字段或数据(或组合)的保护条件,请使用以下内容:

代码语言:javascript
复制
when(Active, Duration.create(1, "second"),
    matchEvent(Arrays.asList(Flush.class, StateTimeout()), Todo.class,
      (event, todo) -> todo.getQueue != null //any logical condition using event or data, 

      (event, todo) -> goTo(Idle).using(todo.copy(new LinkedList<>()))));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40342375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档