Beispiel #1
0
        public void Update(object stateIgnored = null)
        {
            WpfLogMessageHandlerToolBase.SeqNumPair newSeqNumPair = WpfLogMessageHandlerToolBase.Instance.GetNewMessages(lastMesgSeqNumPair, ref updateMesgQueue);
            int maxMesgsToKeep = WpfLogMessageHandlerToolBase.Instance.MaxMessagesToKeep;

            if (!newSeqNumPair.AreThereAnyChanges(lastMesgSeqNumPair))
            {
                return;
            }

            bool resetContents = newSeqNumPair.IsContentReplaced(lastMesgSeqNumPair);

            if (resetContents)
            {
                ClearItems();
            }

            Logging.ILogMessage lm = null;
            int numMesgAdded = 0, numMesgDropped = 0;
            int idx = 0;

            if (Count > maxMesgsToKeep)
            {
                numMesgDropped = (Count - maxMesgsToKeep);
                for (idx = 0; idx < numMesgDropped; idx++)
                {
                    RemoveAt(0);
                }
            }

            while (updateMesgQueue.Count > 0)
            {
                lm = updateMesgQueue.Dequeue();
                if (LogFilterConfig.DisplayLogGate.IsTypeEnabled(lm.MesgType))
                {
                    if (Count >= maxMesgsToKeep)
                    {
                        numMesgDropped++;
                        RemoveAt(0);
                    }

                    Add(new LogMessageCollectionItem(lm));
                    numMesgAdded++;
                }
            }

            lastMesgSeqNumPair = newSeqNumPair;
        }
Beispiel #2
0
 public LogMessageCollectionItem(Logging.ILogMessage lm)
 {
     this.lm = lm;
 }
Beispiel #3
0
 public bool Equals(Logging.ILogMessage other)
 {
     return(other != null && other.Equals(this));
 }