Example #1
0
        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());
            }
        }
Example #2
0
 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);
 }
Example #3
0
 /// <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);
 }
Example #4
0
        /* 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);
        }
Example #7
0
        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);
        }
Example #8
0
 // 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++;
 }
Example #9
0
 public virtual void Dispose()
 {
     MessageSubject.Dispose();
     _messageQueue.Clear();
     if (PingTokenSource != null)
     {
         PingTokenSource.Cancel();
         PingTokenSource.Dispose();
     }
 }
Example #10
0
 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();
         }
     }
 }
Example #11
0
    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());
    }
Example #12
0
 private void WatermarkSubject_GotFocus(object sender, RoutedEventArgs e)
 {
     WatermarkSubject.Visibility = Visibility.Hidden;
     MessageSubject.Visibility   = Visibility.Visible;
     MessageSubject.Focus();
 }
Example #13
0
 public IDisposable Subscribe(IObserver <IMessage> observer)
 {
     return(MessageSubject.Subscribe(observer));
 }
Example #14
0
        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);
                }
            }
        }
Example #15
0
 public void OnError(Exception error)
 {
     MessageSubject.OnError(error);
 }