public void Notify() { //TODO: To Improve | A lot of work in one method StringBuilder MessageSubject = new StringBuilder("");; StringBuilder MessageBody = new StringBuilder(""); int itr = 1; //Create Message Subject and Body for new Jobs foreach (FeedItem fitem in feedItems) { if (IsRecent(fitem) && fitem.NotificationStatus == SentStatus.NotSent) { LogWriter.Logger.Instance.Log(LogWriter.Logger.MessageType.ERROR, "Recent Item: {0} {1} {2}", fitem.Title, fitem.Description, fitem.PublishedDate); MessageSubject = new StringBuilder(String.Format("Upwork Notifier - {0} Jobs", itr++)); MessageBody.Append(String.Format("Job Link: {0} {3} Time: {1} {3} Description: {2} {3} {3} {3} ", fitem.Link, fitem.PublishedDate, fitem.Description, Environment.NewLine)); fitem.NotificationStatus = SentStatus.Sent; } else { break; //Becuase If it was not recent then next Can Never be Recent Items are already sorted by Time } } //Send Email if (MessageBody.Length > 0) { SendEmail(MessageSubject.ToString(), MessageBody.ToString()); } }
private void StartPolling(CancellationToken cancellationToken) { Task.Factory.StartNew(async() => { int retry = 0; while (!cancellationToken.IsCancellationRequested) { if (!_httpUri.Contains("&sid=")) { await Task.Delay(20); continue; } try { await _httpPollingHandler.GetAsync(_httpUri, CancellationToken.None).ConfigureAwait(false); } catch (Exception e) { retry++; if (retry >= 3) { MessageSubject.OnError(e); break; } await Task.Delay(100 * (int)Math.Pow(2, retry)); } } }, TaskCreationOptions.LongRunning); }
/// <summary> /// <para>Eio3 ping is sent by the client</para> /// <para>Eio4 ping is sent by the server</para> /// </summary> /// <param name="cancellationToken"></param> private void StartPing(CancellationToken cancellationToken) { _logger.LogDebug($"[Ping] Interval: {OpenedMessage.PingInterval}"); Task.Factory.StartNew(async() => { while (!cancellationToken.IsCancellationRequested) { await Task.Delay(OpenedMessage.PingInterval); if (cancellationToken.IsCancellationRequested) { break; } try { var ping = new PingMessage(); _logger.LogDebug($"[Ping] Sending"); await SendAsync(ping, CancellationToken.None).ConfigureAwait(false); _logger.LogDebug($"[Ping] Has been sent"); _pingTime = DateTime.Now; MessageSubject.OnNext(ping); } catch (Exception e) { _logger.LogDebug($"[Ping] Failed to send, {e.Message}"); MessageSubject.OnError(e); break; } } }, TaskCreationOptions.LongRunning); }
/* Complaints and Questions */ // Send message private void BtnMessageAdd_Click(object sender, EventArgs e) { // Get message data MessageSubject messageType = (MessageSubject)cbxMessageType.SelectedIndex; string messageDesc = tbxMessageDescription.Text; DateTime currentDate = DateTime.Now; int currentStudentId = currentUser.Id; if (cbxMessageType.SelectedIndex == -1) { MessageBox.Show("Please select a subject"); } else if (messageDesc.Length == 0) { MessageBox.Show("Please insert your message"); } else { // Create Message studentsHousing.CreateMessage(currentDate, messageType, messageDesc, currentStudentId); MessageBox.Show("Your message was successfully sent"); //Display messages in list view UpdateMessagesListView(); } }
static void Main(string[] args) { //sample 2 var messagePublisher = new MessageSubject(); var postTitle = new Post() { Message = "this is new post" }; var emailObserver = new EmailObserver(); var telegramObserver = new TelegramObserver(); var smsObserver = new SMSObserver(); messagePublisher.MessagePublisher += emailObserver.onEmailObserver; messagePublisher.MessagePublisher += telegramObserver.onTelegramObsever; messagePublisher.MessagePublisher += smsObserver.onSMSObsever; messagePublisher.onPublisher(postTitle); //=================================================================== //sample 1 //var person = new Person(); //person.FallsIll += CallDoctor; //person.CatchACold(); Console.ReadKey(); }
/* Messages */ // Create Message public void CreateMessage(DateTime currentDate, MessageSubject messageType, string messageDesc, int currentStudentId) { message = new Message(currentDate, messageType, messageDesc, currentStudentId); // Add message to list AddMessageToList(message); }
public int CompareTo(object obj) { ViewSettings otherViewSettings = obj as ViewSettings; if (Name.CompareTo(otherViewSettings.Name) == 0 && EnableSSL.CompareTo(otherViewSettings.EnableSSL) == 0 && Host.CompareTo(otherViewSettings.Host) == 0 && Port.CompareTo(otherViewSettings.Port) == 0 && UserEmail.CompareTo(otherViewSettings.UserEmail) == 0 && UserPassword.CompareTo(otherViewSettings.UserPassword) == 0 && SenderName.CompareTo(otherViewSettings.SenderName) == 0 && SenderEmail.CompareTo(otherViewSettings.SenderEmail) == 0 && RecieverEmail.CompareTo(otherViewSettings.RecieverEmail) == 0 && MessageSubject.CompareTo(otherViewSettings.MessageSubject) == 0 && MessageBody.CompareTo(otherViewSettings.MessageBody) == 0 && SiteUrl.CompareTo(otherViewSettings.SiteUrl) == 0 && TableClassID.CompareTo(otherViewSettings.TableClassID) == 0 && CompareValue.CompareTo(otherViewSettings.CompareValue) == 0 && TimeStartSettings.CompareTo(otherViewSettings.TimeStartSettings) == 0 && NotNullColumn.CompareTo(otherViewSettings.NotNullColumn) == 0 && ColumnToCompare.CompareTo(otherViewSettings.ColumnToCompare) == 0) { return(0); } return(1); }
// Constructor public Message(DateTime dateCreated, MessageSubject subject, string message, int studentId) { this.Id = autoIncId; this.DateCreated = dateCreated; this.Subject = subject; this.MessageText = message; this.StudentId = studentId; autoIncId++; }
public virtual void Dispose() { MessageSubject.Dispose(); _messageQueue.Clear(); if (PingTokenSource != null) { PingTokenSource.Cancel(); PingTokenSource.Dispose(); } }
public void OnNext(byte[] bytes) { _logger.LogDebug($"[Receive] binary message"); if (_messageQueue.Count > 0) { var msg = _messageQueue.Peek(); msg.IncomingBytes.Add(bytes); if (msg.IncomingBytes.Count == msg.BinaryCount) { MessageSubject.OnNext(msg); _messageQueue.Dequeue(); } } }
protected void Page_Load(object sender, EventArgs e) { MessageSubject m = new MessageSubject(new MessageModel("插入Message", DateTime.Now)); SqlMessage sqlMessage = new SqlMessage(); XmlMessage xmlMessage = new XmlMessage(); m.Attach(sqlMessage); m.Attach(xmlMessage); var model = new MessageModel("插入Message", DateTime.Now); model.PropertyChanged += Model_PropertyChanged; System.Threading.Thread.Sleep(1000); Response.Write(m.Notify()); //修改了PublishTime就会通知所有观察者 m.PublishTime = DateTime.Now; Response.Write(m.Notify()); }
private void WatermarkSubject_GotFocus(object sender, RoutedEventArgs e) { WatermarkSubject.Visibility = Visibility.Hidden; MessageSubject.Visibility = Visibility.Visible; MessageSubject.Focus(); }
public IDisposable Subscribe(IObserver <IMessage> observer) { return(MessageSubject.Subscribe(observer)); }
public void OnNext(string text) { _logger.LogDebug($"[Receive] {text}"); var msg = MessageFactory.CreateMessage(Options.EIO, text); if (msg == null) { return; } if (msg.BinaryCount > 0) { msg.IncomingBytes = new List <byte[]>(msg.BinaryCount); _messageQueue.Enqueue(msg); return; } if (msg.Type == MessageType.Opened) { OpenAsync(msg as OpenedMessage).ConfigureAwait(false); } if (Options.EIO == 3) { if (msg.Type == MessageType.Connected) { var connectMsg = msg as ConnectedMessage; connectMsg.Sid = OpenedMessage.Sid; if ((string.IsNullOrEmpty(Namespace) && string.IsNullOrEmpty(connectMsg.Namespace)) || connectMsg.Namespace == Namespace) { if (PingTokenSource != null) { PingTokenSource.Cancel(); } PingTokenSource = new CancellationTokenSource(); StartPing(PingTokenSource.Token); } else { return; } } else if (msg.Type == MessageType.Pong) { var pong = msg as PongMessage; pong.Duration = DateTime.Now - _pingTime; } } MessageSubject.OnNext(msg); if (msg.Type == MessageType.Ping) { _pingTime = DateTime.Now; try { SendAsync(new PongMessage(), CancellationToken.None).ConfigureAwait(false); MessageSubject.OnNext(new PongMessage { Eio = Options.EIO, Protocol = Options.Transport, Duration = DateTime.Now - _pingTime }); } catch (Exception e) { OnError(e); } } }
public void OnError(Exception error) { MessageSubject.OnError(error); }