跳到主要内容

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​

ParameterType
namestring

Returns​

DevToolsChunkSink

Inherited from​

DevToolsProviderRegistry.createChunkSink


createChunkSource()​

createChunkSource(requestId): DevToolsChunkSource | undefined;

Defined in: v2/endpoint.ts:87

为一次已成功的 files.download 开一个字节来源。

Parameters​

ParameterTypeDescription
requestIdstring触发这次下载的 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​

ParameterType
domain"database" | "files" | "settings"

Returns​

DevToolsProvider

Remarks​

不返回 undefined:领域不可用由 provider 自己答 provider_unavailable, 「领域缺席」则在授权层就以 provider_unsupported 拦下,两者不能混成一个空值。

Inherited from​

DevToolsProviderRegistry.provider