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++; } } } }
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; } } }
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); } } }
public QueueEntry(IEnumerator <IndexedMessage> enumerator, IMessagesCollection collection) { this.enumerator = enumerator; this.collection = collection; }
public MergingCollectionEntry(IndexedMessage m, IMessagesCollection source, int sourceIndex) { this.Message = m; this.SourceCollection = source; this.SourceIndex = sourceIndex; }
public ListOnMessagesCollection(IMessagesCollection collection) { this.collection = collection; }