public IEnumerable <IndexedMessage> Forward(int startPos, int endPosition)
        {
            using (IEnumerator <IMessagesCollection> e = GetCollectionsToConcat().GetEnumerator())
            {
                if (!MoveToNextNotEmptyCollection(e))
                {
                    yield break;
                }
                startPos = Math.Max(startPos, 0);
                int pos = startPos;
                for (; startPos < endPosition;)
                {
                    for (; pos >= e.Current.Count;)
                    {
                        pos -= e.Current.Count;
                        if (!MoveToNextNotEmptyCollection(e))
                        {
                            yield break;
                        }
                    }
                    IMessagesCollection currentCollection = e.Current;
                    foreach (IndexedMessage l in currentCollection.Forward(pos, int.MaxValue))
                    {
                        if (startPos >= endPosition)
                        {
                            break;
                        }
                        yield return(new IndexedMessage(startPos, l.Message));

                        startPos++;
                        pos++;
                    }
                }
            }
        }
Esempio n. 2
0
        void CheckCollection(IMessagesCollection coll, params int[] exp)
        {
            Assert.AreEqual(exp.Length, coll.Count);
            int idx = 0;

            foreach (IndexedMessage m in coll.Forward(0, int.MaxValue))
            {
                Assert.AreEqual(idx, m.Index);
                Assert.AreEqual(exp[idx].ToString(), m.Message.Text.ToString());
                ++idx;
            }
            IEnumerable <IndexedMessage> e2 = coll.Reverse(int.MaxValue, -1);

            if (e2 != null)
            {
                idx = coll.Count - 1;
                foreach (IndexedMessage m in e2)
                {
                    Assert.AreEqual(idx, m.Index);
                    Assert.AreEqual(exp[idx].ToString(), m.Message.Text.ToString());
                    --idx;
                }
            }
        }
Esempio n. 3
0
            public void HandleHangingFrames(IMessagesCollection messagesCollection)
            {
                if (!thereAreHangingEndFrames)
                {
                    return;
                }

                foreach (ThreadInfo t in threads.Values)
                {
                    t.ResetFrames();
                }

                foreach (IndexedMessage r in messagesCollection.Reverse(int.MaxValue, -1))
                {
                    ThreadInfo t = GetThreadInfo(r.Message.Thread);
                    r.Message.SetLevel(r.Message.Level + t.frames.Count);

                    var fe = r.Message as IFrameEnd;
                    if (fe != null && fe.Start == null)
                    {
                        t.frames.Push(r.Message);
                    }
                }
            }
Esempio n. 4
0
 public QueueEntry(IEnumerator <IndexedMessage> enumerator, IMessagesCollection collection)
 {
     this.enumerator = enumerator;
     this.collection = collection;
 }
Esempio n. 5
0
 public MergingCollectionEntry(IndexedMessage m, IMessagesCollection source, int sourceIndex)
 {
     this.Message          = m;
     this.SourceCollection = source;
     this.SourceIndex      = sourceIndex;
 }
Esempio n. 6
0
 public ListOnMessagesCollection(IMessagesCollection collection)
 {
     this.collection = collection;
 }