private void Main_FormClosing(object sender, FormClosingEventArgs e) { foreach (DictionaryEntry de in (Hashtable)runtimeService.getAll().Clone()) { RuntimeEntity runtimeEntity = runtimeService.get((String)de.Key); if (runtimeEntity.getWaitQueueCnt() > 0 || runtimeEntity.getStartQueueCnt() > 0) { if (MessageBox.Show("还有任务没有完成,是否强制关闭程序?", "提醒", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel) { e.Cancel = true; } break; } } if (MailSendService.sendWaitCnt > 0 && MessageBox.Show("还有邮件正在发送,是否强制关闭程序?", "提醒", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel) { e.Cancel = true; } if (!e.Cancel) { ThreadPoolEx.destory(); } }
private void btn_refresh_url_Click(object sender, EventArgs e) { btn_refresh_url.Enabled = false; try { urlDataTable.Clear(); Int32 allMailCnt = 0, addMailCnt = 0, completeUrlCnt = 0; dgv_url.Columns["状态"].Visible = "全部".Equals(cb_parse_run_status.Text); foreach (DictionaryEntry de in (Hashtable)runtimeService.getAll().Clone()) { DataRow row = urlDataTable.NewRow(); row["URL"] = de.Key; RuntimeEntity runtime = (RuntimeEntity)de.Value; row["等待处理个数"] = runtime.getWaitQueueCnt(); row["正在处理个数"] = runtime.getStartQueueCnt(); row["处理成功个数"] = runtime.getSuccessQueueCnt(); row["请求网页超时数"] = runtime.getErrorQueueCnt(); row["抓取非重复邮箱数"] = runtime.AddMailCnt; row["状态"] = runtime.RunStatus; if ("执行中".Equals(cb_parse_run_status.Text)) { if (Constant.RunStatus.RUNING.Equals(runtime.RunStatus) || Constant.RunStatus.STOPING.Equals(runtime.RunStatus)) { urlDataTable.Rows.Add(row); } } else if ("执行完成".Equals(cb_parse_run_status.Text)) { if (Constant.RunStatus.STOP.Equals(runtime.RunStatus)) { urlDataTable.Rows.Add(row); } } else { urlDataTable.Rows.Add(row); } allMailCnt += runtime.AllMailCnt; addMailCnt += runtime.AddMailCnt; completeUrlCnt += runtime.getSuccessQueueCnt() + runtime.getErrorQueueCnt(); } lb_all_mail_cnt.Text = "抓取邮箱数:" + Convert.ToString(allMailCnt); lb_add_mail_cnt.Text = "非重复邮箱数:" + Convert.ToString(addMailCnt); lb_url_cnt.Text = "请求链接数:" + Convert.ToString(urlDataTable.Rows.Count); lb_complete_url_cnt.Text = "已分析链接数:" + Convert.ToString(completeUrlCnt); lb_parse_cnt_pre_sec.Text = "每秒分析链接数:" + Math.Ceiling(completeUrlCnt / stopwatch.Elapsed.TotalSeconds); } catch { } btn_refresh_url.Enabled = true; }
public ParseEntity get(String url) { RuntimeEntity runtime = runtimeService.get(url); ParseEntity result = null; if (runtime != null) { if (runtime.WaitQueue[url] != null) { result = (ParseEntity)runtime.WaitQueue[url]; } else if (runtime.StartQueue[url] != null) { result = (ParseEntity)runtime.StartQueue[url]; } else if (runtime.SuccessQueue[url] != null) { result = (ParseEntity)runtime.SuccessQueue[url]; } else if (runtime.ErrorQueue[url] != null) { result = (ParseEntity)runtime.ErrorQueue[url]; } } return(result); }
/** * 守护进程 */ private void daemon_timer_Tick(object sender, EventArgs e) { try { tssl_mail_send_status.Text = "待发邮件:" + MailSendService.sendWaitCnt + "; 已发邮件:" + MailSendService.sendSuccessCnt + "; 无法发送数:" + MailSendService.sendErrorCnt; //如果队列已经结束,则重跑邮箱解析为0的站点 if (ckb_reparse.Checked && ThreadPoolEx.IsIdle() && runtimeService.getAll().Count > 0) { foreach (DictionaryEntry de in (Hashtable)runtimeService.getAll().Clone()) { RuntimeEntity runtime = (RuntimeEntity)de.Value; if (runtime.AllMailCnt == 0 && runtime.reparse()) { parseService.add((String)de.Key, tb_type.Text.Trim()); } } } } catch (Exception ex) { logger.Error(ex.Message, ex); } }
private void testRotate() { RuntimeEntity testEntity = new RuntimeEntity(); RuntimeEntity secondTestEntity = new RuntimeEntity(); string testText = "90"; long start = 0; long length = (long)testText.Length; testEntity.Entity = "Number"; testEntity.Location = new List <long?>(); testEntity.Location.Add(start); testEntity.Location.Add(length); secondTestEntity.Entity = "Direction"; secondTestEntity.Value = "left"; incomingEntities = new List <RuntimeEntity>(); incomingEntities.Add(testEntity); incomingEntities.Add(secondTestEntity); settings.voiceCommands.TiltShrineRotate(incomingEntities, testText, camera); }
public void changeStatus(String url, Constant.ParseStatus status) { RuntimeEntity runtime = runtimeService.get(url); if (!Constant.RunStatus.STOP.Equals(runtime.RunStatus)) { if (status.Equals(Constant.ParseStatus.START)) { Object parse = runtime.WaitQueue[url]; runtime.StartQueue.Add(url, parse); runtime.WaitQueue.Remove(url); } else if (status.Equals(Constant.ParseStatus.SUCCESS)) { Object parse = runtime.StartQueue[url]; runtime.SuccessQueue.Add(url, parse); runtime.StartQueue.Remove(url); } else if (status.Equals(Constant.ParseStatus.EXCEPTION)) { Object parse = runtime.StartQueue[url]; runtime.ErrorQueue.Add(url, parse); runtime.StartQueue.Remove(url); } //等待队列与执行队列为空的话,整个站点停止解析 if (runtime.WaitQueue.Count == 0 && runtime.StartQueue.Count == 0) { runtime.stop(true); } } }
private void TestVoiceCommand() { // RuntimeEntity testEntity = new RuntimeEntity(); RuntimeEntity secondTestEntity = new RuntimeEntity(); string testText = "Go to waypoint 1"; /* For testing number entities * long start = 0; * long length = 2; * * string testText = "10"; * * testEntity.Entity = "Number"; * testEntity.Location = new List<long?>(); * testEntity.Location.Add(start); * testEntity.Location.Add(length); */ secondTestEntity.Entity = "Waypoint"; secondTestEntity.Value = "ring toss"; incomingEntities = new List <RuntimeEntity>(); //incomingEntities.Add(testEntity); incomingEntities.Add(secondTestEntity); settings.voiceCommands.Move(incomingEntities, testText); }
public RuntimeEntity add(String url) { url = CommonUtils.getBaseURL(url); RuntimeEntity runtime = new RuntimeEntity(url); runtimeMap.Add(url, runtime); return(runtime); }
public static RuntimeEntity CreateRuntimeEntity() { RuntimeEntity entity = new RuntimeEntity(); entity.Initialize(new ContentEntitySerializationFormat() { Data = new List <ContentEntity.DataInstance>(), PrettyName = "", UniqueId = _idGenerator.Next() }, new EventNotifier()); return(entity); }
private void tsmi_reparse_Click(object sender, EventArgs e) { foreach (DataGridViewRow dr in dgv_url.SelectedRows) { String url = (String)dr.Cells[0].Value; RuntimeEntity runtime = runtimeService.get(url); if (runtime.reparse()) { parseService.add(url, tb_type.Text.Trim()); } } }
public void RemovedDataIsNotReturnedInSelectData() { RuntimeEntity entity = EntityTestHelpers.CreateRuntimeEntity(); entity.AddData <DataEmpty>(); entity.DataStateChangeUpdate(); Assert.Equal(1, entity.SelectData().Count); entity.RemoveData <DataEmpty>(); Assert.Equal(1, entity.SelectData().Count); entity.DataStateChangeUpdate(); Assert.Equal(0, entity.SelectData().Count); }
public void add(String url, String type) { url = url.Replace("\r\n", "").Replace(Environment.NewLine, "").Trim(); RuntimeEntity runtime = runtimeService.get(url); if (runtime == null) { runtime = runtimeService.add(url); } if (Constant.RunStatus.RUNING.Equals(runtime.RunStatus)) { try { if (get(url) == null) { runtime.WaitQueue.Add(url, new ParseEntity(url, type)); Hashtable param = new Hashtable(); param.Add("url", url); param.Add("type", type); lock (runtime.WorkItemsGroup) { ThreadPoolEx.add(runtime.WorkItemsGroup, new WorkItemCallback(ParseThread.run), param, runtime.Priority); } } } catch { } //等待解析数超过系统设定,则优先级降低 if (!WorkItemPriority.Lowest.Equals(runtime.Priority) && (runtime.WaitQueue.Count + runtime.StartQueue.Count + runtime.SuccessQueue.Count) > Convert.ToInt32(ConfigService.get("parse.lowParseCnt"))) { runtime.Priority = WorkItemPriority.Lowest; } //已解析数超过系统设定,则停止 if (runtime.WaitQueue.Count + runtime.StartQueue.Count + runtime.SuccessQueue.Count + runtime.ErrorQueue.Count >= Convert.ToInt32(ConfigService.get("parse.rule.maxParseCnt"))) { runtime.RunStatus = Constant.RunStatus.STOPING; } } }
private void testTilt() { RuntimeEntity testEntity = new RuntimeEntity(); RuntimeEntity secondTestEntity = new RuntimeEntity(); string testText = "little"; testEntity.Entity = "Amount"; testEntity.Value = "large"; secondTestEntity.Entity = "Direction"; secondTestEntity.Value = "left"; incomingEntities = new List <RuntimeEntity>(); incomingEntities.Add(testEntity); incomingEntities.Add(secondTestEntity); settings.voiceCommands.TiltShrineTilt(incomingEntities, testText, camera); }
/// <summary> /// Returns an entity instance for the given entity UniqueId. If an instance for the given /// id already exists, then it is returned. Otherwise, either a RuntimeEntity or /// ContentEntity is created. /// </summary> /// <param name="entityId">The id of the entity to get an instance for.</param> /// <param name="context">The GameEngineContext, used to determine if we should create a /// ContentTemplate or RuntimeTemplate instance.</param> public IEntity GetEntityInstance(int entityId, GameEngineContext context) { if (CreatedEntities.ContainsKey(entityId)) { return(CreatedEntities[entityId]); } IEntity entity; if (context.GameEngine.IsEmpty) { entity = new ContentEntity(); } else { entity = new RuntimeEntity(); } CreatedEntities[entityId] = entity; return(entity); }
private MessageResponse StopIrrigation(dynamic questionContext, MessageRequest messageRequest, RuntimeEntity id) { MessageResponse result; var approver = this.GetApprover(id.Value); messageRequest.Entities = new List <RuntimeEntity>(); var requestId = SetEntity("sys-number", id.Value); var approvers = SetEntity("aprovadores", approver); messageRequest.Entities.Add(requestId); messageRequest.Entities.Add(approvers); messageRequest.Context = questionContext; result = conversation.Message(workspaceId, messageRequest); return(result); }
private MessageResponse StartIrrigation(dynamic questionContext, MessageRequest messageRequest, RuntimeEntity id) { MeasurementService measurementService = new MeasurementService(); var last = measurementService.GetLastByNode(13); measurementService.Save(new Measurement() { IdNode = last.IdNode, AirHumidity = 0, SiolHumidity = 1, Temperature = 0, }); MessageResponse result; var status = this.GetStatusResqust(id.Value); messageRequest.Entities = new List <RuntimeEntity>(); //Update no banco messageRequest.Context = questionContext; result = conversation.Message(workspaceId, messageRequest); return(result); }