pushIfProcessable

inline suspend fun EventProcessor.pushIfProcessable(eventKey: Event.Key<*>, block: () -> Event): EventProcessingResult?

eventKey 在当前事件处理器中能够被处理时( EventProcessor.isProcessable == true ), 通过 block 计算一个目标事件类型。

block 计算的事件类型不做限制,但是应当尽量保证结果类型与 eventKey 类型一致

eventProcessor(FooEvent) {
FooEventImpl()
}

inline suspend fun <E : Event> EventProcessor.pushIfProcessable(block: () -> E): EventProcessingResult?

E 在当前事件处理器中能够被处理时( EventProcessor.isProcessable == true ), 通过 block 计算一个目标事件类型。

EEvent.Key 通过 Event.Key.getKey 获取。

eventProcessor<FooEvent> {
FooEventImpl()
}

如果可以明确事件类型,更推荐使用 pushIfProcessable(EventKey) { EventImpl() } 的方式来避免反射可能导致的未知问题。