compileRoutePlan method
Compiles deterministic route and capability tables for hot-path lookup.
Implementation
PixaCompiledRoutePlan compileRoutePlan() {
final Map<String, PixaFetcherDescriptor> fetcherRoutes =
<String, PixaFetcherDescriptor>{
for (final MapEntry<String, String> entry
in _fetcherSourceKinds.entries)
entry.key: _fetchers[entry.value]!,
};
final Map<String, PixaDecoderDescriptor> decoderMimeRoutes =
<String, PixaDecoderDescriptor>{};
final Map<String, PixaDecoderDescriptor> decoderFormatRoutes =
<String, PixaDecoderDescriptor>{};
final Map<String, PixaDecoderDescriptor> decoderSignatureRoutes =
<String, PixaDecoderDescriptor>{};
for (final PixaDecoderDescriptor decoder in _decoders.values) {
for (final String mimeType in decoder.mimeTypes) {
_claimHighestPriorityDecoder(
decoderMimeRoutes,
_normalizeMimeType(mimeType),
decoder,
);
}
for (final String formatId in decoder.formatIds) {
_claimHighestPriorityDecoder(
decoderFormatRoutes,
_normalizeRouteClaim(formatId),
decoder,
);
}
for (final PixaDecoderSignature signature in decoder.signatures) {
_claimHighestPriorityDecoder(
decoderSignatureRoutes,
signature.routeKey,
decoder,
);
}
}
final Map<String, PixaProcessorDescriptor> processorRoutes =
<String, PixaProcessorDescriptor>{
for (final MapEntry<String, String> entry
in _processorOperations.entries)
entry.key: _processors[entry.value]!,
};
final Map<String, PixaCacheStoreDescriptor> cacheStoreRoutes =
<String, PixaCacheStoreDescriptor>{
for (final MapEntry<String, String> entry
in _cacheStoreNamespaces.entries)
entry.key: _cacheStores[entry.value]!,
};
final Map<String, PixaPlatformContract> platformContracts =
<String, PixaPlatformContract>{};
for (final PixaRegistryHandler handler in <PixaRegistryHandler>[
..._fetchers.values,
..._decoders.values,
..._processors.values,
..._cacheStores.values,
]) {
if (handler is PixaPlatformDescriptor) {
platformContracts[handler.id] = handler.platform;
}
}
return PixaCompiledRoutePlan._(
fetcherRoutes: fetcherRoutes,
decoderMimeRoutes: decoderMimeRoutes,
decoderFormatRoutes: decoderFormatRoutes,
decoderSignatureRoutes: decoderSignatureRoutes,
processorRoutes: processorRoutes,
cacheStoreRoutes: cacheStoreRoutes,
platformContracts: platformContracts,
adaptiveIntegrations: _adaptiveIntegrationSelections,
architecture: architectureSnapshot(),
);
}