Beispiel #1
0
        private void OnTimedEvent(Object source, ElapsedEventArgs e)
        {
            if (!WarmpingUp)
            {
                for (int i = 0; i < results.Count; i++)
                {
                    var r = providers[i].GetResult();
                    r /= periodSeconds;
                    results[i].Add(r);
                }
            }
            else
            {
                if (warmUpCounter >= 1)
                {
                    warmUpCounter--;
                }
                else
                {
                    foreach (var p in providers)
                    {
                        p.EndWarmUp();
                    }
                    WarmpingUp = false;
                }
            }

            ResultsUpdated?.Invoke(this);
        }
Beispiel #2
0
        public async Task <List <Result> > QueryAsync(Query query, CancellationToken token)
        {
            var results = new List <Result>();

            var hostname = Dns.GetHostName();

            // Get the Local IP Address

            foreach (var ipAddress in (await Dns.GetHostEntryAsync(hostname)).AddressList.OrderBy(ip => ip.AddressFamily))
            {
                var ip = ipAddress.ToString();
                results.Add(Result(ip, "Local IP Address ", icon, Action(ip)));
            }

            ResultsUpdated?.Invoke(this, new ResultUpdatedEventArgs
            {
                Query   = query,
                Results = results
            });

            // Get the External IP Address
            var externalIp = (await Context.API.HttpGetStringAsync("https://api.ip.sb/ip", token)).Trim();


            results.Insert(0, Result(externalIp, "External IP Address ", icon, Action(externalIp)));

            return(results);
        }
        public void HandleTestRunStatsChange(TestRunChangedEventArgs testRunChangedArgs)
        {
            if (testRunChangedArgs.ActiveTests != null)
            {
                _inProgress.AddRange(testRunChangedArgs.ActiveTests);
            }

            if (testRunChangedArgs.NewTestResults == null)
            {
                return;
            }
            CaptureTestResults(testRunChangedArgs.NewTestResults);
            ResultsUpdated?.Invoke(this, EventArgs.Empty);
        }
        public void HandleTestRunComplete(
            TestRunCompleteEventArgs testRunCompleteArgs,
            TestRunChangedEventArgs lastChunkArgs,
            ICollection <AttachmentSet> runContextAttachments,
            ICollection <string> executorUris)
        {
            if (lastChunkArgs?.ActiveTests != null)
            {
                foreach (var activeTest in lastChunkArgs.ActiveTests)
                {
                    _inProgress[activeTest.Id] = activeTest;
                }
            }

            if (lastChunkArgs?.NewTestResults != null)
            {
                CaptureTestResults(lastChunkArgs.NewTestResults);
            }

            if (!testRunCompleteArgs.IsCanceled && (_inProgress.Any() || _runs.Values.Any(t => !t.IsComplete())))
            {
                // report ongoing tests and test case with missing results as timeouts.
                TestsInTimeout = _inProgress.Values.Union(_runs.Values.Where(t => !t.IsComplete()).Select(t => t.Result().TestCase)).ToList();
                if (TestsInTimeout.Count > 0)
                {
                    TimeOut = true;
                }
            }

            ResultsUpdated?.Invoke(this, EventArgs.Empty);

            if (testRunCompleteArgs.Error != null)
            {
                if (testRunCompleteArgs.Error.GetType() == typeof(TransationLayerException))
                {
                    _logger.LogDebug(testRunCompleteArgs.Error, $"{_runnerId}: VsTest may have crashed, triggering VsTest restart!");
                    VsTestFailed?.Invoke(this, EventArgs.Empty);
                }
                else if (testRunCompleteArgs.Error.InnerException is IOException sock)
                {
                    _logger.LogWarning(sock, $"{_runnerId}: Test session ended unexpectedly.");
                }
                else if (!CancelRequested)
                {
                    _logger.LogDebug(testRunCompleteArgs.Error, $"{_runnerId}: VsTest error:");
                }
            }

            _waitHandle.Set();
        }
        public void HandleTestRunStatsChange(TestRunChangedEventArgs testRunChangedArgs)
        {
            if (testRunChangedArgs.ActiveTests != null)
            {
                foreach (var activeTest in testRunChangedArgs.ActiveTests)
                {
                    _inProgress[activeTest.Id] = activeTest;
                }
            }

            if (testRunChangedArgs.NewTestResults == null || !testRunChangedArgs.NewTestResults.Any())
            {
                return;
            }

            CaptureTestResults(testRunChangedArgs.NewTestResults);
            ResultsUpdated?.Invoke(this, EventArgs.Empty);
        }
Beispiel #6
0
        private void UpdateResultsFromSuggestion(List <Result> results, string keyword, string subtitle,
                                                 SearchSource searchSource, Query query)
        {
            if (_settings.EnableSuggestion)
            {
                const int waittime = 300;
                Task      task     = Task.Run(async() => {
                    IEnumerable <Result> suggestions = await Suggestions(keyword, subtitle, searchSource);
                    results.AddRange(suggestions);
                }, _updateToken);

                if (!task.Wait(waittime))
                {
                    task.ContinueWith(_ => ResultsUpdated?.Invoke(this, new ResultUpdatedEventArgs {
                        Results = results,
                        Query   = query
                    }), _updateToken);
                }
            }
        }
        public void HandleTestRunComplete(
            TestRunCompleteEventArgs testRunCompleteArgs,
            TestRunChangedEventArgs lastChunkArgs,
            ICollection <AttachmentSet> runContextAttachments,
            ICollection <string> executorUris)
        {
            if (lastChunkArgs?.NewTestResults != null)
            {
                CaptureTestResults(lastChunkArgs.NewTestResults);
            }

            if (_inProgress.Any() && !testRunCompleteArgs.IsCanceled)
            {
                TestsInTimeout = _inProgress.Where(t => lastChunkArgs?.NewTestResults.Any(res => res.TestCase.Id == t.Id) != true).ToList();
                if (TestsInTimeout.Count > 0)
                {
                    TimeOut = true;
                }
            }

            ResultsUpdated?.Invoke(this, EventArgs.Empty);

            if (testRunCompleteArgs.Error != null)
            {
                if (testRunCompleteArgs.Error.GetType() == typeof(TransationLayerException))
                {
                    _logger.LogDebug(testRunCompleteArgs.Error, $"{_runnerId}: VsTest may have crashed, triggering vstest restart!");
                    VsTestFailed?.Invoke(this, EventArgs.Empty);
                }
                else if (testRunCompleteArgs.Error.InnerException is IOException sock)
                {
                    _logger.LogWarning(sock, $"{_runnerId}: Test session ended unexpectedly.");
                }
                else if (!CancelRequested)
                {
                    _logger.LogDebug(testRunCompleteArgs.Error, $"{_runnerId}: VsTest error:");
                }
            }

            _waitHandle.Set();
        }
Beispiel #8
0
        // First-level query.
        // English -> Chinese, supports fuzzy search.
        private async Task <List <Result> > FirstLevelQueryAsync(Query query, CancellationToken token)
        {
            string           queryWord = query.Search;
            HashSet <Result> results   = new HashSet <Result>(WordEqualityComparer.instance);

            // Pull fully match first.
            Word fullMatch = await ecdict.QueryAsync(query.Search, token).ConfigureAwait(false);

            if (fullMatch != null)
            {
                results.Add(MakeWordResult(fullMatch));
            }

            token.ThrowIfCancellationRequested();
            ResultsUpdated?.Invoke(this, new ResultUpdatedEventArgs {
                Results = results.ToList(), Query = query
            });

            // Then fuzzy search results. (since it's usually only a few)
            List <SymSpell.SuggestItem> suggestions = wordCorrection.Correct(queryWord);

            token.ThrowIfCancellationRequested();

            await foreach (var word in ecdict.QueryRange(suggestions.Select(x => x.term), token).Select(w => MakeWordResult(w)).ConfigureAwait(false))
            {
                results.Add(word);
            }

            token.ThrowIfCancellationRequested();
            ResultsUpdated?.Invoke(this, new ResultUpdatedEventArgs {
                Results = results.ToList(), Query = query
            });

            await foreach (var word in ecdict.QueryBeginningWith(queryWord, token).Select(w => MakeWordResult(w)).ConfigureAwait(false))
            {
                results.Add(word);
            }

            return(results.ToList());
        }
Beispiel #9
0
        public List <Result> Query(Query query)
        {
            var searchSourceList = new List <SearchSource>();
            var results          = new List <Result>();

            _updateSource?.Cancel();
            _updateSource = new CancellationTokenSource();
            _updateToken  = _updateSource.Token;

            _settings.SearchSources.Where(o => (o.ActionKeyword == query.ActionKeyword || o.ActionKeyword == SearchSourceGlobalPluginWildCardSign) &&
                                          o.Enabled)
            .ToList()
            .ForEach(x => searchSourceList.Add(x));

            if (searchSourceList.Any())
            {
                foreach (SearchSource searchSource in searchSourceList)
                {
                    string keyword = string.Empty;
                    keyword = searchSource.ActionKeyword == SearchSourceGlobalPluginWildCardSign?query.ToString() : query.Search;

                    var    title    = keyword;
                    string subtitle = _context.API.GetTranslation("wox_plugin_websearch_search") + " " + searchSource.Title;

                    if (string.IsNullOrEmpty(keyword))
                    {
                        var result = new Result
                        {
                            Title    = subtitle,
                            SubTitle = string.Empty,
                            IcoPath  = searchSource.IconPath
                        };
                        results.Add(result);
                    }
                    else
                    {
                        var result = new Result
                        {
                            Title    = title,
                            SubTitle = subtitle,
                            Score    = 6,
                            IcoPath  = searchSource.IconPath,
                            ActionKeywordAssigned = searchSource.ActionKeyword == SearchSourceGlobalPluginWildCardSign ? string.Empty : searchSource.ActionKeyword,
                            Action = c =>
                            {
                                if (_settings.OpenInNewBrowser)
                                {
                                    searchSource.Url.Replace("{q}", Uri.EscapeDataString(keyword)).NewBrowserWindow(_settings.BrowserPath);
                                }
                                else
                                {
                                    searchSource.Url.Replace("{q}", Uri.EscapeDataString(keyword)).NewTabInBrowser(_settings.BrowserPath);
                                }

                                return(true);
                            }
                        };

                        results.Add(result);
                        ResultsUpdated?.Invoke(this, new ResultUpdatedEventArgs
                        {
                            Results = results,
                            Query   = query
                        });

                        UpdateResultsFromSuggestion(results, keyword, subtitle, searchSource, query);
                    }
                }
            }

            return(results);
        }
Beispiel #10
0
        /// <summary>
        /// 查询快递
        /// </summary>
        /// <param name="_id">快递id</param>
        /// <param name="_order">单号</param>
        /// <returns></returns>
        private List <Result> QueryExpress(string _id, string _order, Query _query)
        {
            List <Result> _list = new List <Result>();

            HttpClientHandler _handler = new HttpClientHandler();

            // 这里为false表示不采用HttpClient的默认Cookie,而是采用httpRequestmessage的Cookie
            _handler.UseCookies = false;

            using (var _client = new HttpClient(_handler))
            {
                string _cookie = GetCookie(_id, _order, _client);

                var request = new HttpRequestMessage(HttpMethod.Get,
                                                     __URL +
                                                     //__PARAM +
                                                     //@"&order=" + _order +
                                                     //@"&id=" + _id);
                                                     @"&com=" + _id +
                                                     @"&nu=" + _order +
                                                     @"&qq-pf-to=pcqq.c2c");

                request.Headers.Add("Cookie", _cookie);

                HttpResponseMessage respones = _client.SendAsync(request).Result;

                var jsonString = respones.Content.ReadAsStringAsync().Result;

                var _expressModel = JsonConvert.DeserializeObject <ExpressModel>(jsonString);

                // 是否是错误
                if (_expressModel.Status == 0)
                {
                    // 第一条状态信息
                    Result _result = new Result
                    {
                        Title    = "快递状态:" + _expressModel.Data.Info.GetStatus(),
                        SubTitle = "Copy this text to the clipboard",
                        IcoPath  = __ICON,
                        Score    = 20,
                        Action   = e =>
                        {
                            try
                            {
                                return(false);
                            }
                            catch (System.Runtime.InteropServices.ExternalException)
                            {
                                return(false);
                            }
                        }
                    };

                    _list.Add(_result);

                    // 表单
                    //for (int i = _expressModel.Data.Info.Context.Length - 1; i > 0; --i)
                    for (int i = 0; i < _expressModel.Data.Info.Context.Length; ++i)
                    {
                        ExpressContext _data = _expressModel.Data.Info.Context[i];

                        _result = new Result
                        {
                            Title    = _data.Time() + "_" + _data.Desc,
                            SubTitle = "Copy this text to the clipboard",
                            IcoPath  = __ICON,
                            Score    = 20,
                            Action   = e =>
                            {
                                //context_.Api.HideAndClear();

                                try
                                {
                                    Clipboard.SetText(_data.Time() + "_" + _data.Desc);

                                    return(true);
                                }
                                catch (System.Runtime.InteropServices.ExternalException)
                                {
                                    return(false);
                                }
                            }
                        };

                        _list.Add(_result);
                    }
                }
                else
                {
                    Result _result = new Result
                    {
                        Title    = "查询出现了错误:" + _expressModel.Message,
                        SubTitle = "Copy this text to the clipboard",
                        IcoPath  = __ICON,
                        Score    = 20,
                        Action   = e =>
                        {
                            try
                            {
                                Clipboard.SetText(_expressModel.Message);

                                return(true);
                            }
                            catch (System.Runtime.InteropServices.ExternalException)
                            {
                                return(false);
                            }
                        }
                    };

                    _list.Add(_result);
                }

                // 可以为空
                ResultsUpdated?.Invoke(this, new ResultUpdatedEventArgs
                {
                    Results = _list,
                    Query   = _query
                });

                return(_list);
            }
        }
Beispiel #11
0
        public async Task <List <Result> > QueryAsync(Query query, CancellationToken token)
        {
            if (FilesFolders.IsLocationPathString(query.Search))
            {
                return(new List <Result>());
            }

            var searchSourceList = new List <SearchSource>();
            var results          = new List <Result>();

            foreach (SearchSource searchSource in _settings.SearchSources.Where(o => (o.ActionKeyword == query.ActionKeyword ||
                                                                                      o.ActionKeyword == SearchSourceGlobalPluginWildCardSign) &&
                                                                                o.Enabled))
            {
                string keyword = string.Empty;
                keyword = searchSource.ActionKeyword == SearchSourceGlobalPluginWildCardSign?query.ToString() : query.Search;

                var    title    = keyword;
                string subtitle = _context.API.GetTranslation("flowlauncher_plugin_websearch_search") + " " + searchSource.Title;

                if (string.IsNullOrEmpty(keyword))
                {
                    var result = new Result
                    {
                        Title    = subtitle,
                        SubTitle = string.Empty,
                        IcoPath  = searchSource.IconPath
                    };
                    results.Add(result);
                }
                else
                {
                    var result = new Result
                    {
                        Title    = title,
                        SubTitle = subtitle,
                        Score    = 6,
                        IcoPath  = searchSource.IconPath,
                        ActionKeywordAssigned = searchSource.ActionKeyword == SearchSourceGlobalPluginWildCardSign ? string.Empty : searchSource.ActionKeyword,
                        Action = c =>
                        {
                            if (_settings.OpenInNewBrowser)
                            {
                                searchSource.Url.Replace("{q}", Uri.EscapeDataString(keyword)).NewBrowserWindow(_settings.BrowserPath);
                            }
                            else
                            {
                                searchSource.Url.Replace("{q}", Uri.EscapeDataString(keyword)).NewTabInBrowser(_settings.BrowserPath);
                            }

                            return(true);
                        }
                    };

                    results.Add(result);
                }

                ResultsUpdated?.Invoke(this, new ResultUpdatedEventArgs
                {
                    Results = results,
                    Query   = query
                });

                await UpdateResultsFromSuggestionAsync(results, keyword, subtitle, searchSource, query, token).ConfigureAwait(false);

                if (token.IsCancellationRequested)
                {
                    return(null);
                }
            }

            return(results);
        }
Beispiel #12
0
 private void OnTestsFinished(object sender, EventArgs <TestReport> e)
 {
     _report = e.Value;
     ResultsUpdated?.Invoke(this, EventArgs.Empty);
 }
Beispiel #13
0
 protected virtual void OnResultsUpdated(MCSimulationResults results)
 {
     ResultsUpdated?.Invoke(results);
 }