コード例 #1
0
        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);
            }
        }
コード例 #2
0
        //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;
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }