public ClientService ( ILogger <ClientService> logger, ILogger <VirtualNetworkService> networkLogger, IHostApplicationLifetime appLifetime, IOptions <GeneralOptions> generalOptions, IOptions <NetworkOptions> networkOptions, ICommandLineInterface cli, IInternetConnectionVerifier internetConnectionVerifierVerifier, IVpnConnectionVerifier vpnConnectionVerifier, IPlatform platform ) { this._Logger = logger ?? throw new ArgumentNullException(nameof(logger)); this._NetworkLogger = networkLogger ?? throw new ArgumentNullException(nameof(networkLogger)); this._AppLifetime = appLifetime ?? throw new ArgumentNullException(nameof(appLifetime)); this._GeneralOptions = generalOptions ?? throw new ArgumentNullException(nameof(generalOptions)); this._NetworkOptions = networkOptions ?? throw new ArgumentNullException(nameof(networkOptions)); this._Cli = cli ?? throw new ArgumentNullException(nameof(cli)); this._InternetConnectionVerifierVerifier = internetConnectionVerifierVerifier ?? throw new ArgumentNullException(nameof(internetConnectionVerifierVerifier)); this._VpnConnectionVerifier = vpnConnectionVerifier ?? throw new ArgumentNullException(nameof(vpnConnectionVerifier)); this._Platform = platform ?? throw new ArgumentNullException(nameof(platform)); this._ClientServiceRestarting = new Subject <Object>(); this._ClientServiceRestarted = new Subject <Object>(); this._Networks = new Dictionary <VirtualNetworkService, Int32>(); this._IsInternetConnected = null; }
public VirtualNetworkService ( ILogger <VirtualNetworkService> logger, ICommandLineInterface cli, IVpnConnectionVerifier vpnConnectionVerifier, IPlatform platform, Subject <Object> clientServiceRestarting, Subject <Object> clientServiceRestarted, VirtualNetwork network ) { if (clientServiceRestarting == null) { throw new ArgumentNullException(nameof(clientServiceRestarting)); } if (clientServiceRestarted == null) { throw new ArgumentNullException(nameof(clientServiceRestarted)); } this._Logger = logger ?? throw new ArgumentNullException(nameof(logger)); this._Cli = cli ?? throw new ArgumentNullException(nameof(cli)); this._VpnConnectionVerifier = vpnConnectionVerifier ?? throw new ArgumentNullException(nameof(vpnConnectionVerifier)); this._Platform = platform ?? throw new ArgumentNullException(nameof(platform)); this.Configuration = network ?? throw new ArgumentNullException(nameof(network)); this._IsDisposed = new Subject <Object>(); var __IsInitialized = new Subject <Object>(); clientServiceRestarting .TakeUntil(this._IsDisposed) .SkipUntil(__IsInitialized) .Subscribe(this.OnClientServiceRestarting); clientServiceRestarted .TakeUntil(this._IsDisposed) .SkipUntil(__IsInitialized) .Subscribe(this.OnClientServiceRestarted); this._Account = new BehaviorSubject <Account>(null); this._Account .TakeUntil(this._IsDisposed) .SkipUntil(__IsInitialized) .DistinctUntilChanged() .Subscribe(this.OnAccountFoundChanged); this._Device = new BehaviorSubject <Device>(null); this._Device .SkipUntil(__IsInitialized) .TakeUntil(this._IsDisposed) .DistinctUntilChanged() .Subscribe(this.OnDeviceFoundChanged); // this._Interface = new BehaviorSubject<NetworkInterface>(null); // this._Interface // // .TakeUntil(this._IsDisposed) // .SkipUntil(__IsInitialized) // .DistinctUntilChanged() // .Subscribe(this.OnInterfaceFoundChanged); this._InterfaceName = new BehaviorSubject <String>(null); this._InterfaceName .TakeUntil(this._IsDisposed) .SkipUntil(__IsInitialized) .DistinctUntilChanged() .Subscribe(this.OnInterfaceFoundChanged); this._IPv4AddressAssigned = new BehaviorSubject <Boolean?>(null); this._IPv4AddressAssigned .TakeUntil(this._IsDisposed) .SkipUntil(__IsInitialized) .NotNull() .DistinctUntilChanged() .Subscribe(this.OnIPv4AddressAssignedChanged); this._IPv6AddressAssigned = new BehaviorSubject <Boolean?>(null); this._IPv6AddressAssigned .TakeUntil(this._IsDisposed) .SkipUntil(__IsInitialized) .NotNull() .DistinctUntilChanged() .Subscribe(this.OnIPv6AddressAssignedChanged); this._IPv4RoutesAssigned = new BehaviorSubject <Boolean?>(null); this._IPv4RoutesAssigned .TakeUntil(this._IsDisposed) .SkipUntil(__IsInitialized) .NotNull() .DistinctUntilChanged() .Subscribe(this.OnIPv4RoutesAppliedChanged); this._IPv6RoutesAssigned = new BehaviorSubject <Boolean?>(null); this._IPv6RoutesAssigned .TakeUntil(this._IsDisposed) .SkipUntil(__IsInitialized) .NotNull() .DistinctUntilChanged() .Subscribe(this.OnIPv6RoutesAppliedChanged); this._ConfigurationState = new BehaviorSubject <ConfigurationState?>(null); this._ConfigurationState .TakeUntil(this._IsDisposed) .SkipUntil(__IsInitialized) .NotNull() .DistinctUntilChanged() .Subscribe(this.OnConfigurationStateChanged); this._ConnectionState = new BehaviorSubject <ConnectionState?>(null); this._ConnectionState .TakeUntil(this._IsDisposed) .SkipUntil(__IsInitialized) .NotNull() .DistinctUntilChanged() .Subscribe(this.OnConnectionStateChanged); this._ReachableState = new BehaviorSubject <ReachableState?>(null); this._ReachableState .TakeUntil(this._IsDisposed) .NotNull() .DistinctUntilChanged() .Subscribe(this.OnReachableStateChanged); this._ConnectionVerificationResult = new BehaviorSubject <ConnectionVerificationResult>(null); this._ConnectionVerificationResult .TakeUntil(this._IsDisposed) .NotNull() .DistinctUntilChanged() .Subscribe(this.OnConnectionVerificationResultChanged); __IsInitialized.OnNext(null); }