public CoordinationSessionOwner(ISessionManager sessionManager, ISessionProvider sessionProvider, IDateTimeProvider dateTimeProvider, IOptions <CoordinationManagerOptions> optionsAccessor, ILogger <CoordinationSessionOwner> logger = null) { if (sessionManager == null) { throw new ArgumentNullException(nameof(sessionManager)); } if (sessionProvider == null) { throw new ArgumentNullException(nameof(sessionProvider)); } if (dateTimeProvider == null) { throw new ArgumentNullException(nameof(dateTimeProvider)); } if (optionsAccessor == null) { throw new ArgumentNullException(nameof(optionsAccessor)); } _sessionManager = sessionManager; _sessionProvider = sessionProvider; _dateTimeProvider = dateTimeProvider; _logger = logger; _options = optionsAccessor.Value ?? new CoordinationManagerOptions(); _session = BuildSession(); }
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(); }
public CoordinationManager(IServiceScope serviceScope, ICoordinationStorage storage, IStoredEntryManager storedEntryManager, ISessionManager sessionManager, ICoordinationSessionOwner sessionOwner, IDateTimeProvider dateTimeProvider, CoordinationEntryCache cache, ICoordinationLockManager lockManager, IOptions <CoordinationManagerOptions> optionsAccessor, ILogger <CoordinationManager <TAddress> > logger = null) { if (serviceScope == null) { throw new ArgumentNullException(nameof(serviceScope)); } if (storage == null) { throw new ArgumentNullException(nameof(storage)); } if (storedEntryManager == null) { throw new ArgumentNullException(nameof(storedEntryManager)); } if (sessionManager == null) { throw new ArgumentNullException(nameof(sessionManager)); } if (sessionOwner == null) { throw new ArgumentNullException(nameof(sessionOwner)); } if (dateTimeProvider == null) { throw new ArgumentNullException(nameof(dateTimeProvider)); } if (cache == null) { throw new ArgumentNullException(nameof(cache)); } if (lockManager == null) { throw new ArgumentNullException(nameof(lockManager)); } if (optionsAccessor == null) { throw new ArgumentNullException(nameof(optionsAccessor)); } _serviceScope = serviceScope; _storage = storage; _storedEntryManager = storedEntryManager; _sessionManager = sessionManager; _sessionOwner = sessionOwner; _dateTimeProvider = dateTimeProvider; _cache = cache; _lockManager = lockManager; _logger = logger; _options = optionsAccessor.Value ?? new CoordinationManagerOptions(); _updateSessionProcess = new AsyncProcess(UpdateSessionProcess, start: true); _sessionCleanupProcess = new AsyncProcess(SessionCleanupProcess, start: true); }