repo: add better check for duplicate messages
This commit is contained in:
parent
26df391130
commit
25877948ad
|
@ -17,7 +17,6 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
|
|
||||||
namespace SparkleLib {
|
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)) {
|
if (announcement.FolderIdentifier.Equals (folder_identifier)) {
|
||||||
|
string message = announcement.Message;
|
||||||
this.queue_down.Remove (announcement);
|
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);
|
SparkleHelpers.DebugInfo ("Listener", "Got message from " + announcement.FolderIdentifier + " on " + this.server);
|
||||||
|
|
||||||
this.queue_down.Add (announcement);
|
this.queue_down.Add (announcement);
|
||||||
this.queue_down = this.queue_down.Distinct ().ToList ();
|
|
||||||
|
|
||||||
if (Announcement != null)
|
if (Announcement != null)
|
||||||
Announcement (announcement);
|
Announcement (announcement);
|
||||||
|
|
|
@ -256,14 +256,18 @@ namespace SparkleLib {
|
||||||
this.listener.Announcement += delegate (SparkleAnnouncement announcement) {
|
this.listener.Announcement += delegate (SparkleAnnouncement announcement) {
|
||||||
string identifier = Identifier;
|
string identifier = Identifier;
|
||||||
|
|
||||||
if (announcement.FolderIdentifier == identifier &&
|
if (announcement.FolderIdentifier.Equals (identifier) &&
|
||||||
!announcement.Message.Equals (CurrentRevision)) {
|
!announcement.Message.Equals (CurrentRevision)) {
|
||||||
|
|
||||||
if ((Status != SyncStatus.SyncUp) &&
|
if ((Status != SyncStatus.SyncUp) &&
|
||||||
(Status != SyncStatus.SyncDown) &&
|
(Status != SyncStatus.SyncDown) &&
|
||||||
!this.is_buffering) {
|
!this.is_buffering) {
|
||||||
|
|
||||||
while (this.listener.HasQueueDownAnnouncement (identifier))
|
string message;
|
||||||
SyncDownBase ();
|
while ((message = this.listener.NextQueueDownMessage (identifier)) != null) {
|
||||||
|
if (!message.Equals (CurrentRevision))
|
||||||
|
SyncDownBase ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue