public Etag CalculateSynchronizationEtag(Etag etag, Etag lastProcessedEtag)
{
if (etag == null)
{
if (lastProcessedEtag != null)
{
lock (locker)
{
if (currentEtag == null && lastProcessedEtag.CompareTo(synchronizationEtag) != 0)
{
synchronizationEtag = lastProcessedEtag;
PersistSynchronizationState();
}
}
return lastProcessedEtag;
}
return Etag.Empty;
}
if (lastProcessedEtag == null)
return Etag.Empty;
if (etag.CompareTo(lastProcessedEtag) < 0)
return EtagUtil.Increment(etag, -1);
return lastProcessedEtag;
}