Ejemplo n.º 1
0
        private void smsSendngMonitor()
        {
            while (true)
            {
                while (smsSendingQueue.Count > 0)
                {
                    MessageToSend messageToSend = smsSendingQueue[0];
                    if (Util.SendSMS(messageToSend.getClientNum(), messageToSend.getMsgContent()))
                    {
                        smsSendingQueue.RemoveAt(0);

                        if (enableLogging)
                        {
                            logWriter.WriteLine(DateTime.Now + "," + messageToSend.getClientNum() + "," + messageToSend.getMsgContent() + ", successfully sent.");
                            logWriter.Flush();
                        }
                    }
                    else
                    {
                        if (messageToSend.failedCount >= smsResendRetryTimes)
                        {
                            smsSendingQueue.RemoveAt(0);

                            if (enableLogging)
                            {
                                logWriter.WriteLine(DateTime.Now + "," + messageToSend.getClientNum() + "," + messageToSend.getMsgContent() + ", failed to send too many times. Giving up retrying.");
                                logWriter.Flush();
                            }
                        }
                        else
                        {
                            if (enableLogging)
                            {
                                logWriter.WriteLine(DateTime.Now + "," + messageToSend.getClientNum() + "," + messageToSend.getMsgContent() + ", message failed to send, retrying in " + sendSMSPollingFreq * (messageToSend.failedCount + 1) + " seconds.");
                                logWriter.Flush();
                            }

                            messageToSend.failedCount++;
                            Thread.Sleep(sendSMSPollingFreq * messageToSend.failedCount * 1000);
                        }
                    }
                }

                Thread.Sleep(sendSMSPollingFreq * 1000);
            }
        }