ConnectorProviderRegistry
Defined in: connector-providers.ts:152
页内装配出来的 registry。
Remarks
比 DevToolsProviderRegistry 多一个 dispose:database provider 会在 RxDB 实例上
挂 25 个事件监听,只拆端点不拆订阅的话,被替换掉的实例会因为监听器还在而无法回收。
Extends
Properties
descriptors
readonly descriptors: readonly DevToolsProviderDescriptor[];
Defined in: v2/endpoint.ts:61
本 session 存在的 provider 声明;顺序即 wire 上的顺序。
Inherited from
DevToolsProviderRegistry.descriptors
Methods
createChunkSink()
createChunkSink(name): DevToolsChunkSink;
Defined in: v2/endpoint.ts:71
为一次传输开一个分块落盘接收器;只有合法 COMPLETE 会 commit。
Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
Inherited from
DevToolsProviderRegistry.createChunkSink
createChunkSource()
createChunkSource(requestId): DevToolsChunkSource | undefined;
Defined in: v2/endpoint.ts:87
为一次已成功的 files.download 开一个字节来源。
Parameters
| Parameter | Type | Description |
|---|---|---|
requestId | string | 触发这次下载的 REQUEST ID。 |
Returns
DevToolsChunkSource | undefined
要送上 wire 的字节来源,或 undefined。
Remarks
返回 undefined 的含义是字节已在源侧交付(浏览器 OPFS 由页面自己保存,见
browser/opfs-files-provider.ts 模块头第 2 条),而不是「这个 provider 不支持下载」——
后者在 descriptor 的 operations 里就已经说清楚了,授权层会先一步拦下,轮不到这里表达。
两者共用一个空值会让「没接线」和「有意不流式」在端点看来完全一样。
用 requestId 而不是另铸一个 ID 作键:provider 认回「我刚答应下载的那个文件」唯一可靠的
依据就是那次调用本身,而 transferId 此刻还不存在(它由端点在本方法返回之后才铸造)。
Inherited from
DevToolsProviderRegistry.createChunkSource
dispose()
dispose(): void;
Defined in: connector-providers.ts:154
回收本次装配持有的全部订阅;幂等。
Returns
void
provider()
provider(domain): DevToolsProvider;
Defined in: v2/endpoint.ts:69
取某个领域的 provider。
Parameters
| Parameter | Type |
|---|---|
domain | "database" | "files" | "settings" |
Returns
Remarks
不返回 undefined:领域不可用由 provider 自己答 provider_unavailable,
「领域缺席」则在授权层就以 provider_unsupported 拦下,两者不能混成一个空值。