Raven.Database.Impl.Synchronization.EtagSynchronizer.CalculateSynchronizationEtag C# (CSharp) Method

CalculateSynchronizationEtag() public method

public CalculateSynchronizationEtag ( Etag etag, Etag lastProcessedEtag ) : Etag
etag Raven.Abstractions.Util.Etag
lastProcessedEtag Raven.Abstractions.Util.Etag
return Raven.Abstractions.Util.Etag
		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;
		}