public virtual void OnEvent(IActivitiEvent @event) { IEventLoggerEventHandler eventHandler = GetEventHandler(@event); if (eventHandler != null) { // Events are flushed when command context is closed ICommandContext currentCommandContext = Context.CommandContext; IEventFlusher eventFlusher = (IEventFlusher)currentCommandContext.GetAttribute(EVENT_FLUSHER_KEY); if (eventFlusher == null) { eventFlusher = CreateEventFlusher(); if (eventFlusher == null) { eventFlusher = new DatabaseEventFlusher(); // Default } currentCommandContext.AddAttribute(EVENT_FLUSHER_KEY, eventFlusher); currentCommandContext.AddCloseListener(eventFlusher); currentCommandContext.AddCloseListener(new CommandContextCloseListenerAnonymousInnerClass(this)); } eventFlusher.AddEventHandler(eventHandler); } }
protected internal virtual IEventLoggerEventHandler InstantiateEventHandler(IActivitiEvent @event, Type eventHandlerClass) { try { IEventLoggerEventHandler eventHandler = Activator.CreateInstance(eventHandlerClass) as IEventLoggerEventHandler; eventHandler.TimeStamp = clock.CurrentTime; eventHandler.Event = @event; eventHandler.ObjectMapper = objectMapper; return(eventHandler); } catch (Exception) { log.LogWarning("Could not instantiate " + eventHandlerClass + ", this is most likely a programmatic error"); } return(null); }
public virtual void AddEventHandler(IEventLoggerEventHandler databaseEventLoggerEventHandler) { eventHandlers.Add(databaseEventLoggerEventHandler); }