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)); }
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); }
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))); }
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()); }
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); }
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; }
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)); }
protected override Pipe VisitRecipientList(RecipientListSegment recipientList) { WriteLine(recipientList); return(Indent(() => { return base.VisitRecipientList(recipientList); })); }
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)); }
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; }
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); }
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); }