跳到主要内容

DevToolsChunkSink

Defined in: provider/types.ts:92

分块传输的字节下沉口。

Remarks​

只有 commit 能让临时文件转正;其余任何终态都必须走 discard。 实现不得在 write 与 commit 之间累积整文件。

三个方法都返回 Promise<void>,而不是 void:OPFS、Node 与 Rust 的落盘全是异步 I/O, 同步签名逼着实现要么把 promise 吞掉(写失败在协议上完全不可见,状态机照常推进 offset, 最后 commit 出一个短了几块的文件),要么在内存里攒够再一次性写(正是第 2 条约束要禁的事)。 返回 promise 之后,状态机能等这一块真的落盘再认账,磁盘慢就自然地把帧压在队列里—— 背压是这个签名给的,不是实现能自己补出来的。

失败用 reject 表达,不是返回错误联合:这里没有可供调用方分支处理的语义差别, 任何一块写不下去,这条传输就只有一条路——discard + 结构化错误。

Methods​

commit()​

commit(): Promise<void>;

Defined in: provider/types.ts:109

把临时文件提交为正式文件。仅在完整校验通过的 COMPLETE 之后调用。

Returns​

Promise<void>

目标文件确实转正后 resolve;reject 时调用方会转去 discard。


discard()​

discard(): Promise<void>;

Defined in: provider/types.ts:119

丢弃临时文件与全部中间状态。

Returns​

Promise<void>

清理完成后 resolve。

Remarks​

必须幂等:取消、两道超时、写失败与 dispose 都可能触发它。


write()​

write(data): Promise<void>;

Defined in: provider/types.ts:102

写入一块已解码的字节。

Parameters​

ParameterTypeDescription
dataUint8Array本块字节;调用方不再持有它。

Returns​

Promise<void>

本块确实落盘后 resolve;reject 即这条传输作废。

Remarks​

状态机保证串行调用:上一块 resolve 之前不会有下一块进来,实现无需自己排队。