public SnapshotProcessor(IStreamStore streamStore, IServiceProvider serviceProvider, IOptions <StorageOptions> optionsAccessor) { if (streamStore == null) { throw new ArgumentNullException(nameof(streamStore)); } if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } if (optionsAccessor == null) { throw new ArgumentNullException(nameof(optionsAccessor)); } _streamStore = streamStore; _serviceProvider = serviceProvider; _differ = new JsonDiffPatch(); _options = optionsAccessor.Value ?? new StorageOptions(); _snapshotProcess = new AsyncProcess(SnapshotProcess); _initialization = InitializeInternalAsync(_cancellationSource.Token); }
public RemoteMessageRouter(ISerializedMessageHandler serializedMessageHandler, IRequestReplyClientEndPoint logicalEndPoint, IDateTimeProvider dateTimeProvider, ILogger <RemoteMessageRouter> logger = null) { if (serializedMessageHandler == null) { throw new ArgumentNullException(nameof(serializedMessageHandler)); } if (logicalEndPoint == null) { throw new ArgumentNullException(nameof(logicalEndPoint)); } if (dateTimeProvider == null) { throw new ArgumentNullException(nameof(dateTimeProvider)); } _serializedMessageHandler = serializedMessageHandler; _logicalEndPoint = logicalEndPoint; _dateTimeProvider = dateTimeProvider; _logger = logger; _receiveProcess = new AsyncProcess(ReceiveProcess, start: true); }
private int _operating = 0; // 0 = Idle, 1 = Running #endregion /// <summary> /// Creates a new instance of the <see cref="Process"/> type with the specified execution operation. /// </summary> /// <param name="operation">The asynchronous execution operation.</param> public TriggerableAsyncProcess(Func <CancellationToken, Task> operation) // The operation is guaranteed not to run concurrently. { if (operation == null) { throw new ArgumentNullException(nameof(operation)); } _operation = operation; _dynamicProcess = new AsyncProcess(DynamicExecute); }
public ProxyHost(Stream stream, IServiceProvider serviceProvider) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } _stream = stream; _serviceProvider = serviceProvider; _receiveProcess = new AsyncProcess(ReceiveProcess, start: true); _disposeHelper = new AsyncDisposeHelper(DisposeInternalAsync); }
public ClientConnectionManager(ICoordinationManager coordinationManager, IDateTimeProvider dateTimeProvider, IOptions <ClientConnectionOptions> clientConnectionOptionsAccessor, IOptions <ClientConnectionManagerOptions> clientConnectionManagerOptionsAccessor, ILogger <ClientConnectionManager> logger = null) { if (coordinationManager == null) { throw new ArgumentNullException(nameof(coordinationManager)); } if (dateTimeProvider == null) { throw new ArgumentNullException(nameof(dateTimeProvider)); } if (clientConnectionOptionsAccessor == null) { throw new ArgumentNullException(nameof(clientConnectionOptionsAccessor)); } if (clientConnectionManagerOptionsAccessor == null) { throw new ArgumentNullException(nameof(clientConnectionManagerOptionsAccessor)); } _coordinationManager = coordinationManager; _dateTimeProvider = dateTimeProvider; _logger = logger; _clientConnectionOptions = clientConnectionOptionsAccessor.Value ?? new ClientConnectionOptions(); _clientConnectionManagerOptions = clientConnectionManagerOptionsAccessor.Value ?? new ClientConnectionManagerOptions(); Timeout = _clientConnectionOptions.Timeout <= TimeSpan.Zero ? ClientConnectionOptions.DefaultTimeout : _clientConnectionOptions.Timeout; BasePath = new CoordinationEntryPath(string.IsNullOrEmpty(_clientConnectionManagerOptions.BasePath) ? ClientConnectionManagerOptions.DefaultBasePath : _clientConnectionManagerOptions.BasePath); GarbageCollectionDelayMax = _clientConnectionManagerOptions.GarbageCollectionDelayMax <= TimeSpan.Zero ? ClientConnectionManagerOptions.DefaultGarbageCollectionDelayMax : _clientConnectionManagerOptions.GarbageCollectionDelayMax; _garbageCollectionProcess = new AsyncProcess(GarbageCollection, start: true); }
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); }