repo: add better check for duplicate messages

This commit is contained in:
Hylke Bons 2011-11-04 00:05:25 +00:00
parent 26df391130
commit 25877948ad
2 changed files with 12 additions and 11 deletions

View file

@ -17,7 +17,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Timers;
namespace SparkleLib {
@ -147,18 +146,17 @@ namespace SparkleLib {
}
public bool HasQueueDownAnnouncement (string folder_identifier)
public string NextQueueDownMessage (string folder_identifier)
{
this.queue_down = this.queue_down.Distinct ().ToList ();
foreach (SparkleAnnouncement announcement in this.queue_down.GetRange(0, this.queue_down.Count)) {
foreach (SparkleAnnouncement announcement in this.queue_down.GetRange (0, this.queue_down.Count)) {
if (announcement.FolderIdentifier.Equals (folder_identifier)) {
string message = announcement.Message;
this.queue_down.Remove (announcement);
return true;
return message;
}
}
return false;
return null;
}
@ -201,7 +199,6 @@ namespace SparkleLib {
SparkleHelpers.DebugInfo ("Listener", "Got message from " + announcement.FolderIdentifier + " on " + this.server);
this.queue_down.Add (announcement);
this.queue_down = this.queue_down.Distinct ().ToList ();
if (Announcement != null)
Announcement (announcement);

View file

@ -256,14 +256,18 @@ namespace SparkleLib {
this.listener.Announcement += delegate (SparkleAnnouncement announcement) {
string identifier = Identifier;
if (announcement.FolderIdentifier == identifier &&
if (announcement.FolderIdentifier.Equals (identifier) &&
!announcement.Message.Equals (CurrentRevision)) {
if ((Status != SyncStatus.SyncUp) &&
(Status != SyncStatus.SyncDown) &&
!this.is_buffering) {
while (this.listener.HasQueueDownAnnouncement (identifier))
SyncDownBase ();
string message;
while ((message = this.listener.NextQueueDownMessage (identifier)) != null) {
if (!message.Equals (CurrentRevision))
SyncDownBase ();
}
}
}
};