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));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        public bool TryCreate(StreamMessage message, out object envelope)
        {
            envelope = _eventMapping.HasEventType(message.Type) ? Create(message) : null;

            return(envelope != null);
        }