public void Clear(string id = DefaultId)
 {
     OnAlert?.Invoke(new Alert {
         Id = id
     });
 }
Beispiel #2
0
 public void AddAlert(string message, AlertType type) => OnAlert.Invoke(this, new Alert(message, type));
 public void Alert(Alert alert)
 {
     alert.Id ??= DefaultId;
     OnAlert?.Invoke(alert);
 }
Beispiel #4
0
        public void Update()
        {
            if ((DateTime.Now - lastCheck).TotalSeconds > refreshInterval)
            {
                lastCheck = DateTime.Now;

                List <Tweet> fresh = twitter.FetchTweets();
                if (fresh != null && fresh.Count > 0)
                {
                    foreach (Tweet t in fresh)
                    {
                        Alert newAlert = null;

                        string tweetText = t.Text;
                        Console.WriteLine(t.Text);
                        Match match = Regex.Match(tweetText, @"([A-Za-z\s\-)]+) (\([A-Za-z\s]+\)): ([A-Za-z\t\s\']+) - ([0-9]+)m - ([0-9]+)cr[\t\s]?-?[\s]?([A-Za-z\t\s\(\)]+)?", RegexOptions.IgnoreCase);
                        if (match.Success)
                        {
                            string location = match.Groups[1].Value + " " + match.Groups[2].Value;
                            string title    = match.Groups[3].Value;
                            string duration = match.Groups[4].Value;
                            string credits  = match.Groups[5].Value;
                            string reward   = match.Groups[6].Value;
                            Console.WriteLine(reward);
                            newAlert = new Alert(location, title, duration, credits, reward, t.Created, GetEndTime(t.Created, duration));
                        }

                        if (newAlert != null)
                        {
                            DateTime Expires   = newAlert.Expires;
                            DateTime Now       = DateTime.Now;
                            TimeSpan Remaining = Expires - Now;
                            newAlert.Remaining = Remaining;
                            if (!ProgramOptions.ShowAll && ProgramOptions.MinCredits > Int32.Parse(newAlert.Credits) && newAlert.Reward != null)
                            {
                                newAlert.Show = false;
                            }
                            if (Remaining.Minutes > 1 && newAlert.Show)
                            {
                                list.Add(newAlert);
                                App.Current.Dispatcher.BeginInvoke((Action) delegate()
                                {
                                    Balloon balloon     = new Balloon();
                                    balloon.DataContext = newAlert;
                                    taskbarIcon.ShowCustomBalloon(balloon, PopupAnimation.Slide, 99999999);
                                    viewList.Add(newAlert);
                                    if (ProgramOptions.PlaySound)
                                    {
                                        sp = new SoundPlayer(ProgramOptions.Sound);
                                        sp.Stream.Position = 0;
                                        sp.Play();
                                    }
                                });
                            }
                        }
                    }

                    if (OnAlert != null)
                    {
                        OnAlert.Invoke();
                    }
                }
            }
        }
Beispiel #5
0
        private void _alertEventHandler(object sender, DoWorkEventArgs e)
        {
            var timeout  = TimeSpan.FromSeconds(0.5);
            var lastPost = DateTime.Now;
            var worker   = sender as Worker.BackgroundWorker;

            while (!worker.CancellationPending)
            {
                if ((DateTime.Now - lastPost).TotalSeconds > 1)
                {
                    _session.PostTorrentUpdates();

                    lastPost = DateTime.Now;
                }

                var foundAlerts = _session.Alerts.PeekWait(timeout);
                if (!foundAlerts)
                {
                    continue;
                }

                var alerts = _session.Alerts.PopAll();

                foreach (var alert in alerts)
                {
                    Console.WriteLine(alert.GetType().ToString() + " :" + alert.Message);
                    if (alert is TorrentAddedAlert)
                    {
                        OnTorrentAddedAlert?.Invoke(this, alert as TorrentAddedAlert);
                    }
                    else if (alert is StateUpdateAlert)
                    {
                        OnStateUpdateAlert?.Invoke(this, alert as StateUpdateAlert);
                    }
                    else if (alert is StateChangedAlert)
                    {
                        OnStateChangedAlert?.Invoke(this, alert as StateChangedAlert);
                    }
                    else if (alert is TorrentResumedAlert)
                    {
                        OnTorrentResumedAlert?.Invoke(this, alert as TorrentResumedAlert);
                    }
                    else if (alert is StatsAlert)
                    {
                        OnStatsAlert?.Invoke(this, alert as StatsAlert);
                    }
                    else if (alert is TorrentCheckedAlert)
                    {
                        OnTorrentCheckedAlert?.Invoke(this, alert as TorrentCheckedAlert);
                    }
                    else if (alert is SaveResumeDataAlert)
                    {
                        OnSaveResumeDataAlert?.Invoke(this, alert as SaveResumeDataAlert);
                    }
                    else
                    {
                        OnAlert?.Invoke(this, alert);
                    }
                }
            }
            e.Cancel = true;
        }
Beispiel #6
0
 public void ClearNotification(Guid id)
 {
     OnAlert?.Invoke(new NotificationModel {
         Id = id
     });
 }
Beispiel #7
0
 public void TriggerNotification(NotificationModel alert)
 {
     alert.Id = Guid.NewGuid();
     OnAlert?.Invoke(alert);
 }
        /// <summary>
        /// Alerts the player with a message for a set duration
        /// </summary>
        /// <param name="message">The message to alert with</param>
        /// <param name="duration">How long should the message stay on the screen</param>
        public static void Alert(string message, float duration)
        {
            UnityEngine.Debug.Log(message);

            OnAlert?.Invoke(message, duration);
        }
        /// <summary>
        /// Alerts the player with a message
        /// </summary>
        public static void Alert(string message)
        {
            UnityEngine.Debug.Log(message);

            OnAlert?.Invoke(message, 0f);
        }
Beispiel #10
0
        private async Task ReadStream()
        {
            while (!Closing)
            {
                try
                {
                    //try to read a header
                    var hdata = new byte[24];
                    await Stream.ReadAsyncExact(hdata, 0, hdata.Length);

                    var h = new MessageHeader();
                    h.ReadFromPayload(hdata, 0);
                    if (h != null)
                    {
                        //read the payload
                        var pl = new byte[h.PayloadSize];
                        await Stream.ReadAsyncExact(pl, 0, pl.Length);

                        bool checksumOk = false;

                        //verify hash
                        using (var sha = SHA256.Create())
                        {
                            var h1 = sha.ComputeHash(pl);
                            var h2 = sha.ComputeHash(h1);

                            checksumOk = h2[0] == h.Checksum[0] && h2[1] == h.Checksum[1] && h2[2] == h.Checksum[2] && h2[3] == h.Checksum[3];
                        }

                        if (checksumOk)
                        {
                            switch (h.Command)
                            {
                            case "addr\0\0\0\0\0\0\0\0":
                            {
                                if (OnAddr != null)
                                {
                                    var a = new Addr();
                                    a.ReadFromPayload(pl, 0);

                                    await OnAddr?.Invoke(this, a);
                                }
                                break;
                            }

                            case "alert\0\0\0\0\0\0\0":
                            {
                                if (OnAlert != null)
                                {
                                    var a = new Alert();
                                    a.ReadFromPayload(pl, 0);

                                    await OnAlert?.Invoke(this, a);
                                }
                                break;
                            }

                            case "feefilter\0\0\0":
                            {
                                if (OnFeeFilter != null)
                                {
                                    var f = new FeeFilter();
                                    f.ReadFromPayload(pl, 0);

                                    await OnFeeFilter?.Invoke(this, f);
                                }
                                break;
                            }

                            case "filteradd\0\0\0":
                            {
                                if (OnFilterAdd != null)
                                {
                                    var f = new FilterAdd();
                                    f.ReadFromPayload(pl, 0);

                                    await OnFilterAdd?.Invoke(this, f);
                                }
                                break;
                            }

                            case "filterclear\0":
                            {
                                if (OnFilterClear != null)
                                {
                                    var f = new FilterClear();
                                    f.ReadFromPayload(pl, 0);

                                    await OnFilterClear?.Invoke(this, f);
                                }
                                break;
                            }

                            case "filterload\0\0":
                            {
                                if (OnFilterLoad != null)
                                {
                                    var f = new FilterLoad();
                                    f.ReadFromPayload(pl, 0);

                                    await OnFilterLoad?.Invoke(this, f);
                                }
                                break;
                            }

                            case "getaddr\0\0\0\0\0":
                            {
                                if (OnGetAddr != null)
                                {
                                    var ga = new GetAddr();
                                    ga.ReadFromPayload(pl, 0);

                                    await OnGetAddr?.Invoke(this, ga);
                                }
                                break;
                            }

                            case "getblocks\0\0\0":
                            {
                                if (OnGetBlocks != null)
                                {
                                    var gb = new GetBlocks();
                                    gb.ReadFromPayload(pl, 0);

                                    await OnGetBlocks?.Invoke(this, gb);
                                }
                                break;
                            }

                            case "getdata\0\0\0\0\0":
                            {
                                if (OnGetData != null)
                                {
                                    var gd = new GetData();
                                    gd.ReadFromPayload(pl, 0);

                                    await OnGetData?.Invoke(this, gd);
                                }
                                break;
                            }

                            case "getheaders\0\0":
                            {
                                if (OnGetHeaders != null)
                                {
                                    var gh = new GetHeaders();
                                    gh.ReadFromPayload(pl, 0);

                                    await OnGetHeaders?.Invoke(this, gh);
                                }
                                break;
                            }

                            case "headers\0\0\0\0\0":
                            {
                                if (OnHeaders != null)
                                {
                                    var hd = new Headers();
                                    hd.ReadFromPayload(pl, 0);

                                    await OnHeaders?.Invoke(this, hd);
                                }
                                break;
                            }

                            case "inv\0\0\0\0\0\0\0\0\0":
                            {
                                if (OnInv != null)
                                {
                                    var iv = new Inv();
                                    iv.ReadFromPayload(pl, 0);

                                    await OnInv?.Invoke(this, iv);
                                }
                                break;
                            }

                            case "mempool\0\0\0\0\0":
                            {
                                if (OnMemPool != null)
                                {
                                    var mp = new MemPool();
                                    mp.ReadFromPayload(pl, 0);

                                    await OnMemPool?.Invoke(this, mp);
                                }
                                break;
                            }

                            case "notfound\0\0\0\0":
                            {
                                if (OnNotFound != null)
                                {
                                    var nf = new NotFound();
                                    nf.ReadFromPayload(pl, 0);

                                    await OnNotFound?.Invoke(this, nf);
                                }
                                break;
                            }

                            case "ping\0\0\0\0\0\0\0\0":
                            {
                                if (OnPing != null)
                                {
                                    var ping = new Ping();
                                    ping.ReadFromPayload(pl, 0);

                                    await OnPing?.Invoke(this, ping);
                                }
                                break;
                            }

                            case "pong\0\0\0\0\0\0\0\0":
                            {
                                if (OnPong != null)
                                {
                                    var pong = new Pong();
                                    pong.ReadFromPayload(pl, 0);

                                    await OnPong?.Invoke(this, pong);
                                }
                                break;
                            }

                            case "reject\0\0\0\0\0\0":
                            {
                                if (OnReject != null)
                                {
                                    var re = new Reject();
                                    re.ReadFromPayload(pl, 0);

                                    await OnReject?.Invoke(this, re);
                                }
                                break;
                            }

                            case "sendheaders\0":
                            {
                                if (OnSendHeaders != null)
                                {
                                    var sh = new SendHeaders();
                                    sh.ReadFromPayload(pl, 0);

                                    await OnSendHeaders?.Invoke(this, sh);
                                }
                                break;
                            }

                            case "verack\0\0\0\0\0\0":
                            {
                                if (OnVerAck != null)
                                {
                                    var va = new VerAck();
                                    va.ReadFromPayload(pl, 0);

                                    await OnVerAck.Invoke(this, va);
                                }
                                break;
                            }

                            case "version\0\0\0\0\0":
                            {
                                if (OnVersion != null)
                                {
                                    var v = new bitcoin_lib.P2P.Version("");
                                    v.ReadFromPayload(pl, 0);

                                    await OnVersion?.Invoke(this, v);
                                }
                                break;
                            }

                            default:
                            {
                                //Console.WriteLine($"Got cmd: {h.Command}");
                                break;
                            }
                            }
                        }
                        else
                        {
                            Closing = true;
                        }
                    }
                }
                catch (Exception ex)
                {
                    Closing = true;
                }
            }
        }