public void Announce (PryanetAnnouncement announcement) { if (!IsRecentAnnouncement (announcement)) { if (IsConnected) { PryanetLogger.LogInfo ("Listener", "Announcing message " + announcement.Message + " to " + announcement.FolderIdentifier + " on " + Server); AnnounceInternal (announcement); AddRecentAnnouncement (announcement); } else { PryanetLogger.LogInfo ("Listener", "Can't send message to " + Server + ". Queuing message"); this.queue_up [announcement.FolderIdentifier] = announcement; } } else { PryanetLogger.LogInfo ("Listener", "Already processed message " + announcement.Message + " to " + announcement.FolderIdentifier + " from " + Server); } }
private void ListenerAnnouncementReceivedDelegate (PryanetAnnouncement announcement) { string identifier = Identifier; if (!announcement.FolderIdentifier.Equals (identifier)) return; if (!announcement.Message.Equals (CurrentRevision)) { while (this.is_syncing) Thread.Sleep (100); PryanetLogger.LogInfo (Name, "Syncing due to announcement"); SyncDownBase (); } }
protected override void AnnounceInternal(PryanetAnnouncement announcement) { string to_send = "announce " + announcement.FolderIdentifier + " " + announcement.Message + "\n"; try { if (this.socket != null) this.socket.Send (Encoding.UTF8.GetBytes (to_send)); this.last_ping = DateTime.Now; } catch (Exception e) { this.is_connected = false; this.is_connecting = false; OnDisconnected (e.Message); } }
protected abstract void AnnounceInternal (PryanetAnnouncement announcent);
private void AddRecentAnnouncement (PryanetAnnouncement announcement) { List<PryanetAnnouncement> recent_announcements = GetRecentAnnouncements (announcement.FolderIdentifier); if (!IsRecentAnnouncement (announcement)) recent_announcements.Add (announcement); if (recent_announcements.Count > this.max_recent_announcements) recent_announcements.RemoveRange (0, recent_announcements.Count - this.max_recent_announcements); }
private bool IsRecentAnnouncement (PryanetAnnouncement announcement) { if (!this.recent_announcements.ContainsKey (announcement.FolderIdentifier)) { return false; } else { foreach (PryanetAnnouncement recent_announcement in GetRecentAnnouncements (announcement.FolderIdentifier)) { if (recent_announcement.Message.Equals (announcement.Message)) return true; } return false; } }
public void OnAnnouncement (PryanetAnnouncement announcement) { PryanetLogger.LogInfo ("Listener", "Got message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + Server); if (IsRecentAnnouncement (announcement)) return; AddRecentAnnouncement (announcement); AnnouncementReceived (announcement); }