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)
{
XmlNode node = SelectSingleNode ("/sparkleshare/" + name);

View file

@ -21,13 +21,6 @@ using System.Timers;
namespace SparkleLib {
public enum NotificationServerType
{
Own,
Central
}
public class SparkleAnnouncement {
public readonly string FolderIdentifier;
@ -47,7 +40,7 @@ namespace SparkleLib {
private static List<SparkleListenerBase> listeners;
public static SparkleListenerIrc CreateIrcListener (string server, string folder_identifier,
NotificationServerType type)
string announcements)
{
if (listeners == null)
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 have your own. All data needed to connect is hashed and
// we don't store any personal information ever
if (type == NotificationServerType.Central)
if (announcements == null)
server = "204.62.14.135";
else
server = announcements;
foreach (SparkleListenerBase listener in listeners) {
if (listener.Server.Equals (server)) {
@ -68,7 +63,7 @@ namespace SparkleLib {
}
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];
}
}
@ -105,7 +100,7 @@ namespace SparkleLib {
protected string server;
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 {
if (!IsConnected && !this.is_connecting)
Reconnect ();

View file

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

View file

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