public static IServiceCollection AddDiscoveryClient(this IServiceCollection services, DiscoveryOptions discoveryOptions, IDiscoveryLifecycle lifecycle = null) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (discoveryOptions == null) { throw new ArgumentNullException(nameof(discoveryOptions)); } if (discoveryOptions.ClientType == DiscoveryClientType.EUREKA) { EurekaClientOptions clientOptions = discoveryOptions.ClientOptions as EurekaClientOptions; if (clientOptions == null) { throw new ArgumentException("Missing Client Options"); } services.AddSingleton <IOptionsMonitor <EurekaClientOptions> >(new OptionsMonitorWrapper <EurekaClientOptions>(clientOptions)); var regOptions = discoveryOptions.RegistrationOptions as EurekaInstanceOptions; if (regOptions == null) { clientOptions.ShouldRegisterWithEureka = false; regOptions = new EurekaInstanceOptions(); } services.AddSingleton <IOptionsMonitor <EurekaInstanceOptions> >(new OptionsMonitorWrapper <EurekaInstanceOptions>(regOptions)); AddEurekaServices(services, lifecycle); } else { throw new ArgumentException("Client type UNKNOWN"); } return(services); }
public static void RegisterDiscoveryClient(this ContainerBuilder container, DiscoveryOptions discoveryOptions, IDiscoveryLifecycle lifecycle = null) { if (container == null) { throw new ArgumentNullException(nameof(container)); } if (discoveryOptions == null) { throw new ArgumentNullException(nameof(discoveryOptions)); } if (discoveryOptions.ClientType == DiscoveryClientType.EUREKA) { EurekaClientOptions clientOptions = discoveryOptions.ClientOptions as EurekaClientOptions; if (clientOptions == null) { throw new ArgumentException("Missing Client Options"); } container.RegisterInstance(new OptionsMonitorWrapper <EurekaClientOptions>(clientOptions)).As <IOptionsMonitor <EurekaClientOptions> >().SingleInstance(); var regOptions = discoveryOptions.RegistrationOptions as EurekaInstanceOptions; if (regOptions == null) { clientOptions.ShouldRegisterWithEureka = false; regOptions = new EurekaInstanceOptions(); } container.RegisterInstance(new OptionsMonitorWrapper <EurekaInstanceOptions>(regOptions)).As <IOptionsMonitor <EurekaInstanceOptions> >().SingleInstance(); AddEurekaServices(container, lifecycle); } else { throw new ArgumentException("Client type UNKNOWN"); } }
internal EurekaDiscoveryClient(EurekaClientOptions clientOptions, EurekaInstanceOptions instOptions, IEurekaHttpClient httpClient, IApplicationLifetime lifeCycle = null, ILoggerFactory logFactory = null) : base(clientOptions, instOptions, httpClient, lifeCycle, logFactory) { }