public static AcceptStreamMessageFilter WhenEqualToMessageType(EventHandlerModule[] modules, EventMapping mapping) { var acceptableEventNames = new HashSet <string>( modules .SelectMany(module => module.Handlers) .Select(handler => handler.Event) .Distinct() .Where(mapping.HasEventName) .Select(mapping.GetEventName) ); return(message => mapping.HasEventType(message.Type) && acceptableEventNames.Contains(message.Type)); }
public static AcceptStreamMessageFilter WhenEqualToMessageType(ConnectedProjection <BackOfficeContext>[] projections, EventMapping mapping) { var acceptableEventNames = new HashSet <string>( projections .SelectMany(module => module.Handlers) .Select(handler => handler.Message) .Distinct() .Where(envelope => envelope.IsGenericType && envelope.GetGenericTypeDefinition() == typeof(Envelope <>)) .Select(envelope => envelope.GenericTypeArguments[0]) .Distinct() .Where(mapping.HasEventName) .Select(mapping.GetEventName) ); return(message => mapping.HasEventType(message.Type) && acceptableEventNames.Contains(message.Type)); }
public bool TryCreate(StreamMessage message, out object envelope) { envelope = _eventMapping.HasEventType(message.Type) ? Create(message) : null; return(envelope != null); }