listener: get announcement server url from the config file
This commit is contained in:
parent
4e84774cb1
commit
39394de3bc
|
@ -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);
|
||||
|
|
|
@ -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 ();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue