listener: Fix race condition in channel subscriptions
This commit is contained in:
parent
ed5074aae0
commit
4cac379a2f
|
@ -96,10 +96,11 @@ namespace SparkleLib {
|
||||||
|
|
||||||
public void AlsoListenTo (string channel)
|
public void AlsoListenTo (string channel)
|
||||||
{
|
{
|
||||||
if (!this.channels.Contains (channel) && IsConnected) {
|
if (!this.channels.Contains (channel))
|
||||||
SparkleLogger.LogInfo ("Listener", "Subscribing to channel " + channel + " on " + Server);
|
|
||||||
|
|
||||||
this.channels.Add (channel);
|
this.channels.Add (channel);
|
||||||
|
|
||||||
|
if (IsConnected) {
|
||||||
|
SparkleLogger.LogInfo ("Listener", "Subscribing to channel " + channel + " on " + Server);
|
||||||
AlsoListenToInternal (channel);
|
AlsoListenToInternal (channel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,6 +115,11 @@ namespace SparkleLib {
|
||||||
|
|
||||||
public void OnConnected ()
|
public void OnConnected ()
|
||||||
{
|
{
|
||||||
|
foreach (string channel in this.channels.GetRange (0, this.channels.Count)) {
|
||||||
|
SparkleLogger.LogInfo ("Listener", "Subscribing to channel " + channel + " on " + Server);
|
||||||
|
AlsoListenToInternal (channel);
|
||||||
|
}
|
||||||
|
|
||||||
SparkleLogger.LogInfo ("Listener", "Listening for announcements on " + Server);
|
SparkleLogger.LogInfo ("Listener", "Listening for announcements on " + Server);
|
||||||
Connected ();
|
Connected ();
|
||||||
|
|
||||||
|
@ -139,8 +145,7 @@ namespace SparkleLib {
|
||||||
|
|
||||||
public void OnAnnouncement (SparkleAnnouncement announcement)
|
public void OnAnnouncement (SparkleAnnouncement announcement)
|
||||||
{
|
{
|
||||||
SparkleLogger.LogInfo ("Listener",
|
SparkleLogger.LogInfo ("Listener", "Got message " + announcement.Message + " from " +
|
||||||
"Got message " + announcement.Message + " from " +
|
|
||||||
announcement.FolderIdentifier + " on " + Server);
|
announcement.FolderIdentifier + " on " + Server);
|
||||||
|
|
||||||
if (IsRecentAnnouncement (announcement)) {
|
if (IsRecentAnnouncement (announcement)) {
|
||||||
|
|
Loading…
Reference in a new issue