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); }
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); }
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(); }
// 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()); }
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); }
/// <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); } }
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); }
private void OnTestsFinished(object sender, EventArgs <TestReport> e) { _report = e.Value; ResultsUpdated?.Invoke(this, EventArgs.Empty); }
protected virtual void OnResultsUpdated(MCSimulationResults results) { ResultsUpdated?.Invoke(results); }