Beispiel #1
0
        public static void ProcessMessages()
        {
            DataSet dsMessages;

            byte[] bFreeFormMsg = { };

            while (_bRunThread)
            {
                if (_prcoessEvent.Wait(_waitTime))
                {
                    Thread.Sleep(10);
                    //LogManager.WriteLog("manual reset event.", LogManager.enumLogLevel.Info);
                    continue;
                }

                LogManager.WriteLog("Inside the thread.", LogManager.enumLogLevel.Info);
                while (true)
                {
                    int iRecordsToProcess = 0;
                    dsMessages = objResponseBusiness.GetDataForSendToComms(ref iRecordsToProcess);
                    if ((dsMessages == null || dsMessages.Tables.Count <= 0 || dsMessages.Tables[0].Rows.Count <= 0))
                    {
                        if (iRecordsToProcess > 0)
                        {
                            LogManager.WriteLog("No records matches, but stil records are pending to process: " + iRecordsToProcess.ToString(), LogManager.enumLogLevel.Info);
                            Thread.Sleep(100);
                            continue;
                        }
                    }
                    else
                    {
                        foreach (DataRow row in dsMessages.Tables[0].Rows)
                        {
                            string strResponseMessage = Convert.ToString(row["PC_ST_ActualMessage"]);
                            int    iInstallationNo    = Convert.ToInt32(row["Installation_No"]);

                            Thread.Sleep(10);
                            switch (strResponseMessage.Substring(2, 2))
                            {
                            case "06":
                                bFreeFormMsg = objResponseBusiness.GetCardInFreeFormMessage(strResponseMessage);
                                if (SendFreeFormMsgToComms(bFreeFormMsg, iInstallationNo))
                                {
                                    objResponseBusiness.UpdateSentFreeFormMsgToCommsStatus(Convert.ToInt32(row["PC_ST_ID"]), true);
                                    LogManager.WriteLog("Sent Card in Response PC06 data to Ex Comms Successfully for the Installation : " + iInstallationNo.ToString(), LogManager.enumLogLevel.Info);
                                    _prcoessEvent.Set();
                                }
                                break;

                            case "03":
                                bFreeFormMsg = objResponseBusiness.GetApproachLimitFreeFormMessage(strResponseMessage);
                                if (SendFreeFormMsgToComms(bFreeFormMsg, iInstallationNo))
                                {
                                    objResponseBusiness.UpdateSentFreeFormMsgToCommsStatus(Convert.ToInt32(row["PC_ST_ID"]), true);
                                    LogManager.WriteLog("Sent Approach Limit PC03 data to Ex Comms Successfully for the Installation : " + iInstallationNo.ToString(), LogManager.enumLogLevel.Info);
                                    _prcoessEvent.Set();
                                }
                                break;

                            case "04":
                                bFreeFormMsg = objResponseBusiness.GetLimitReachedFreeFormMessage(strResponseMessage);
                                if (SendFreeFormMsgToComms(bFreeFormMsg, iInstallationNo))
                                {
                                    objResponseBusiness.UpdateSentFreeFormMsgToCommsStatus(Convert.ToInt32(row["PC_ST_ID"]), true);
                                    LogManager.WriteLog("Sent Limit PC04 data to Ex Comms Successfully for the Installation : " + iInstallationNo.ToString(), LogManager.enumLogLevel.Info);
                                    _prcoessEvent.Set();
                                }
                                break;

                            case "07":
                                bFreeFormMsg = objResponseBusiness.GetRelaxedLimitFreeFormMessage(strResponseMessage);
                                if (SendFreeFormMsgToComms(bFreeFormMsg, iInstallationNo))
                                {
                                    objResponseBusiness.UpdateSentFreeFormMsgToCommsStatus(Convert.ToInt32(row["PC_ST_ID"]), true);
                                    LogManager.WriteLog("Sent Limit PC07 data to Ex Comms Successfully for the Installation : " + iInstallationNo.ToString(), LogManager.enumLogLevel.Info);
                                    _prcoessEvent.Set();
                                }
                                break;
                            }
                        }
                        if (iRecordsToProcess > iMaxRows)
                        {
                            LogManager.WriteLog("Records to process is greater than Max rows:" + iRecordsToProcess.ToString(), LogManager.enumLogLevel.Info);
                            Thread.Sleep(100);
                            continue;
                        }
                    }
                    break;
                }

                Thread.Sleep(10000);
            }
        }