Exemplo n.º 1
0
        public async Task HandleAsync(IServiceOnceApiConvert convert, ChannelType channelType)
        {
            try
            {
                var contractOptions    = _serviceProvider.GetRequiredService <IOptions <ContractOptions> >();
                var rpcContextAccessor = _serviceProvider.GetRequiredService <IActionExecutingContextAccessor>();

                using IServiceScope scope           = _serviceProvider.GetRequiredService <IServiceScopeFactory>().CreateScope();
                GlobalServiceProvider.Provider      = _serviceProvider;
                GlobalServiceProvider.ScopeProvider = scope.ServiceProvider;
                var instances    = scope.ServiceProvider.GetContractInstances(contractOptions.Value);
                var onceTransfer = new ServiceOnceTransfer(instances,
                                                           scope.ServiceProvider,
                                                           convert,
                                                           _middlewareBuilder,
                                                           rpcContextAccessor,
                                                           channelType,
                                                           _logger);
                await onceTransfer.StartAsync();

                await onceTransfer.HandleRequestAsync();
            }
            catch (Exception e)
            {
                _logger.LogCritical(e, null);
                throw;
            }
        }
Exemplo n.º 2
0
 public ServiceOnceTransfer(List <Instance> instances, IServiceProvider serviceProvider, IServiceOnceApiConvert convert,
                            MiddlewareBuilder middlewareBuilder, IActionExecutingContextAccessor actionExecutingContextAccessor, ChannelType channelType, ILogger logger)
 {
     _instances         = instances;
     _serviceProvider   = serviceProvider;
     _middlewareBuilder = middlewareBuilder;
     _actionExecutingContextAccessor = actionExecutingContextAccessor;
     _channelType = channelType;
     _logger      = logger;
     _convert     = convert;
 }