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
| Parameter | Type | Description |
|---|---|---|
offset | number | 起始偏移,等于此前已读出的字节数。 |
length | number | 需要的字节数,恒 ≤ 256 KiB 且 > 0。 |
Returns
Promise<Uint8Array<ArrayBufferLike>>
恰好 length 个字节。长度不符视为实现错误,本次传输以 operation_failed
终结——短读被当成正常结果的话,对端收到的是一个静默截断的文件。