public override void Evaluate(int SpreadMax) { var update = CheckReset(); if (FInput.IsChanged && !FInput.IsAnyInvalid()) { foreach (var message in FInput) { if (!Keep.Contains(message)) { Keep.Add(message); update = true; } } } if (UpKeep()) { update = true; } if (update) { FOutput.FlushResult(Keep); } }
//called when data for any output pin is requested public override void Evaluate(int SpreadMax) { var update = CheckReset(); if (!FInput.IsAnyInvalid() && FInput.IsChanged) { foreach (var message in FInput) { if (!Keep.Contains(message)) { Keep.Add(message); update = true; } } } if (RemoveOldOrFlagged()) { update = true; } if (UpKeep(update)) { update = true; } }
protected override bool CheckRemove() { var anyChange = false; if (!FRemove.IsAnyInvalid()) { foreach (var message in FRemove) { if (Keep.Contains(message)) { anyChange |= Keep.Remove(message); DeadMessages.Add(message); } else { var idFields = from fieldName in FUseAsID select fieldName.Name; var match = MatchByField(message, idFields); if (match != null) { anyChange = true; DeadMessages.Add(match); Keep.Remove(match); } } } } return(anyChange); }
protected override bool CheckRemove() { var anyChange = false; if (!FRemove.IsAnyInvalid()) { foreach (var message in FRemove) { if (Keep.Contains(message)) { anyChange |= Keep.Remove(message); DeadMessages.Add(message); } } } return(anyChange); }