public void registering_a_new_timeout() { Guid correlationId = Guid.NewGuid(); int timeoutPeriodMS = 500; var waitHandle = new ManualResetEvent(false); IEventStore eventStore = new FakeEventStore(new List<IEvent>()); var timeoutRegistry = new TimeoutRegistry(eventStore, @event => { }); var newTimeoutCommand = new StartTimeout { CorrelationId = correlationId.ToString(), ElapsesInMS = timeoutPeriodMS, }; }
public void RegisterTimeout(StartTimeout command) { //critical region that can have potentially many threads running through it lock (_lockObject) { if (_idExpiresMap.ContainsKey(command.CorrelationId) == false) { _idExpiresMap.Add(command.CorrelationId, CalculateExpiration(command.ElapsesInMS)); } else { _idExpiresMap[command.CorrelationId] = CalculateExpiration(command.ElapsesInMS); } if (_idTimerMap.ContainsKey(command.CorrelationId) == false) { _idTimerMap.Add(command.CorrelationId, NewTimer(command.ElapsesInMS)); } else { _idTimerMap[command.CorrelationId] = NewTimer(command.ElapsesInMS); } } }