示例#1
0
        /// <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));
                }
            }
        }
示例#2
0
        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();
            }
        }
示例#3
0
        protected internal override bool WriteExtensionChildElements(BaseElement element, bool didWriteExtensionStartElement, XMLStreamWriter xtw)
        {
            SendTask sendTask = (SendTask)element;

            didWriteExtensionStartElement = FieldExtensionExport.WriteFieldExtensions(sendTask.FieldExtensions, didWriteExtensionStartElement, xtw);
            return(didWriteExtensionStartElement);
        }
示例#4
0
        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());
            }
        }
示例#5
0
        public virtual SendTask CreateSendTask()
        {
            var task = new SendTask();

            //task.Tag = new SendTaskActivityBehavior();

            return(task);
        }
示例#6
0
        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);
            }
        }
示例#7
0
 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);
     }
 }
示例#8
0
 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.");
 }
示例#9
0
        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);
        }
示例#10
0
        /// <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);
        }
示例#11
0
        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();
            }
        }
示例#12
0
        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();
            }
        }
示例#13
0
        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);
        }
示例#14
0
        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();
            }
        }
示例#15
0
        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);
        }
示例#16
0
        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());
 }
示例#18
0
 protected internal AbstractSendTaskBuilder(BpmnModelInstance modelInstance, SendTask element, Type selfType) : base(modelInstance, element, selfType)
 {
 }
示例#19
0
        /// <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
        }
示例#20
0
        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
        }
示例#21
0
        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));
 }