/// <summary> /// Tries to get the next message from the provided stream, starting at the start index. /// </summary> /// <param name="start"></param> /// <param name="streamIdentity"></param> /// <param name="comparer"></param> /// <param name="index"></param> /// <returns></returns> public bool TryFindNextMessage(int start, IStreamIdentity streamIdentity, ICacheDataComparer <TCachedMessage> comparer, out int index) { if (start < readIndex) { throw new ArgumentOutOfRangeException("start"); } for (int i = start; i < writeIndex; i++) { if (comparer.Equals(cachedMessages[i], streamIdentity)) { index = i; return(true); } } index = writeIndex - 1; return(false); }
/// <summary> /// Checks to see if the cached message is part of the provided stream /// </summary> /// <param name="cachedMessage"></param> /// <param name="comparer"></param> /// <param name="streamIdentity"></param> /// <returns></returns> public static bool Equals <TCachedMessage>(this ICacheDataComparer <TCachedMessage> comparer, IStreamIdentity streamIdentity, TCachedMessage cachedMessage) { return(comparer.Equals(cachedMessage, streamIdentity)); }