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)
|
public string GetConfigOption (string name)
|
||||||
{
|
{
|
||||||
XmlNode node = SelectSingleNode ("/sparkleshare/" + name);
|
XmlNode node = SelectSingleNode ("/sparkleshare/" + name);
|
||||||
|
|
|
@ -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 ();
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Reference in a new issue