listener: get announcement server url from the config file

This commit is contained in:
Hylke Bons 2011-05-30 02:19:58 +01:00
parent 4e84774cb1
commit 39394de3bc
4 changed files with 25 additions and 21 deletions

View file

@ -188,6 +188,20 @@ namespace SparkleLib {
} }
public string GetAnnouncementsForFolder (string name)
{
foreach (XmlNode node_folder in SelectNodes ("/sparkleshare/folder")) {
if (node_folder ["name"].InnerText.Equals (name) &&
node_folder ["announcements"] != null) {
return node_folder ["announcements"].InnerText;
}
}
return null;
}
public string GetConfigOption (string name) public string GetConfigOption (string name)
{ {
XmlNode node = SelectSingleNode ("/sparkleshare/" + name); XmlNode node = SelectSingleNode ("/sparkleshare/" + name);

View file

@ -21,13 +21,6 @@ using System.Timers;
namespace SparkleLib { namespace SparkleLib {
public enum NotificationServerType
{
Own,
Central
}
public class SparkleAnnouncement { public class SparkleAnnouncement {
public readonly string FolderIdentifier; public readonly string FolderIdentifier;
@ -47,7 +40,7 @@ namespace SparkleLib {
private static List<SparkleListenerBase> listeners; private static List<SparkleListenerBase> listeners;
public static SparkleListenerIrc CreateIrcListener (string server, string folder_identifier, public static SparkleListenerIrc CreateIrcListener (string server, string folder_identifier,
NotificationServerType type) string announcements)
{ {
if (listeners == null) if (listeners == null)
listeners = new List<SparkleListenerBase> (); listeners = new List<SparkleListenerBase> ();
@ -56,8 +49,10 @@ namespace SparkleLib {
// Don't worry, we only use this server as a backup if you // Don't worry, we only use this server as a backup if you
// don't have your own. All data needed to connect is hashed and // don't have your own. All data needed to connect is hashed and
// we don't store any personal information ever // we don't store any personal information ever
if (type == NotificationServerType.Central) if (announcements == null)
server = "204.62.14.135"; server = "204.62.14.135";
else
server = announcements;
foreach (SparkleListenerBase listener in listeners) { foreach (SparkleListenerBase listener in listeners) {
if (listener.Server.Equals (server)) { if (listener.Server.Equals (server)) {
@ -68,7 +63,7 @@ namespace SparkleLib {
} }
SparkleHelpers.DebugInfo ("ListenerFactory", "Issued new listener for " + server); SparkleHelpers.DebugInfo ("ListenerFactory", "Issued new listener for " + server);
listeners.Add (new SparkleListenerIrc (server, folder_identifier, type)); listeners.Add (new SparkleListenerIrc (server, folder_identifier, announcements));
return (SparkleListenerIrc) listeners [listeners.Count - 1]; return (SparkleListenerIrc) listeners [listeners.Count - 1];
} }
} }
@ -105,7 +100,7 @@ namespace SparkleLib {
protected string server; protected string server;
protected Timer reconnect_timer = new Timer { Interval = 60 * 1000, Enabled = true }; protected Timer reconnect_timer = new Timer { Interval = 60 * 1000, Enabled = true };
public SparkleListenerBase (string server, string folder_identifier, NotificationServerType type) { public SparkleListenerBase (string server, string folder_identifier, string announcements) {
this.reconnect_timer.Elapsed += delegate { this.reconnect_timer.Elapsed += delegate {
if (!IsConnected && !this.is_connecting) if (!IsConnected && !this.is_connecting)
Reconnect (); Reconnect ();

View file

@ -31,8 +31,8 @@ namespace SparkleLib {
private string nick; private string nick;
public SparkleListenerIrc (string server, string folder_identifier, NotificationServerType type) : public SparkleListenerIrc (string server, string folder_identifier, string announcements) :
base (server, folder_identifier, type) base (server, folder_identifier, announcements)
{ {
base.server = server; base.server = server;
@ -129,7 +129,7 @@ namespace SparkleLib {
this.client.SendMessage (SendType.Message, channel, announcement.Message); this.client.SendMessage (SendType.Message, channel, announcement.Message);
// Also announce to ourselves for debugging purposes // Also announce to ourselves for debugging purposes
//OnRemoteChange (announcement); base.OnAnnouncement (announcement);
} }

View file

@ -223,13 +223,8 @@ namespace SparkleLib {
private void CreateListener () private void CreateListener ()
{ {
NotificationServerType server_type; this.listener = SparkleListenerFactory.CreateIrcListener (Domain, Identifier,
if (UsesNotificationCenter) SparkleConfig.DefaultConfig.GetAnnouncementsForFolder (Name));
server_type = NotificationServerType.Central;
else
server_type = NotificationServerType.Own;
this.listener = SparkleListenerFactory.CreateIrcListener (Domain, Identifier, server_type);
// Stop polling when the connection to the irc channel is succesful // Stop polling when the connection to the irc channel is succesful
this.listener.Connected += delegate { this.listener.Connected += delegate {