Пример #1
0
        /// <summary>
        /// 处理流水查询任务
        /// </summary>
        private void HandleOutTask()
        {
            try
            {
                SOutTaskInfo info = m_OutTasksList.Peek();  // 取出消息,不删除

                LOGGER.INFO($"Handle a new out task:\n {info.ToLogString()} \n, still left {m_OutTasksList.Count - 1} tasks in queue.");

                SOutTaskResult dealResult = new SOutTaskResult();
                dealResult.taskID = info.taskID;
                dealResult.nodeID = GetCurCashierNodeID();

                // 记录当前在处理的任务ID
                SetCurTaskID(info.taskID);

                // 开始处理
                if (!AutomationOut(info, ref dealResult))
                {
                }

                LOGGER.WARN($"Auto out task is done. Now ready to send msg to server. TaskID = {info.taskID}.", info.taskID);
                // 通知服务器处理结果
                HttpSendResult sendResult = RequestSender.SendRequestToServer(dealResult);
                if (sendResult.IsSendSuccessed())
                {
                    SetLastTaskID(info.taskID);
                    SetCurTaskID(INVALID_TASK_ID);
                    LOGGER.INFO($"Send auto out task successed. TaskID = {info.taskID}. \n {sendResult.ToLogString()}");
                }
                else
                {
                    SetLastTaskID(INVALID_TASK_ID);
                    SetCurTaskID(INVALID_TASK_ID);
                    LOGGER.ERROR($"Send auto out task failed. TaskID = {info.taskID}. \n {sendResult.ToLogString()}", info.taskID);
                }
                LOGGER.WARN($"Out task deal over. TaskID = {info.taskID}.", info.taskID);
            }
            catch (Exception e)
            {
                LOGGER.ERROR($"Deal out task error occured. Error = {e.ToString()}");
            }
            finally
            {
                SetCurTaskID(INVALID_TASK_ID);
                m_OutTasksList.Dequeue();       // 无论如何,该任务必须删除
            }
            return;
        }
Пример #2
0
        public static int OnMsg(int nNodeID, string strRequestString, MainForm mainForm, ref string strRespone)
        {
            int nErrorCode = (int)ENUM_OutTaskResponeError.eOutTaskRequest_UnknownFailed;

            // 检查请求合法性
            if (!IsValidOutTaskMsg(strRequestString, RSAKeyContainer.GetInstance.GetJavaPublicKey()))
            {
                // 消息检查未通过
                nErrorCode = (int)ENUM_OutTaskResponeError.eOutTaskRequest_UnvalidMsg;
                LOGGER.WARN($"Server out task request is not a invalid msg. \n Request = {strRequestString}");
            }
            else
            {
                SOutTaskInfo info = ParseStructFromRequest(strRequestString, RSAKeyContainer.GetInstance.GetCSharpPrivateKey());
                if (info.taskID <= 0)
                {
                    // 消息不正常
                    nErrorCode = (int)ENUM_OutTaskResponeError.eOutTaskRequest_UnvalidTaskId;
                    LOGGER.WARN($"Server out task request is not a invalid msg. \n Request = {strRequestString} \n TaskInfo = {info.ToLogString()}");
                }
                else
                {
                    // 消息解析成功,开始逻辑处理
                    {
                        // 实际处理
                        mainForm.AddOutTaskToWaitQueue(info);
                        nErrorCode = (int)ENUM_OutTaskResponeError.eOutTaskRequest_Successed;
                    }
                }
            }

            strRespone = ("{\"nodeID\":") + nNodeID + (",\"status\":") + nErrorCode + ("}");
            return(nErrorCode);
        }