public void Initialize(object domainEventHandler) { if (domainEventHandler is IReplayable) { _logger.SetOpType("replay", domainEventHandler.GetType().Name); IReplayable replayableHandler = (IReplayable)domainEventHandler; if (replayableHandler.ShouldReplay()) { //replay events var invokerOfThisType = _catalog.GetAllHandlerForSpecificHandlertype(domainEventHandler.GetType()); var eventList = invokerOfThisType .Select(i => i.Value.HandledType) .ToArray(); _logger.Info("[replay] - Handler " + domainEventHandler.GetType().Name + " handle " + eventList.Length + " domain events\n" + eventList.Select(t => t.Name).Aggregate((s1, s2) => s1 + "\n" + s2)); replayableHandler.StartReplay(); var allEvents = _rawEventStore.LoadEvents(eventList); Int32 eventcount = 0; foreach (var domainEvent in allEvents) { invokerOfThisType[domainEvent.GetType()].Invoke(domainEvent); eventcount++; } replayableHandler.EndReplay(); _logger.Info("[replay] - replayed " + eventcount + " events for handler " + domainEventHandler.GetType().Name); } _logger.RemoveOpType(); } }
private void CallUpdatePlayMethods(float i_LastPlayedTime, float i_PlayTime) { for (int index = 0; index < m_Replayables.Count; ++index) { IReplayable replayable = m_Replayables[index]; if (replayable != null) { replayable.UpdatePlay(i_LastPlayedTime, i_PlayTime); } } }
private void CallStopPlayMethods() { for (int index = 0; index < m_Replayables.Count; ++index) { IReplayable replayable = m_Replayables[index]; if (replayable != null) { replayable.StopPlay(); } } }
private void CallStartPlayMethods(float i_StartTime) { for (int index = 0; index < m_Replayables.Count; ++index) { IReplayable replayable = m_Replayables[index]; if (replayable != null) { replayable.StartPlay(i_StartTime); } } }
private void CallUpdateRecordMethods(float i_DeltaTime) { for (int index = 0; index < m_Replayables.Count; ++index) { IReplayable replayable = m_Replayables[index]; if (replayable != null) { replayable.UpdateRecord(i_DeltaTime); } } }