From d0a4d126fcec7992c612c88509e602f6aeb9ceba Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Thu, 3 Nov 2011 17:15:59 -0600 Subject: [PATCH] attempting to prevent the same announcement from being processed twice --- SparkleLib/SparkleListenerBase.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index 09702fe6..2167c735 100755 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -16,8 +16,10 @@ using System; +using System.Collections; using System.Collections.Generic; using System.Timers; +using System.Linq; namespace SparkleLib { @@ -112,6 +114,7 @@ namespace SparkleLib { protected List channels = new List (); + protected Hashtable last_announce = new Hashtable (); protected List queue_up = new List (); protected List queue_down = new List (); protected bool is_connecting; @@ -197,8 +200,21 @@ namespace SparkleLib { public void OnAnnouncement (SparkleAnnouncement announcement) { - SparkleHelpers.DebugInfo ("Listener", "Got message from " + announcement.FolderIdentifier + " on " + this.server); + SparkleHelpers.DebugInfo ("Listener", "Got message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); + if (this.last_announce.ContainsKey (announcement.FolderIdentifier) ){ + SparkleHelpers.DebugInfo ("Listener", "Received previous message from " + announcement.FolderIdentifier + " on " + this.server); + if (this.last_announce[announcement.FolderIdentifier].Equals(announcement.Message)) { + SparkleHelpers.DebugInfo ("Listener", "Ignoring already processed announcment " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); + return; + } + } + + SparkleHelpers.DebugInfo ("Listener", "Processing message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); + if (this.last_announce.ContainsKey (announcement.FolderIdentifier) ) + this.last_announce.Remove (announcement.FolderIdentifier); + + this.last_announce.Add (announcement.FolderIdentifier, announcement.Message); this.queue_down.Add (announcement); if (Announcement != null)