private Request DoPoll(ISpider spider) { return(SafeExecutor.Execute(30, () => { var value = Redis.ListRightPop(GetQueueKey(spider.Identity)); if (value == null) { return null; } string field = value.ToString(); string hashId = GetItemKey(spider.Identity); string json = null; for (int i = 0; i < 10 && string.IsNullOrEmpty(json = Redis.HashGet(hashId, field)); ++i) { Thread.Sleep(150); } if (!string.IsNullOrEmpty(json)) { var result = JsonConvert.DeserializeObject <Request>(json); Redis.HashDelete(hashId, field); return result; } return null; })); }
//[MethodImpl(MethodImplOptions.Synchronized)] public override Request Poll() { return(NetworkProxyManager.Current.Execute("rds-pl", () => { return SafeExecutor.Execute(30, () => { var value = Db.ListRightPop(QueueKey); if (!value.HasValue) { return null; } string field = value.ToString(); string json = Db.HashGet(ItemKey, field); if (!string.IsNullOrEmpty(json)) { var result = JsonConvert.DeserializeObject <Request>(json); Db.HashDelete(ItemKey, field); return result; } return null; }); })); }
private Request DoPoll(ISpider spider) { return(SafeExecutor.Execute(30, () => { var value = _db.ListRightPop(GetQueueKey(spider.Identity)); if (!value.HasValue) { return null; } string field = value.ToString(); string hashId = ItemPrefix + spider.Identity; string json = null; //redis 有可能取数据失败 for (int i = 0; i < 10 && string.IsNullOrEmpty(json = _db.HashGet(hashId, field)); ++i) { Thread.Sleep(150); } if (!string.IsNullOrEmpty(json)) { var result = JsonConvert.DeserializeObject <Request>(json); _db.HashDelete(hashId, field); return result; } // 严格意义上说不会走到这里, 一定会有JSON数据,详情看Push方法 // 是否应该设为1级? return null; })); }
public override async Task <IActionResult> Patch(int Id, [FromBody] JsonPatchDocument <UserViewModel> pathDocument) { Func <Task <UserViewModel> > predicate = async() => { return(await PathDataAsync(Id, pathDocument)); }; var result = await SafeExecutor <UserViewModel> .ExecAsync(predicate); return(ProcessResponse(result)); }
/// <summary> /// Closes this instance by asking its Parent to initiate shutdown or by asking it's corresponding view to close. /// This overload also provides an opportunity to pass a dialog result to it's corresponding view. /// </summary> /// <param name="dialogResult">The dialog result.</param> public virtual void TryClose(bool?dialogResult) { SafeExecutor executor = new SafeExecutor(this); executor.ExecuteOnUIThread(() => { var closeAction = GetViewCloseAction(dialogResult); closeAction(); }); }
private void FindAndClickSpan(string text) { SafeExecutor.ExecuteAction(() => { var ln = GetLeftNav(driver); var el = ln.FindElement(By.XPath($".//span[text()='{text}']")); el.Click(); // ln.FindElement(By.LinkText(linkText)).GetAttribute("href"); }, "Cannot find span: " + text); }
private void FindRatingLink(int minRating) { SafeExecutor.ExecuteAction(() => { var ln = GetLeftNav(driver); var el = ln.FindElement(By.ClassName("a-star-medium-" + minRating)); el.Click(); // ln.FindElement(By.LinkText(linkText)).GetAttribute("href"); }, "Cannot find Rating Button"); }
/// <summary> /// Tries to close this instance by asking its Parent to initiate shutdown or by asking its corresponding view to close. /// </summary> public void TryClose() { SafeExecutor executor = new SafeExecutor(this); executor.ExecuteOnUIThread(() => { var closeAction = GetViewCloseAction(null); closeAction(); }); }
public static string GetXpathValue(this Enum enumeration) { return(SafeExecutor.Execute( () => enumeration.GetType() .GetMember(enumeration.ToString()).First() .GetCustomAttributes(typeof(XpathAttribute), false) .Select(ob => (XpathAttribute)ob).First() .Selector )); }
//[MethodImpl(MethodImplOptions.Synchronized)] protected override void PushWhenNoDuplicate(Request request) { SafeExecutor.Execute(30, () => { Db.ListRightPush(QueueKey, request.Identity); string field = request.Identity; string value = JsonConvert.SerializeObject(request); Db.HashSet(ItemKey, field, value); }); }
//[MethodImpl(MethodImplOptions.Synchronized)] protected override void PushWhenNoDuplicate(Request request, ISpider spider) { SafeExecutor.Execute(30, () => { _db.ListRightPush(GetQueueKey(spider.Identity), request.Identity); string field = request.Identity; string value = JsonConvert.SerializeObject(request); _db.HashSet(ItemPrefix + spider.Identity, field, value); }); }
private static async Task <HttpResponseMessage> Run(HttpRequest req, ILogger log, ExecutionContext ec, string version) { return(await SafeExecutor.Execute(async() => { var cnfg = ConfigUtilities.LoadConfiguration(); var graphRequestUrl = UrlUtilities.Combine(cnfg.GraphBaseUrl, req.Path, req.QueryString.ToString()); var authProvider = FunctionUtilities.GetAuthenticationProvider(req, cnfg); var graphClient = GraphUtilities.GetAuthenticatedClient(cnfg.GraphBaseUrl, version, authProvider); var graphResponse = await GraphUtilities.ExecuteGetRequest(graphClient, graphRequestUrl); return await FunctionUtilities.TransformResponse(req.GetHostUrl(), cnfg.GraphBaseUrl, graphResponse); }, req, log)); }
public bool IsDuplicate(Request request) { return(SafeExecutor.Execute(30, () => { bool isDuplicate = Db.SetContains(SetKey, request.Identity); if (!isDuplicate) { Db.SetAdd(SetKey, request.Identity); } return isDuplicate; })); }
public bool IsDuplicate(Request request, ISpider spider) { return(SafeExecutor.Execute(30, () => { string key = GetSetKey(spider.Identity); bool isDuplicate = _db.SetContains(key, request.Identity); if (!isDuplicate) { _db.SetAdd(key, request.Identity); } return isDuplicate; })); }
private void FindAndGotoLink(string linkText) { string link = SafeExecutor.ExecuteFunc(() => { var ln = GetLeftNav(driver); return(ln.FindElement(By.LinkText(linkText)).GetAttribute("href")); }); if (link == null) { throw new Exception("Cannot find Link: " + linkText); } driver.Navigate().GoToUrl(link); }
private IWebElement GetLeftNav(ChromeDriver driver) { var ele = SafeExecutor.ExecuteFunc(() => { try { return(driver.FindElementById(LeftNavContainer)); } catch { return(driver.FindElementById("s-refinements")); } }); if (ele == null) { throw new Exception("Cannot find " + LeftNavContainer); } else { return(ele); } }
public async Task <IActionResult> Login( [FromBody] UserViewModel viewModel, string origin) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Func <Task <UserViewModel> > predicate = async() => { if (origin is null) { return(await ProcessLocalUser(viewModel)); } else { return(await ProcessSocialNetworkUser(viewModel)); } }; var result = await SafeExecutor <UserViewModel> .ExecAsync(predicate); return(ProcessResponse(result)); }
public GuardedAcceptor(int port, int maxPendingConnection) : base(port, maxPendingConnection) { m_lock = new SingleThreadExecutor(); }