From 73f2b2c2dd67ba1c2a22d1fb8bf07fc36c519ef4 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Thu, 19 May 2011 16:41:46 +0100 Subject: [PATCH] listener: move more logic from Irc to Base --- SparkleLib/SparkleListenerBase.cs | 26 ++++++++++++++++++++++++++ SparkleLib/SparkleListenerIrc.cs | 28 +++------------------------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index 2962d913..9c8d8767 100644 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -52,6 +52,16 @@ namespace SparkleLib { // Starts listening for remote changes public abstract void Connect (); + private void AnnounceBase (string message) { + if (IsConnected) { + SparkleHelpers.DebugInfo ("Listener", "Announcing to " + this.channel + " on " + this.server); + Announce (message); + } else { + SparkleHelpers.DebugInfo ("Listener", "Not connected. Queuing message"); + this.announce_queue.Add (message); + } + } + // Announces to the channel that // we've pushed changes to the server public abstract void Announce (string message); @@ -85,18 +95,34 @@ namespace SparkleLib { public void OnConnected () { + SparkleHelpers.DebugInfo ("Listener", "Connected"); + if (Connected != null) Connected (); + + if (this.announce_queue.Count > 0) { + string message = this.announce_queue [this.announce_queue.Count - 1]; + this.announce_queue = new List (); + + SparkleHelpers.DebugInfo ("Listener", "Delivering queued messages..."); + Announce (message); + } } public void OnDisconnected () { + SparkleHelpers.DebugInfo ("Listener", "Disonnected"); + if (Disconnected != null) Disconnected (); } public void OnRemoteChange (string change_id) { + SparkleHelpers.DebugInfo ("Listener", "Got message from " + this.channel + " on " + this.server); + + this.changes_queue++; + if (RemoteChange != null) RemoteChange (change_id); } diff --git a/SparkleLib/SparkleListenerIrc.cs b/SparkleLib/SparkleListenerIrc.cs index 0ab5337d..f247b36a 100644 --- a/SparkleLib/SparkleListenerIrc.cs +++ b/SparkleLib/SparkleListenerIrc.cs @@ -31,6 +31,7 @@ namespace SparkleLib { private IrcClient client; private string nick; + public SparkleListenerIrc (string server, string folder_identifier, NotificationServerType type) : base (server, folder_identifier, type) { @@ -62,30 +63,15 @@ namespace SparkleLib { }; this.client.OnConnected += delegate { - SparkleHelpers.DebugInfo ("ListenerIrc", "Connected to " + base.channel + " on " + base.server); - OnConnected (); - - if (base.announce_queue.Count > 0) { - string message = base.announce_queue [base.announce_queue.Count - 1]; - base.announce_queue = new List (); - - SparkleHelpers.DebugInfo ("ListenerIrc", "Delivering queued messages..."); - Announce (message); - } }; this.client.OnDisconnected += delegate { - SparkleHelpers.DebugInfo ("ListenerIrc", "Disconnected from " + base.channel + " on " + base.server); - OnDisconnected (); }; this.client.OnChannelMessage += delegate (object o, IrcEventArgs args) { - SparkleHelpers.DebugInfo ("ListenerIrc", "Got message from " + base.channel + " on " + base.server); string message = args.Data.Message.Trim (); - base.changes_queue++; - OnRemoteChange (message); }; } @@ -111,7 +97,7 @@ namespace SparkleLib { // Disconnect when we time out this.client.Disconnect (); } catch (Meebey.SmartIrc4net.ConnectionException e) { - Console.WriteLine ("Could not connect: " + e.Message); + SparkleHelpers.DebugInfo ("ListenerIrc", "Could not connect to " + base.channel + " on " + base.server + ": " + e.Message); } }) ); @@ -122,13 +108,7 @@ namespace SparkleLib { public override void Announce (string message) { - if (IsConnected) { - SparkleHelpers.DebugInfo ("ListenerIrc", "Announcing to " + base.channel + " on " + base.server); - this.client.SendMessage (SendType.Message, base.channel, message); - } else { - SparkleHelpers.DebugInfo ("ListenerIrc", "Not connected. Queuing message"); - base.announce_queue.Add (message); - } + this.client.SendMessage (SendType.Message, base.channel, message); } @@ -154,7 +134,5 @@ namespace SparkleLib { Byte[] encoded_bytes = sha1.ComputeHash (bytes); return BitConverter.ToString (encoded_bytes).ToLower ().Replace ("-", ""); } - } - }