/// <summary>
 /// Gets the index of the first message in this block that has a sequence token at or before the provided token
 /// </summary>
 /// <param name="token"></param>
 /// <param name="comparer"></param>
 /// <returns></returns>
 public int GetIndexOfFirstMessageLessThanOrEqualTo(StreamSequenceToken token, ICacheDataComparer <TCachedMessage> comparer)
 {
     for (int i = writeIndex - 1; i >= readIndex; i--)
     {
         if (comparer.Compare(cachedMessages[i], token) <= 0)
         {
             return(i);
         }
     }
     throw new ArgumentOutOfRangeException("token");
 }
Exemple #2
0
        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.Compare(cachedMessages[i], streamIdentity) == 0)
                {
                    index = i;
                    return(true);
                }
            }

            index = writeIndex - 1;
            return(false);
        }
Exemple #3
0
 /// <summary>
 /// Compare a cached message with a sequence token to determine if it message is before or after the token
 /// </summary>
 /// <param name="cachedMessage"></param>
 /// <param name="comparer"></param>
 /// <param name="streamToken"></param>
 /// <returns></returns>
 public static int Compare <TCachedMessage>(this ICacheDataComparer <TCachedMessage> comparer, StreamSequenceToken streamToken, TCachedMessage cachedMessage)
 {
     return(0 - comparer.Compare(cachedMessage, streamToken));
 }
 public static int Compare <TCachedMessage>(this ICacheDataComparer <TCachedMessage> comparer, IStreamIdentity streamIdentity, TCachedMessage cachedMessage)
 {
     return(0 - comparer.Compare(cachedMessage, streamIdentity));
 }