/// <summary> /// 检测超时的任务 /// </summary> void DetectExpiresTasks() { DateTime expiresTime = DateTime.Now.AddSeconds(-Config.TaskKeepTime); List <ulong> expList = null; lock (SendTask) { foreach (var item in SendTask.Keys) { FileTaskInfo task = SendTask[item]; if (task.CreateTime > expiresTime || task.TaskList.Count(s => s.State != FileTaskItemState.Scheduled) > 0 ) { continue; } //任务已经超时 if (expList == null) { expList = new List <ulong>(); } expList.Add(item); OnTaskExpires(new FileTaskEventArgs(task)); } if (expList != null) { expList.ForEach(ul => SendTask.Remove(ul)); } } }
public async Task <TResponse> GetResponseAsync() { try { using (StartScope()) { await SendTask.ConfigureAwait(false); // Trailers are only available once the response body had been read var responseStream = await HttpResponse.Content.ReadAsStreamAsync().ConfigureAwait(false); var message = await responseStream.ReadSingleMessageAsync(Logger, Method.ResponseMarshaller.Deserializer, _callCts.Token).ConfigureAwait(false); FinishResponse(); if (message == null) { Log.MessageNotReturned(Logger); throw new InvalidOperationException("Call did not return a response message"); } // The task of this method is cached so there is no need to cache the message here return(message); } } catch (OperationCanceledException) { EnsureNotDisposed(); throw CreateCanceledStatusException(); } }
protected internal override bool WriteExtensionChildElements(BaseElement element, bool didWriteExtensionStartElement, XMLStreamWriter xtw) { SendTask sendTask = (SendTask)element; didWriteExtensionStartElement = FieldExtensionExport.WriteFieldExtensions(sendTask.FieldExtensions, didWriteExtensionStartElement, xtw); return(didWriteExtensionStartElement); }
public static async Task <dynamic> PutUpdateTask(CustomTask task, HabiticaUser user) { var data = new SendTask { text = task.TaskName, type = task.TaskType, tags = new string[] { user.TaskTagId }, notes = task.TaskNotes, date = task.TaskDueDate.ToString(), reminders = new Reminder[1] { new Reminder() { id = user.Uuid, startDate = task.ReminderStartDate.ToString(), time = task.ReminderTime.ToString() } }, priority = task.TaskDifficulty.ToString() }; try { return(await $"https://habitica.com/api/v3/tasks/{task.HabiticaTaskId}" .WithHeaders(new { x_api_user = user.Uuid, x_api_key = user.ApiToken }) .PostJsonAsync(data) .ReceiveJson()); } catch (FlurlHttpException ex) { return(ex.GetResponseJson()); } }
public virtual SendTask CreateSendTask() { var task = new SendTask(); //task.Tag = new SendTaskActivityBehavior(); return(task); }
protected internal override void WriteAdditionalAttributes(BaseElement element, BpmnModel model, XMLStreamWriter xtw) { SendTask sendTask = (SendTask)element; if (!string.IsNullOrWhiteSpace(sendTask.Type)) { WriteQualifiedAttribute(BpmnXMLConstants.ATTRIBUTE_TYPE, sendTask.Type, xtw); } }
private void Invoke(List <ITaskSchedulerChannelInterceptor> interceptors, IMessage message, IMessageHandler handler) { if (interceptors.Count > 0) { var sendTask = new SendTask(this, interceptors, message, handler); sendTask.Run(); } else { InvokeDirect(message, handler); } }
internal void AddSendTask(CameraPlusBehaviour camplus,string address = "127.0.0.1", int port = 39540) { SendTask sendTask = new SendTask(); sendTask.parentBehaviour = camplus; sendTask.client = new OscClient(address, port); if (sendTask.client != null) { Logger.log.Notice($"Instance of OscClient {address}:{port} Starting."); sendTasks.Add(sendTask); } else Logger.log.Error($"Instance of OscClient Not Starting."); }
public async Task StartSending(string historyGroupId) { // 因为创建 history 的时候,检查了发送模块是否进行,所以此处新建发送模块不会造成冲突 if (!SendTask.CreateSendTask(historyGroupId, Token.UserId, LiteDb, out string message)) { await ResponseErrorAsync(message); return; } InstanceCenter.SendTasks[Token.UserId].StartSending(); await ResponseSuccessAsync(historyGroupId); }
/// <summary> /// 释放发送的文件请求 /// </summary> /// <param name="pkgid"></param> /// <returns></returns> internal FileTaskInfo ReleaseFile(ulong pkgid) { if (!SendTask.ContainsKey(pkgid)) { return(null); } FileTaskInfo task = SendTask[pkgid]; SendTask.Remove(pkgid); OnReleaseFileRequired(new FileTaskEventArgs(task)); return(task); }
public async Task <Metadata> GetResponseHeadersAsync() { try { await SendTask.ConfigureAwait(false); // The task of this method is cached so there is no need to cache the headers here return(GrpcProtocolHelpers.BuildMetadata(HttpResponse.Headers)); } catch (OperationCanceledException) { EnsureNotDisposed(); throw CreateCanceledStatusException(); } }
public async Task <TResponse> GetResponseAsync() { Debug.Assert(SendTask != null); try { using (StartScope()) { await SendTask.ConfigureAwait(false); Debug.Assert(HttpResponse != null); // Trailers are only available once the response body had been read var responseStream = await HttpResponse.Content.ReadAsStreamAsync().ConfigureAwait(false); var message = await responseStream.ReadSingleMessageAsync( Logger, Method.ResponseMarshaller.ContextualDeserializer, GrpcProtocolHelpers.GetGrpcEncoding(HttpResponse), Channel.ReceiveMaxMessageSize, Channel.CompressionProviders, _callCts.Token).ConfigureAwait(false); FinishResponse(); if (message == null) { Log.MessageNotReturned(Logger); throw new InvalidOperationException("Call did not return a response message"); } GrpcEventSource.Log.MessageReceived(); // The task of this method is cached so there is no need to cache the message here return(message); } } catch (OperationCanceledException) { EnsureNotDisposed(); throw CreateCanceledStatusException(); } }
private void AcceptCallback(IAsyncResult ar) { _AllDone.Set(); Socket listener = (Socket)ar.AsyncState; if (listener == null) { return; } Socket handler = null; try { handler = listener.EndAccept(ar); } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.ToString()); } if (handler == null) { return; } FileStream fs = File.Open("lol.ogg", FileMode.Open); NetworkStream ns = new NetworkStream(handler); SendTask sendTask = new SendTask(fs, ns); sendTask.Start(); sendTask.Completed += delegate { fs.Close(); ns.Close(); handler.Close(); }; //StateObject state = new StateObject(); //state.WorkSocket = handler; //handler.BeginReceive(state.Buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state); }
public async Task <Metadata> GetResponseHeadersAsync() { Debug.Assert(SendTask != null); try { using (StartScope()) { await SendTask.ConfigureAwait(false); Debug.Assert(HttpResponse != null); // The task of this method is cached so there is no need to cache the headers here return(GrpcProtocolHelpers.BuildMetadata(HttpResponse.Headers)); } } catch (OperationCanceledException) when(!Channel.ThrowOperationCanceledOnCancellation) { throw CreateCanceledStatusException(); } }
protected internal override BaseElement ConvertXMLToElement(XMLStreamReader xtr, BpmnModel model) { SendTask sendTask = new SendTask(); BpmnXMLUtil.AddXMLLocation(sendTask, xtr); //sendTask.Type = xtr.getAttributeValue(BpmnXMLConstants.ACTIVITI_EXTENSIONS_NAMESPACE, BpmnXMLConstants.ATTRIBUTE_TYPE); if (!string.IsNullOrWhiteSpace(xtr.GetAttributeValue(BpmnXMLConstants.ACTIVITI_EXTENSIONS_NAMESPACE, BpmnXMLConstants.ATTRIBUTE_TASK_SERVICE_CLASS))) { sendTask.ImplementationType = ImplementationType.IMPLEMENTATION_TYPE_CLASS; sendTask.Implementation = xtr.GetAttributeValue(BpmnXMLConstants.ACTIVITI_EXTENSIONS_NAMESPACE, BpmnXMLConstants.ATTRIBUTE_TASK_SERVICE_CLASS); } //if ("##WebService".Equals(xtr.getAttributeValue(BpmnXMLConstants.ATTRIBUTE_TASK_IMPLEMENTATION))) //{ // sendTask.ImplementationType = ImplementationType.IMPLEMENTATION_TYPE_WEBSERVICE; // sendTask.OperationRef = parseOperationRef(xtr.getAttributeValue(BpmnXMLConstants.ATTRIBUTE_TASK_OPERATION_REF), model); //} ParseChildElements(XMLElementName, sendTask, model, xtr); return(sendTask); }
static void Main(string[] args) { NettyPool.SessionHandler = new Handler(); NettyPool.ClientSessionHandler = new ClientHandler(); NettyPool.AddTcpBind("127.0.0.1", 8001); clientA = new NettyClient(port: 8001); clientA.Connect(); clientB = new NettyClient(port: 8001); clientB.Connect(); System.Threading.Thread.Sleep(1000); log.Error("数量 " + NettyPool.Sessions.Count); sendtask = new SendTask(); ThreadPool.AddGlobTimerTask(sendtask); Console.ReadLine(); }
public virtual WebServiceActivityBehavior CreateWebServiceActivityBehavior(SendTask sendTask) { return(new WebServiceActivityBehavior()); }
protected internal AbstractSendTaskBuilder(BpmnModelInstance modelInstance, SendTask element, Type selfType) : base(modelInstance, element, selfType) { }
/// <summary> /// 纯盘篇提交 /// </summary> /// <param name="code">编号</param> /// <param name="dic">标记的参数</param> /// <param name="TempDic">临时存储参数,用于提交成功后保存db</param> /// <param name="Work_Path">工作路径</param> public void ChunPan_Submit(object code, Dictionary <string, object> dic, Dictionary <string, string> TempDic, string Work_Path) { Register reg = new Register(); string Ini_Path = reg.ReadRegeditKey("QueuePath", "software\\CNKI\\Assistant\\Work\\", Register.RegDomain.CurrentUser).ToString(); INIManage ini = new INIManage(Ini_Path); MatchTask task = null; foreach (string strValue in ini.SectionValues("Task")) { string strTask = strValue.Substring(strValue.IndexOf('=') + 1); MatchTask mt = strTask.FromJson <MatchTask>(); if (mt.TaskStatus == "0") { task = mt; break; } } TextLog.WritwLog("提交code" + task.Code); string filename = Work_Path + "\\Explain.xml"; string unit = XDocument.Load(filename).Element("ExplainInfo").Element("Info").Value; #region 生成提交信息的xml的Content字段 SendTask sTask = new SendTask(); sTask.code = task.Code; sTask.ArticleCode = code.ToString(); sTask.Units = unit; sTask.Year = dic["学位年度"] == null ? "" : dic["学位年度"].ToString(); sTask.Level = dic["级别"] == null ? "" : dic["级别"].ToString(); sTask.IsSecret = dic["保密"].ToString(); sTask.IsSQ = dic["授权"].ToString(); sTask.IsQM = dic["签名"].ToString(); sTask.Iscopyright = dic["版权反馈"].ToString(); sTask.Explain = dic["备注"] == null ? "" : dic["备注"].ToString(); sTask.DeleteWords = dic["删除字样"].ToString(); sTask.DelayDate = dic["滞后上网"].ToString(); DataRow row = sqlite.ExecuteDataTable("select 小样数,提取页数 from XW_FileOrderinfo where 编号='" + code + "'", null).Rows[0]; sTask.XiaoYangSum = Convert.ToInt32(row["小样数"]); sTask.TotalPage = Convert.ToInt32(row["提取页数"]); sTask.Cutf = "否"; sTask.HardCoverf = "否"; sTask.TaskComeTime = task.TaskComeTime; sTask.IsRead = ""; sTask.ProcMode = task.ProcMode; sTask.SchoolName = ""; sTask.PaperSummary = ""; sTask.ProductCode = task.ProductCode; sTask.PostName = "文件整理"; string strSendTask = sTask.ToJson(); string sql = string.Format("update XW_FileOrderinfo set 年度='{0}',级别='{1}',保密否='{2}',版权反馈否='{3}',是否签名='{4}',是否授权='{5}',备注='{6}',删除字样='{7}',滞后上网='{8}' where 编号='{9}'", sTask.Year, sTask.Level, sTask.IsSecret, sTask.Iscopyright, sTask.IsQM, sTask.IsSQ, sTask.Explain, sTask.DeleteWords, sTask.DelayDate, code); sqlite.ExecuteNonQuery(sql, null); TextLog.WritwLog("执行sql成功:" + sql); XDocument newdoc = new XDocument(); XElement node_root = new XElement("ArticleInfo"); XElement node_code = new XElement("SN"); XElement node_articleCode = new XElement("ArticleCode"); XElement node_content = new XElement("CONTENT"); node_code.Value = code.ToString(); node_articleCode.Value = code.ToString(); node_content.Value = strSendTask; node_root.Add(node_code, node_articleCode, node_content); newdoc.Add(node_root); if (!Directory.Exists(Work_Path + "\\ArticlePublish")) { Directory.CreateDirectory(Work_Path + "\\ArticlePublish"); } newdoc.Save(Work_Path + "\\ArticlePublish\\" + code + ".xml"); //保存参数,用于在篇提交成功后更新db if (TempDic.Keys.Contains(code.ToString())) { TempDic.Remove(code.ToString()); } TextLog.WritwLog("添加编号:" + code); TempDic.Add(code.ToString(), "是"); string dics = ""; foreach (string key in TempDic.Keys) { dics += key + "-"; } TextLog.WritwLog("添加后字典里:" + dics); Console.WriteLine(code + ":生成提交信息的xml成功"); #endregion int c0 = Convert.ToInt32(sqlite.ExecuteScalar("select count(*) from db_File where 编号 ='" + code + "'", null)); string uploadPath = Work_Path + "\\ArticleUpload"; if (!Directory.Exists(Work_Path + "\\ArticleUpload\\" + code)) { #region 移动篇提交文件至ArticleUpload文件夹 string tempPath = sqlite.ExecuteScalar("select 路径 from XW_FileOrderinfo where 编号='" + code + "'", null).ToString(); #region 验证'整理后'文件夹中的文件个数和db中是否一样 int c1 = Traverse(tempPath); if (c0 != c1) { TextLog.WritwLog(code + ":整理后文件夹中文件个数(" + c1 + ")与db中文件个数(" + c0 + ")不一致"); MessageBox.Show(code + ":整理后文件夹中文件个数(" + c1 + ")与db中文件个数(" + c0 + ")不一致,请联系研发!"); return; } #endregion DirectoryInfo dir = new DirectoryInfo(tempPath); if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } if (!Directory.Exists(uploadPath + "\\" + code)) { Directory.Move(tempPath, uploadPath + "\\" + code); } Console.WriteLine(code + ":移动篇提交文件至ArticleUpload文件夹成功"); #endregion } #region 验证upload文件夹中的文件个数和db中是否一样 int c2 = Traverse(uploadPath + "\\" + code); if (c0 != c2) { TextLog.WritwLog(code + ":articleupload文件夹中文件个数(" + c2 + ")与db中文件个数(" + c0 + ")不一致"); MessageBox.Show(code + ":articleupload文件夹中文件个数(" + c2 + ")与db中文件个数(" + c0 + ")不一致,请联系研发!"); return; } #endregion #region 给加工助手发送udp进行篇提交 Console.WriteLine(code + ":开始篇提交"); //UdpServer udpServer =UdpServer.GetInstance(); string transport_WorkPath = task.WorkPath.Replace("\\", "\\\\"); string message = "{\"ArticleCode\":\"" + code + "\"," + "\"Code\":\"" + task.Code + "\"," + "\"LineId\":\"" + task.LineID + "\"," + "\"PostId\":\"" + task.PostID + "\"," + "\"TaskComeTime\":\"" + task.TaskComeTime + "\"," + "\"WorkPath\":\"" + transport_WorkPath + "\"}"; try { Byte[] sendBytes = Encoding.Default.GetBytes(message); PublicTool.localUdp.Send(sendBytes, sendBytes.Length, remotePoint); TextLog.WritwLog(message); //listView2.Items[code.ToString()].SubItems[1].Text = "提交中"; } catch (Exception ss) { TextLog.WritwLog(code + "发送udp失败:" + ss.Message); } #endregion }
public void KanPan_Submit_UnRead(object code, string info, string Work_Path, Dictionary <string, string> TempDic) { //string sql = "update XW_FileOrderinfo set 可读否='否',制作说明=\"" + info+ "\" where 编号='" + code + "'"; //sqlite.ExecuteNonQuery(sql, null); //sql = "update db_State set 保存否='不可做' where 编号='" + code + "'"; //sqlite.ExecuteNonQuery(sql, null); //TextLog.WritwLog("into KanPan_Submit_UnRead"); Register reg = new Register(); string Ini_Path = reg.ReadRegeditKey("QueuePath", "software\\CNKI\\Assistant\\Work\\", Register.RegDomain.CurrentUser).ToString(); INIManage ini = new INIManage(Ini_Path); string strTask = ini.SectionValues("Task")[0]; strTask = strTask.Substring(strTask.IndexOf('=') + 1); MatchTask task = strTask.FromJson <MatchTask>(); //var dic = GetBiaoZhu("纯盘"); string filename = Work_Path + "\\Explain.xml"; string unit = XDocument.Load(filename).Element("ExplainInfo").Element("Info").Value; //TextLog.WritwLog("基本信息构造完毕"); #region 生成提交信息的xml的Content字段 SendTask sTask = new SendTask(); sTask.code = task.Code; sTask.ArticleCode = code.ToString(); sTask.Units = unit; sTask.IsRead = "否"; sTask.Year = ""; sTask.Level = ""; sTask.IsSecret = ""; sTask.IsSQ = ""; sTask.IsQM = ""; sTask.Iscopyright = ""; sTask.Explain = ""; sTask.DeleteWords = ""; sTask.SchoolName = ""; sTask.PaperSummary = ""; sTask.Cutf = ""; sTask.HardCoverf = ""; sTask.DelayDate = ""; sTask.TaskComeTime = task.TaskComeTime; //不可做原因说明 sTask.ProcMode = info; sTask.ProductCode = task.Code; sTask.PostName = "文件整理"; string strSendTask = sTask.ToJson(); string sql = string.Format("update XW_FileOrderinfo set 年度='{0}',级别='{1}',保密否='{2}',版权反馈否='{3}',是否签名='{4}',是否授权='{5}',备注='{6}',删除字样='{7}',滞后上网='{8}' where 编号='{9}'", sTask.Year, sTask.Level, sTask.IsSecret, sTask.Iscopyright, sTask.IsQM, sTask.IsSQ, sTask.Explain, sTask.DeleteWords, sTask.DelayDate, code); //TextLog.WritwLog("unread:" + sql); sqlite.ExecuteNonQuery(sql, null); //TextLog.WritwLog("更新db"); XDocument newdoc = new XDocument(); XElement node_root = new XElement("ArticleInfo"); XElement node_code = new XElement("SN"); XElement node_articleCode = new XElement("ArticleCode"); XElement node_content = new XElement("CONTENT"); node_code.Value = code.ToString(); node_articleCode.Value = code.ToString(); node_content.Value = strSendTask; node_root.Add(node_code, node_content); newdoc.Add(node_root); if (!Directory.Exists(Work_Path + "\\ArticlePublish")) { Directory.CreateDirectory(Work_Path + "\\ArticlePublish"); } newdoc.Save(Work_Path + "\\ArticlePublish\\" + code + ".xml"); //TextLog.WritwLog("保存xml"); //保存参数,用于在篇提交成功后更新db if (TempDic.Keys.Contains(code.ToString())) { TempDic.Remove(code.ToString()); } TempDic.Add(code.ToString(), "否"); //TextLog.WritwLog("同步"); #endregion #region 移动篇提交文件至ArticleUpload文件夹 string tempPath = sqlite.ExecuteScalar("select 路径 from XW_FileOrderinfo where 编号='" + code + "'", null).ToString(); #region 验证'整理后'文件夹中的文件个数和db中是否一样 int c0 = Convert.ToInt32(sqlite.ExecuteScalar("select count(*) from db_File where 编号 ='" + code + "'", null)); int c1 = Traverse(tempPath); if (c0 != c1) { TextLog.WritwLog(code + ":整理后文件夹中文件个数(" + c1 + ")与db中文件个数(" + c0 + ")不一致"); MessageBox.Show(code + ":整理后文件夹中文件个数(" + c1 + ")与db中文件个数(" + c0 + ")不一致,请联系研发!"); return; } #endregion DirectoryInfo dir = new DirectoryInfo(tempPath); string uploadPath = Work_Path + "\\ArticleUpload"; if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } if (!Directory.Exists(uploadPath + "\\" + code)) { Directory.Move(tempPath, uploadPath + "\\" + code); } TextLog.WritwLog(code + ":移动篇提交文件至ArticleUpload文件夹成功"); #endregion #region 验证upload文件夹中的文件个数和db中是否一样 int c2 = Traverse(uploadPath + "\\" + code); if (c0 != c2) { TextLog.WritwLog(code + ":articleupload文件夹中文件个数(" + c2 + ")与db中文件个数(" + c0 + ")不一致"); MessageBox.Show(code + ":articleupload文件夹中文件个数(" + c2 + ")与db中文件个数(" + c0 + ")不一致,请联系研发!"); return; } #endregion #region 给加工助手发送udp进行篇提交 //TextLog.WritwLog(code + ":开始篇提交"); string transport_WorkPath = task.WorkPath.Replace("\\", "\\\\"); string message = "{\"ArticleCode\":\"" + code + "\"," + "\"Code\":\"" + task.Code + "\"," + "\"LineId\":\"" + task.LineID + "\"," + "\"PostId\":\"" + task.PostID + "\"," + "\"TaskComeTime\":\"" + task.TaskComeTime + "\"," + "\"WorkPath\":\"" + transport_WorkPath + "\"}"; //TextLog.WritwLog(message); try { Byte[] sendBytes = Encoding.Default.GetBytes(message); PublicTool.localUdp.Send(sendBytes, sendBytes.Length, remotePoint); } catch (Exception ss) { TextLog.WritwLog(code + "发送udp失败:" + ss.Message); } #endregion }
public async Task <TResponse> GetResponseAsync() { Debug.Assert(SendTask != null); try { using (StartScope()) { // Wait for send to finish so the HttpResponse is available await SendTask.ConfigureAwait(false); // Verify the call is not complete. The call should be complete once the grpc-status // has been read from trailers, which happens AFTER the message has been read. if (CallTask.IsCompletedSuccessfully) { var status = CallTask.Result; if (status.StatusCode != StatusCode.OK) { throw new RpcException(status); } else { // The server should never return StatusCode.OK in the header for a unary call. // If it does then throw an error that no message was returned from the server. Log.MessageNotReturned(Logger); throw new InvalidOperationException("Call did not return a response message"); } } Debug.Assert(HttpResponse != null); // Trailers are only available once the response body had been read var responseStream = await HttpResponse.Content.ReadAsStreamAsync().ConfigureAwait(false); var message = await responseStream.ReadSingleMessageAsync( Logger, Method.ResponseMarshaller.ContextualDeserializer, GrpcProtocolHelpers.GetGrpcEncoding(HttpResponse), Channel.ReceiveMaxMessageSize, Channel.CompressionProviders, _callCts.Token).ConfigureAwait(false); FinishResponse(throwOnFail: true); if (message == null) { Log.MessageNotReturned(Logger); throw new InvalidOperationException("Call did not return a response message"); } GrpcEventSource.Log.MessageReceived(); // The task of this method is cached so there is no need to cache the message here return(message); } } catch (OperationCanceledException) when(!Channel.ThrowOperationCanceledOnCancellation) { throw CreateCanceledStatusException(); } }
public virtual MailActivityBehavior CreateMailActivityBehavior(SendTask sendTask) { return(CreateMailActivityBehavior(sendTask.Id, sendTask.FieldExtensions)); }
public virtual IActivityBehavior CreateCamelActivityBehavior(SendTask sendTask) { return(CreateCamelActivityBehavior(sendTask, sendTask.FieldExtensions)); }
public virtual ClassDelegate CreateClassDelegateSendTask(SendTask sendTask) { return(classDelegateFactory.Create(sendTask.Id, sendTask.Implementation, CreateFieldDeclarations(sendTask.FieldExtensions), null, sendTask.MapExceptions)); }