resolve method

  1. @override
void resolve()

Resolve the incoming message packet.

Implementation

@override
void resolve() {
  if (resolvedAlready) {
    return;
  }
  final extractedServices = <Service>[];
  for (final module in config.modulesContainer.scopes) {
    for (final controllerEntry
        in module.controllers.whereType<GrpcServiceController>()) {
      final serviceName = controllerEntry.service.$name;
      extractedServices.add(controllerEntry.service);
      resolvedMessageRoutes[serviceName] = GrpcServiceContext(
        metadata: controllerEntry.metadata,
        providers: {
          for (final providerEntry in module.unifiedProviders)
            providerEntry.runtimeType: providerEntry,
        },
        hooks: controllerEntry.hooks.merge([
          config.globalHooks,
        ]),
        pipes: {
          ...controllerEntry.pipes,
          ...config.globalPipes,
        },
        exceptionFilters: {
          ...controllerEntry.exceptionFilters,
          ...config.globalExceptionFilters,
        },
        values: module.unifiedValues,
      );
    }
  }
  onServicesExtracted(extractedServices);
  resolvedAlready = true;
}