public SessionProvider(IPhysicalEndPointMultiplexer <TAddress> endPointMultiplexer, IDateTimeProvider dateTimeProvider, IAddressConversion <TAddress> addressConversion) { if (endPointMultiplexer == null) { throw new ArgumentNullException(nameof(endPointMultiplexer)); } if (dateTimeProvider == null) { throw new ArgumentNullException(nameof(dateTimeProvider)); } if (addressConversion == null) { throw new ArgumentNullException(nameof(addressConversion)); } _address = endPointMultiplexer.LocalAddress; if (_address.Equals(default(TAddress))) { throw new ArgumentException($"The end-points physical address must not be the default value of '{typeof(TAddress)}'.", nameof(endPointMultiplexer)); } _dateTimeProvider = dateTimeProvider; _addressConversion = addressConversion; }
public DebugConnection(IAddressConversion <IPEndPoint> addressConversion, IMetadataAccessor metadataAccessor, IOptions <ModuleDebugOptions> optionsAccessor, IOptions <RemoteMessagingOptions> remoteOptionsAccessor, IServiceProvider serviceProvider, ILoggerFactory loggerFactory = null) { if (addressConversion == null) { throw new ArgumentNullException(nameof(addressConversion)); } if (metadataAccessor == null) { throw new ArgumentNullException(nameof(metadataAccessor)); } if (optionsAccessor == null) { throw new ArgumentNullException(nameof(optionsAccessor)); } if (remoteOptionsAccessor == null) { throw new ArgumentNullException(nameof(remoteOptionsAccessor)); } if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } _addressConversion = addressConversion; _metadataAccessor = metadataAccessor; _options = optionsAccessor.Value ?? new ModuleDebugOptions(); _remoteOptions = remoteOptionsAccessor.Value ?? new RemoteMessagingOptions(); _serviceProvider = serviceProvider; _loggerFactory = loggerFactory; _logger = _loggerFactory?.CreateLogger <DebugConnection>(); _debugPort = new Lazy <IPEndPoint>(() => _addressConversion.Parse(_options.DebugConnection), LazyThreadSafetyMode.PublicationOnly); _tcpClientLazy = new DisposableAsyncLazy <TcpClient>( factory: CreateTcpClientAsync, disposal: tcpClient => { tcpClient.Dispose(); return(Task.CompletedTask); }, options: DisposableAsyncLazyOptions.Autostart | DisposableAsyncLazyOptions.ExecuteOnCallingThread); _proxyHostLazy = new DisposableAsyncLazy <ProxyHost>( factory: CreateProxyHostAsync, disposal: proxyHost => proxyHost.DisposeAsync(), options: DisposableAsyncLazyOptions.Autostart | DisposableAsyncLazyOptions.ExecuteOnCallingThread); }
public EndPointMap(ICoordinationManager coordinationManager, IAddressConversion <TAddress> addressConversion) { if (coordinationManager == null) { throw new ArgumentNullException(nameof(coordinationManager)); } if (addressConversion == null) { throw new ArgumentNullException(nameof(addressConversion)); } _coordinationManager = coordinationManager; _addressConversion = addressConversion; }
public DebugPort(IServiceProvider serviceProvider, IAddressConversion <IPEndPoint> addressConversion, IOptions <ModularityOptions> optionsAccessor, IRemoteMessageDispatcher messageDispatcher, ILoggerFactory loggerFactory = null) { if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } if (addressConversion == null) { throw new ArgumentNullException(nameof(addressConversion)); } if (optionsAccessor == null) { throw new ArgumentNullException(nameof(optionsAccessor)); } if (messageDispatcher == null) { throw new ArgumentNullException(nameof(messageDispatcher)); } var options = optionsAccessor.Value ?? new ModularityOptions(); _serviceProvider = serviceProvider; _messageDispatcher = messageDispatcher; _loggerFactory = loggerFactory; _logger = _loggerFactory?.CreateLogger <DebugPort>(); var endPoint = addressConversion.Parse(options.DebugConnection); _tcpHost = new TcpListener(endPoint); _connectionProcess = new AsyncProcess(ConnectProcedure); _initializationHelper = new AsyncInitializationHelper <IPEndPoint>(InitializeInternalAsync); _disposeHelper = new AsyncDisposeHelper(DisposeInternalAsync); }
public CoordinationExchangeManager(ICoordinationSessionOwner sessionOwner, ISessionManager sessionManager, ILockWaitDirectory lockWaitDirectory, IProvider <ICoordinationLockManager> lockManager, ICoordinationStorage storage, CoordinationEntryCache cache, IPhysicalEndPointMultiplexer <TAddress> endPointMultiplexer, IAddressConversion <TAddress> addressConversion, IOptions <CoordinationManagerOptions> optionsAccessor, ILogger <CoordinationExchangeManager <TAddress> > logger = null) { if (sessionOwner == null) { throw new ArgumentNullException(nameof(sessionOwner)); } if (sessionManager == null) { throw new ArgumentNullException(nameof(sessionManager)); } if (lockWaitDirectory == null) { throw new ArgumentNullException(nameof(lockWaitDirectory)); } if (lockManager == null) { throw new ArgumentNullException(nameof(lockManager)); } if (storage == null) { throw new ArgumentNullException(nameof(storage)); } if (cache == null) { throw new ArgumentNullException(nameof(cache)); } if (endPointMultiplexer == null) { throw new ArgumentNullException(nameof(endPointMultiplexer)); } if (addressConversion == null) { throw new ArgumentNullException(nameof(addressConversion)); } _sessionOwner = sessionOwner; _sessionManager = sessionManager; _lockWaitDirectory = lockWaitDirectory; _lockManager = lockManager; _storage = storage; _cache = cache; _endPointMultiplexer = endPointMultiplexer; _addressConversion = addressConversion; _logger = logger; _options = optionsAccessor.Value ?? new CoordinationManagerOptions(); _physicalEndPoint = new DisposableAsyncLazy <IPhysicalEndPoint <TAddress> >( factory: GetLocalSessionEndPointAsync, disposal: DisposePhysicalEndPointAsync, DisposableAsyncLazyOptions.Autostart | DisposableAsyncLazyOptions.ExecuteOnCallingThread); _receiveProcess = new AsyncProcess(ReceiveProcess); _receiveProcess.Start(); }