Exemplo n.º 1
0
        private Pipe VisitObjectRecipientList(RecipientListSegment recipientList)
        {
            var result = base.VisitRecipientList(recipientList) as RecipientListSegment;

            if (result == null)
            {
                return(null);
            }

            if (_bound)
            {
                return(result);
            }

            Pipe list   = PipeSegment.RecipientList(_segment.MessageType, new[] { _segment });
            Pipe filter = PipeSegment.Filter(list, _segment.MessageType);

            IList <Pipe> recipients = new List <Pipe>(result.Recipients);

            recipients.Add(filter);

            _bound = true;

            return(new RecipientListSegment(recipientList.MessageType, recipients));
        }
Exemplo n.º 2
0
        protected virtual Pipe VisitRecipientList(RecipientListSegment recipientList)
        {
            if (recipientList == null)
            {
                return(null);
            }

            bool         modified   = false;
            IList <Pipe> recipients = new List <Pipe>();

            foreach (Pipe recipient in recipientList.Recipients)
            {
                Pipe result = Visit(recipient);
                if (result != recipient)
                {
                    modified = true;
                }

                if (result != null)
                {
                    recipients.Add(result);
                }
            }

            if (modified)
            {
                return(new RecipientListSegment(recipientList.MessageType, recipients));
            }

            return(recipientList);
        }
Exemplo n.º 3
0
        protected override Pipe VisitRecipientList(RecipientListSegment recipientList)
        {
            _lastNodeVertex = GetSink(recipientList.GetHashCode(), () => "List", typeof(RecipientListSegment),
                                      recipientList.MessageType);

            if (_stack.Count > 0)
            {
                _edges.Add(new Edge(_stack.Peek(), _lastNodeVertex, _lastNodeVertex.TargetType.Name));
            }

            return(Recurse(() => base.VisitRecipientList(recipientList)));
        }
Exemplo n.º 4
0
        public void Should_contain_all_nodes()

        {
            MessageConsumerSegment consumer      = PipeSegment.Consumer <SomethingHappenedEvent>(x => { });
            EndSegment             end           = PipeSegment.End <SomethingHappenedEvent>();
            RecipientListSegment   recipientList = PipeSegment.RecipientList <SomethingHappenedEvent>(new Pipe[] { consumer, end });
            FilterSegment          filter        = PipeSegment.Filter <object>(recipientList);
            Pipe input = PipeSegment.Input(filter);

            //var generator = new PipelineGraphGenerator();

            //string filename = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "graph.png");

            //generator.SaveGraphToFile(input.GetGraphData(), 2560, 1920, filename);

            PipelineDebugVisualizer.TestShowVisualizer(input.GetGraphData());
        }
Exemplo n.º 5
0
        protected override Pipe VisitRecipientList(RecipientListSegment recipientList)
        {
            if (recipientList == null)
            {
                return(null);
            }

            bool         modified   = false;
            IList <Pipe> recipients = new List <Pipe>();

            foreach (Pipe recipient in recipientList.Recipients)
            {
                Pipe result = Visit(recipient);
                if (result == null)
                {
                    modified = true;
                    continue;
                }

                if (_segmentsToUnbind.Contains(result))
                {
                    modified = true;
                    _pipe.Send(new SubscriberRemoved {
                        MessageType = result.MessageType
                    });
                    continue;
                }

                if (result != recipient)
                {
                    modified = true;
                }

                recipients.Add(result);
            }

            if (modified)
            {
                return(new RecipientListSegment(recipientList.MessageType, recipients));
            }

            return(recipientList);
        }
Exemplo n.º 6
0
        protected override Pipe VisitRecipientList(RecipientListSegment recipientList)
        {
            if (recipientList == null)
                return null;

            bool modified = false;
            IList<Pipe> recipients = new List<Pipe>();

            foreach (Pipe recipient in recipientList.Recipients)
            {
                Pipe result = Visit(recipient);
                if (result == null)
                {
                    modified = true;
                    continue;
                }

                if (_segmentsToUnbind.Contains(result))
                {
                    modified = true;
                    _pipe.Send(new SubscriberRemoved {MessageType = result.MessageType});
                    continue;
                }

                if (result != recipient)
                {
                    modified = true;
                }

                recipients.Add(result);
            }

            if (modified)
            {
                return new RecipientListSegment(recipientList.MessageType, recipients);
            }

            return recipientList;
        }
Exemplo n.º 7
0
        protected override Pipe VisitRecipientList(RecipientListSegment recipientList)
        {
            if (recipientList == null)
            {
                return(null);
            }

            if (recipientList.MessageType != _messageType)
            {
                if (recipientList.MessageType == typeof(object))
                {
                    return(VisitObjectRecipientList(recipientList));
                }

                return(base.VisitRecipientList(recipientList));
            }

            IList <Pipe> recipients = VisitRecipients(recipientList.Recipients);

            recipients.Add(_segment);
            _bound = true;

            return(new RecipientListSegment(recipientList.MessageType, recipients));
        }
Exemplo n.º 8
0
 protected override Pipe VisitRecipientList(RecipientListSegment recipientList)
 {
     WriteLine(recipientList);
     return(Indent(() => { return base.VisitRecipientList(recipientList); }));
 }
Exemplo n.º 9
0
        protected override Pipe VisitRecipientList(RecipientListSegment recipientList)
        {
            _lastNodeVertex = GetSink(recipientList.GetHashCode(), () => "List", typeof(RecipientListSegment),
                                      recipientList.MessageType);

            if (_stack.Count > 0)
                _edges.Add(new Edge(_stack.Peek(), _lastNodeVertex, _lastNodeVertex.TargetType.Name));

            return Recurse(() => base.VisitRecipientList(recipientList));
        }
Exemplo n.º 10
0
        protected virtual Pipe VisitRecipientList(RecipientListSegment recipientList)
        {
            if (recipientList == null)
                return null;

            bool modified = false;
            IList<Pipe> recipients = new List<Pipe>();

            foreach (Pipe recipient in recipientList.Recipients)
            {
                Pipe result = Visit(recipient);
                if (result != recipient)
                    modified = true;

                if (result != null)
                    recipients.Add(result);
            }

            if (modified)
                return new RecipientListSegment(recipientList.MessageType, recipients);

            return recipientList;
        }
Exemplo n.º 11
0
        protected override Pipe VisitRecipientList(RecipientListSegment recipientList)
        {
            if (recipientList == null)
                return null;

            if (recipientList.MessageType != _messageType)
            {
                if (recipientList.MessageType == typeof (object))
                    return VisitObjectRecipientList(recipientList);

                return base.VisitRecipientList(recipientList);
            }

            IList<Pipe> recipients = VisitRecipients(recipientList.Recipients);

            recipients.Add(_segment);
            _bound = true;

            return new RecipientListSegment(recipientList.MessageType, recipients);
        }
Exemplo n.º 12
0
        private Pipe VisitObjectRecipientList(RecipientListSegment recipientList)
        {
            var result = base.VisitRecipientList(recipientList) as RecipientListSegment;
            if (result == null)
                return null;

            if (_bound)
                return result;

            Pipe list = PipeSegment.RecipientList(_segment.MessageType, new[] {_segment});
            Pipe filter = PipeSegment.Filter(list, _segment.MessageType);

            IList<Pipe> recipients = new List<Pipe>(result.Recipients);
            recipients.Add(filter);

            _bound = true;

            return new RecipientListSegment(recipientList.MessageType, recipients);
        }