compileRoutePlan method

PixaCompiledRoutePlan compileRoutePlan()

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(),
  );
}