@endo/captp
一个最低限度的 CAPTP 执行 利用 Agoric 的已出版模块.
使用量
注: myconn 下面不是 CAPTP 库的一部分, 它代表连接
您创建的位置对象 makeCapTP 要求双方
连接,在函数中传出 JSON 可连接对象,然后返回
(单位:千美元) dispatch 函数可接收连接中解码的 JSON 对象.
import { E, makeCapTP } from '@endo/captp';
// Create a message dispatcher and bootstrap.
// Messages on myconn are exchanged with JSON-able objects.
const { dispatch, getBootstrap, abort } = makeCapTP('myid', myconn.send, myBootstrap);
myconn.onReceive = obj => dispatch(obj);
// Get the remote's bootstrap object and call a remote method.
E(getBootstrap()).method(args).then(res => console.log('got res', res));
// Tear down the CapTP connection if it fails (e.g. connection is closed).
abort(Error('Connection aborted by user.'));
循环
这个 makeLoopback() 函数在“ 相近” 和“ 相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相
对象。 这对在同一地址内测试和隔离有用
空间.
陷阱夹
除了正常的CapTP设施外,这个图书馆还具有以下概念: "Trap Caps",它使"客人"的终点能够称为"宿主"对象(它可能) 在方便的时候,你应答一个应答,但宾客是同步的 块直到它收到解答.
这是一个专门和先进的使用案例,不是针对相互怀疑的CapTP 派对,但为了明确的"客人"/"主机"关系,如用户-空间 代码和同步设备.
- 供应
trapHost财务报告和审定财务报表trapGuest议定书的履行情况 一个基于SharedArrayBuffers内src/atomics.js)给主持人和来宾makeCapTP打电话. - 在主机一侧, 使用返回的
makeTrapHandler(target)标记目标 作为同步驱动. - 在客人那边,用回放
Trap(target)代理制作人喜欢E(target),但它会返回同步结果.Trap将扔出一个 错误,如果target被主机标记为特拉普汉德勒.
来了解 trapHost 财务报告和审定财务报表 trapGuest 关联,考虑 trapHost 作为
合成器的制造者,不归还任何有用的价值。 这些具体
执行器用来驱动序列化数据的传输返回到来宾.
trapGuest 接收参数来描述具体的陷阱请求,包括
startTrap() 将数据发送给主机,以进行实际工作
夹子。 返回( 同步) 从 startTrap() 驱动同步
主持人直到将陷阱结果完全转移给客人为止
客人解围了.
环背执行为 TrapCaps 提供部分支持, 除了它 不能解开承诺。 循环回击陷阱手必须同步返回,或者 将丢弃例外.