跳到主要内容

DevToolsChunkSource

Defined in: provider/types.ts:134

分块传输的字节来源;DevToolsChunkSink 的反向。

Remarks​

形状是 read(offset, length) 而不是 Promise<Uint8Array> 或异步迭代器,理由与 sink 那条 对称且同样是结构性的:交出整个数组等于要求实现先把整个文件读进内存,而「不在 renderer 或 main 整体缓存文件」这条约束一旦只靠纪律维持,就会在某次重构里安静地消失。按需读则让 发送端在任意时刻只持有一块。

length 由状态机给,恒 ≤ 256 KiB,且 offset 恒等于此前已读出的字节数——实现不需要 自己记进度,也不该假设调用方会重读某一段。

Properties​

totalBytes​

readonly totalBytes: number;

Defined in: provider/types.ts:136

总字节数;用于 TRANSFER_START 的 totalBytes 与限额预检。

Methods​

close()​

close(): Promise<void>;

Defined in: provider/types.ts:158

释放这次读取占用的句柄。

Returns​

Promise<void>

释放完成后 resolve;reject 会被调用方吞掉(没有第二条补救路径)。

Remarks​

必须幂等:正常读完、取消、超时与 dispose 都会触发它。sink 那侧用 commit / discard 区分终态,是因为它有「临时产物要不要转正」这个决定;读侧没有任何东西需要转正, 因此只有一个出口,也就不存在漏掉某一条终态路径的可能。


read()​

read(offset, length): Promise<Uint8Array<ArrayBufferLike>>;

Defined in: provider/types.ts:146

读取 [offset, offset + length)。

Parameters​

ParameterTypeDescription
offsetnumber起始偏移,等于此前已读出的字节数。
lengthnumber需要的字节数,恒 ≤ 256 KiB 且 > 0。

Returns​

Promise<Uint8Array<ArrayBufferLike>>

恰好 length 个字节。长度不符视为实现错误,本次传输以 operation_failed 终结——短读被当成正常结果的话,对端收到的是一个静默截断的文件。