📄 sgipprocthread.cpp
字号:
#include "stdafx.h"
#include "SgipServiceDemo.h"
#include "SgipProcThread.h"
#include "SgipServiceDemoDlg.h"
#include "Parsecstring.h"
extern long g_lSerialNo;
extern unsigned long g_ulSerialNo;
extern long g_lReceiveMsgCount;
////////////////////////////////////////////////////////////////////////////
//function:得到一个唯一标志该短消息的号码
//input:
//return:
////////////////////////////////////////////////////////////////////////////
unsigned long CreateGlobalCycleNo()
{
::InterlockedIncrement(&(g_lSerialNo));
g_ulSerialNo = (unsigned long)g_lSerialNo;
if(g_ulSerialNo == 0)
{
::InterlockedIncrement(&(g_lSerialNo));
g_ulSerialNo = (unsigned long)g_lSerialNo;
}
return g_ulSerialNo;
}
UINT TMtct(LPVOID wParam)
{
TRACE0("TMtct Thread Start!\n");
CSgipServiceDemoDlg *pDlg = (CSgipServiceDemoDlg *)wParam;
pDlg->ShowRunState("MT性能测试线程开始!");
while (WaitForSingleObject(pDlg->m_hTMTAppExit, 0) != WAIT_OBJECT_0)
{
if(1 == pDlg->m_iTestPhase)//mtct
{
int iSPNPerSecond = pDlg->m_iEditMTCTSPNPerSecond;
int iSPNMax = pDlg->m_iEditMTCTSPNMax;
int i,j;
int iSendOkCount = 0;
int iSendFailCount = 0;
for(i = 0; i < iSPNMax;)
{
if(FALSE == pDlg->m_bStartTest) break;
if(FALSE == pDlg->m_bStartMtctTest) break;
for(j = 0; j < iSPNPerSecond; j++)
{
if(FALSE == pDlg->m_bStartTest) break;
if( i >= iSPNMax) break;
if(FALSE == pDlg->m_bStartMtctTest) break;
int iSubResult = pDlg->SubmitOneMsg(pDlg->m_strMsgContent,
pDlg->m_strFeePhoneNo,
pDlg->m_strDestPnoneNo,
(unsigned long)i,
2,
0,
pDlg->m_bWaitResp);
switch(iSubResult)
{
case 0://ok
iSendOkCount++;
break;
case -3://网络连接错误
case -4://time out
//break;
pDlg->SendMessage(WM_USER_REINITSOCKET);
Sleep(10);
default://other error
pDlg->ShowRunState("短消息提交失败,请检查参数配置及网络状况!");
iSendFailCount++;
break;
}
i++;
if(iSPNPerSecond <= 50)
Sleep(1000/iSPNPerSecond -4);
if(iSPNPerSecond <= 100 && iSPNPerSecond > 50)
Sleep(700/iSPNPerSecond);
if(iSPNPerSecond > 100)
Sleep(500/iSPNPerSecond);
}
}
CString strMsg;
strMsg.Format("共提交%d条短信,成功%d条,失败%d条",i,iSendOkCount,iSendFailCount);
pDlg->ShowRunState(strMsg);
CTime tmEndTime;
tmEndTime = CTime::GetCurrentTime();
pDlg->m_strEditMTCTEndTime = tmEndTime.Format("%y-%m-%d %H:%M:%S");
pDlg->SendMessage(WM_UPDATE_DLGDATA,0,0);
pDlg->m_iTestPhase = 0;
pDlg->m_BtnMTMOStop.EnableWindow(FALSE);
pDlg->m_BtnMTMOStart.EnableWindow();
pDlg->m_BtnMOCTStop.EnableWindow(FALSE);
pDlg->m_BtnMOCTStart.EnableWindow();
pDlg->m_BtnMTCTStart.EnableWindow();
pDlg->m_BtnMTCTStop.EnableWindow(FALSE);
pDlg->m_BtnStopTest.EnableWindow();
}
else
{
Sleep(100);
}
}
TRACE0("TMtct Thread exit!\n");
SetEvent(pDlg->m_hTMTExit);
pDlg->ShowRunState("MT性能测试线程退出!");
return 0;
}
UINT TMoct(LPVOID wParam)
{
TRACE0("TMoct Thread Start!\n");
CSgipServiceDemoDlg *pDlg = (CSgipServiceDemoDlg *)wParam;
pDlg->ShowRunState("MO性能测试线程开始!");
while (WaitForSingleObject(pDlg->m_hTMOAppExit, 0) != WAIT_OBJECT_0)
{
if(2 == pDlg->m_iTestPhase)//moct
{
SMSDeliver smsdeliver;
if(1 == pDlg->GetSMSDeliver(smsdeliver))
{
pDlg->m_iEditMOCTRPN ++;
pDlg->SendMessage(WM_UPDATE_DLGDATA,0,0);
CString strTemp;
strTemp.Format("%u%u",smsdeliver.ulTimeID,smsdeliver.ulSgipSerial);
pDlg->ShowRunState("Deliver:ID(" + strTemp + ")No(" + smsdeliver.strGSMNo + ")Content(" + smsdeliver.strDeliverMsg + ")");
}
else
{
Sleep(100);
}
}
else
{
Sleep(500);
}
}
TRACE0("TMoct Thread exit!\n");
SetEvent(pDlg->m_hTMOExit);
pDlg->ShowRunState("MO性能测试线程退出!");
return 0;
}
UINT TMomtct(LPVOID wParam)
{
TRACE0("TMomtct Thread Start!\n");
CSgipServiceDemoDlg *pDlg = (CSgipServiceDemoDlg *)wParam;
pDlg->ShowRunState("MOMT性能测试线程开始!");
while (WaitForSingleObject(pDlg->m_hTMOMTAppExit, 0) != WAIT_OBJECT_0)
{
if(3 == pDlg->m_iTestPhase)//momtct
{
SMSDeliver smsdeliver;
if(1 == pDlg->GetSMSDeliver(smsdeliver))
{
pDlg->m_iEditMTMORPN ++;
CString strTemp;
strTemp.Format("%u%u",smsdeliver.ulTimeID,smsdeliver.ulSgipSerial);
pDlg->ShowRunState("Deliver:ID(" + strTemp + ")No(" + smsdeliver.strGSMNo + ")Content(" + smsdeliver.strDeliverMsg + ")");
CString strRespMsg = "Mo Resp:" + smsdeliver.strDeliverMsg;
int iSubResult = pDlg->SubmitOneMsg(strRespMsg,
smsdeliver.strGSMNo,
smsdeliver.strGSMNo,
smsdeliver.ulSgipSerial,
2,
0,
pDlg->m_bWaitResp);
switch(iSubResult)
{
case 0://ok
pDlg->m_iEditMTMOSPN ++;
break;
case -3://网络连接错误
case -4://time out
//break;
pDlg->SendMessage(WM_USER_REINITSOCKET);
Sleep(10);
default://other error
pDlg->ShowRunState("短消息提交失败,请检查参数配置及网络状况!");
break;
}
pDlg->SendMessage(WM_UPDATE_DLGDATA,0,0);
}
else
{
Sleep(100);
}
}
else
{
Sleep(500);
}
}
TRACE0("TMomtct Thread exit!\n");
SetEvent(pDlg->m_hTMOMTExit);
pDlg->ShowRunState("MOMT性能测试线程退出!");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -