Skip to content

NASDK Processor ​

Processor是NACP与任务处理器之间的统一接口。

NACP只依赖Processor,不直接依赖NACEB或NACAB。任何实现对应Processor接口的处理器都可以绑定到NApp。

接口 ​

ts
import type {
  Processor,
  ProcessorHooks,
  ProcessorSpec,
} from '@nyirusu/nasdk/types'

interface Processor {
  list(): { name: string; description: string }[]
  push(spec: ProcessorSpec, hooks: ProcessorHooks): string | void
}

interface ProcessorSpec {
  target: string
  payload: unknown
  reqId: string
}

interface ProcessorHooks {
  onProcess(chunk: unknown): void
  onResponse(result: unknown, isOk: boolean, whyNotOk?: string): void
}

ProcessorSpec ​

字段作用
target要调用的Event或Ability名称
payload不透明的业务输入
reqIdNACP Request ID,用于关联过程消息、结果与信号

ProcessorHooks ​

回调作用
onProcess()提交一条过程消息;NACP将其映射为Notify
onResponse()提交唯一终局结果;NACP将其映射为Response

whyNotOk只描述协议层结果,例如processor-rejected或processor-failed。具体错误信息应放在result中。

调用流程 ​

text
NACP Request
  → Processor.push(spec, hooks)
  → 任务处理器
      → hooks.onProcess(chunk)  → NACP Notify
      → hooks.onResponse(...)   → NACP Response

push()可以返回处理器内部ID,但NACP不会使用该返回值。NACP始终通过reqId管理协议请求。

list()返回本Processor提供的名称与描述。NApp未显式配置decl时,会从绑定的Processor生成Event与Ability声明。

具体接口 ​

请求类型接口额外能力NASDK默认实现
EventEventProcessorsignal()NACEB的nacpAdaptor
AbilityAbilityProcessorregister()NACAB的nacpAdaptor

NACEB与NACAB本身可以脱离NApp使用。只有它们各自的nacpAdaptor实现Processor接口。

绑定到 NApp ​

ts
app.bindProcessor('event', eventProcessor)
app.bindProcessor('ability', abilityProcessor)

一个NApp对每种请求类型只绑定一个Processor。再次绑定会替换该类型当前的Processor。

调用app.start()时,未绑定的请求类型会自动创建默认空NACEB或NACAB,并将其Adaptor绑定到NApp。默认实例可通过app.default.NACEB和app.default.NACAB取得。

Released under the MIT License.