📄 ctuxedothread.cpp
字号:
m_msgDesc.sprintf("Tperrno = %d.",tperrno);
r=tperrno;
if(r==6)
{
m_msgDesc=m_msgDesc + "The service name does not exist";
}
else if(r==12)
{
m_msgDesc=m_msgDesc + "Network error or invalid wsdn";
g_bNeedReconn=true;
// bWait=g_WaitCondi.wait( &g_Mutex,60000);
/*
if(!bTriedReInit)
{
fun.tpterm();
g_bInited=false;
g_bIniting=true;
r=RunInit();
bTriedReInit=true;
if(!r)
goto CallAgain;
}
*/
}
else
{ tpErrDes=fun.tpstrerror(tperrno);
m_msgDesc=m_msgDesc+tpErrDes;
}
m_msgID=MSG_TUX_CALL_FAILED;
/* QString ttt=m_SrvName;
m_msgDesc="service name:"+ ttt + " "+ m_msgDesc;
QByteArray ba= m_msgDesc.toAscii();
MessageBoxA( NULL,ba.data() ,"CALL FAILED",MB_OK);*/
}
else
{
m_msgDesc=*(char *)m_pRcvBufFML;//m_outputBuf;
m_msgID=MSG_TUX_CALL_OK;
//MessageBoxA(NULL,"CALLOK","",MB_OK);
r=0;
}
//fun.tpterm();
// g_Mutex.unlock();
char cTemp[302];
m_ErrID=r;
if (m_bAsync)
{ if(g_hWnd)
{
QByteArray ba= m_msgDesc.toLocal8Bit();
long saddr=(long)ba.data();
long slen=ba.length();
bool bok=PostMessage((HWND)g_hWnd,WM_USER+m_msgID ,saddr,slen);
}
else if(tuxCallBack)
{
// emit(Inited(CTuxedoThread *(this)));
// emit(Inited(int(1)));
//tuxCallBack(0,0,0);
}
}
//exec();
return r;// 0;
}
int CTuxedoThread::TuxFmlRunCallA()
{
m_msgDesc="";
m_ErrID=0;
long rcvlen;
int r=0;
if(!g_bInited)
{ m_msgDesc= "Not initialized";
return ERROR_TUX_NOT_INITED;
}
g_tmLastCall=GetTickCount();
bool bTriedReInit =false;
bool bWait=false;
CallAgain:
// ret = fun.tpcall ( m_SrvName, (char *)m_pSndBufFML, 0, (char **)&m_pRcvBufFML, &m_nRcvBufLen,0);
int ret = fun.tpacall( m_SrvName, (char *)m_pSndBufFML, m_nSndBufLen,TPNOBLOCK);
if(ret == -1)
{
QString tpErrDes;
m_msgDesc.sprintf("Tperrno = %d.",tperrno);
r=tperrno;
if(r==6)
{
m_msgDesc=m_msgDesc + "The service name does not exist";
}
else if(r==12)
{
m_msgDesc=m_msgDesc + "Network error or invalid wsdn";
g_bNeedReconn=true;
// bWait=g_WaitCondi.wait( &g_Mutex,60000);
/*
if(!bTriedReInit)
{
fun.tpterm();
g_bInited=false;
g_bIniting=true;
r=RunInit();
bTriedReInit=true;
if(!r)
goto CallAgain;
}
*/
}
else
{ tpErrDes=fun.tpstrerror(tperrno);
m_msgDesc=m_msgDesc+tpErrDes;
}
m_msgID=MSG_TUX_CALL_FAILED;
/* QString ttt=m_SrvName;
m_msgDesc="service name:"+ ttt + " "+ m_msgDesc;
QByteArray ba= m_msgDesc.toAscii();
MessageBoxA( NULL,ba.data() ,"CALL FAILED",MB_OK);*/
}
else
{
// (char **)&m_pRcvBufFML, &m_nRcvBufLen,
QTime tm;
tm.start();
bool bOK=false;
while(1)
{
m_nRcvBufLen=0;
fun.tpgetrply(&ret,(char **)&m_pRcvBufFML, &m_nRcvBufLen,TPNOBLOCK);
if (m_nRcvBufLen)
{
bOK=true;
break;
}
if (tm.elapsed()>15000)
{ fun.tpcancel(ret);
break;
}
msleep(50);
}
if(bOK)
{
m_msgDesc=*(char *)m_pRcvBufFML;//m_outputBuf;
m_msgID=MSG_TUX_CALL_OK;
r=0;
}
else
{
r=ERROR_FML_CALL_REPLY_TIMEOUT;
m_msgDesc="Timeout while getting fml call reply";
}
//MessageBoxA(NULL,"CALLOK","",MB_OK);
}
//fun.tpterm();
// g_Mutex.unlock();
char cTemp[302];
m_ErrID=r;
if (m_bAsync)
{ if(g_hWnd)
{
QByteArray ba= m_msgDesc.toLocal8Bit();
long saddr=(long)ba.data();
long slen=ba.length();
bool bok=PostMessage((HWND)g_hWnd,WM_USER+m_msgID ,saddr,slen);
}
else if(tuxCallBack)
{
// emit(Inited(CTuxedoThread *(this)));
// emit(Inited(int(1)));
//tuxCallBack(0,0,0);
}
}
//exec();
return r;// 0;
}
int CTuxedoThread::TuxStrRunCall()
{
char * rcvbuf,*sendbuf;
long rcvlen,ret;
strcpy(*m_outputBuf,"ok");
return 0;
int sendlen = strlen(m_inputBuf);
// 使用tpalloc申请string类型buffer作为请求和应答buffer
if((sendbuf = (char *) tpalloc( "STRING", NULL, sendlen+1)) == NULL) {
(void) fprintf(stderr,"Error allocating send buffer ");
// tpterm();
return -1;
}
if((rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {
(void) fprintf(stderr,"Error allocating receive buffer ");
tpfree(sendbuf);
// tpterm();
return -1;
}
strcpy(sendbuf, m_inputBuf);
ret = tpcall( m_SrvName, (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, (long)0);
if(ret == -1)
{
m_msgDesc.sprintf("Tperrno = %d . Can't send request to service",tperrno);
tpfree((char *)sendbuf);
tpfree((char *)rcvbuf);
m_msgID=MSG_TUX_CALL_FAILED;
}
else
{
strcpy(*m_outputBuf,rcvbuf);
*m_outputLen=strlen(rcvbuf);
m_msgDesc=*m_outputBuf;
m_msgID=MSG_TUX_CALL_OK;
}
tpfree((char *)sendbuf);
tpfree((char *)rcvbuf);
QByteArray ba= m_msgDesc.toLocal8Bit();
long saddr=(long)ba.data();
long slen=ba.length();
if (m_bAsync)
{ if(g_hWnd)
{
bool bok=PostMessage((HWND)g_hWnd,WM_USER+m_msgID ,saddr,slen);
}
else if(tuxCallBack)
{
// emit(Inited(CTuxedoThread *(this)));
// emit(Inited(int(1)));
//tuxCallBack(0,0,0);
}
}
return 0;// 0;
}
/*
int CTuxedoThread::RunTuxCall()
{
//char * rcvbuf,*sendbuf;
FBFR32 *rcvbuf,*sendbuf;
long rcvlen,ret;
// int sendlen = strlen(m_inputBuf);
// 使用tpalloc申请string类型buffer作为请求和应答buffer
if((sendbuf = (char *) tpalloc( "STRING", NULL, sendlen+1)) == NULL) {
(void) fprintf(stderr,"Error allocating send buffer ");
// tpterm();
return -1;
}
if((rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {
(void) fprintf(stderr,"Error allocating receive buffer ");
tpfree(sendbuf);
// tpterm();
return -1;
}
int sendlen=1024;
if((sendbuf = (FBFR32*) tpalloc( "FML32", NULL, sendlen+1)) == NULL) {
(void) fprintf(stderr,"Error allocating send buffer ");
// tpterm();
return -1;
}
if((rcvbuf = (FBFR32*) tpalloc("FML32", NULL, sendlen+1)) == NULL) {
(void) fprintf(stderr,"Error allocating receive buffer ");
tpfree((char *)sendbuf);
// tpterm();
return -1;
}
//(void) strcpy(sendbuf, m_inputBuf);
//char cTemp[100];
//char cInput[10];
long ll;
ll=10001;
ret = Fchg32(sendbuf,33554562,0,(char *)&ll,4);//ORIG_ID
ret = Fchg32(sendbuf,167772272,0,"0518",0);//AREA CODE
ret = Fchg32(sendbuf,167772269,0,"82610177",0);//ACC_NBR
//ret = Fchg32(sendbuf,33564437,0,"2",0);//GET_FLAG
ll=2;
ret = Fchg32(sendbuf,33564437,0,(char *)&ll,4);//GET_FLAG
ret = tpcall( m_SrvName, (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, (long)0);
if(ret == -1) {
m_msgDesc.sprintf("Tperrno = %d . Can't send request to service",fun.tperrno);
tpfree((char *)sendbuf);
tpfree((char *)rcvbuf);
//tpterm();
m_msgID=MSG_TUX_CALL_FAILED;
}
else
{
strcpy(*m_outputBuf,rcvbuf);
*m_outputLen=strlen(rcvbuf);
m_msgDesc=*m_outputBuf;
m_msgID=MSG_TUX_CALL_OK;
}
char cTemp[302];
FLDLEN32 fl=10;
ret = Fget32(rcvbuf,33564489,0,cTemp,&fl); //OWE_FLAG
long oweFlag=*(long *) cTemp;
fl=10;
ret = Fget32(rcvbuf,33554545,0,cTemp,&fl); //BALANCE
long balance=*(long *) cTemp;
fl=10;
ret = Fget32(rcvbuf,33564433,0,cTemp,&fl); //IRESULT
long lResult=*(long *) cTemp;
fl=301;
ret = Fget32(rcvbuf,167782162,0,cTemp,&fl); //SMSG
tpfree((char *)sendbuf);
tpfree((char *)rcvbuf);
QByteArray ba= m_msgDesc.toLocal8Bit();
long saddr=(long)ba.data();
long slen=ba.length();
if (m_bAsync)
{ if(g_hWnd)
{
bool bok=PostMessage((HWND)g_hWnd,WM_USER+m_msgID ,saddr,slen);
}
else if(tuxCallBack)
{
// emit(Inited(CTuxedoThread *(this)));
// emit(Inited(int(1)));
//tuxCallBack(0,0,0);
}
}
return 0;// 0;
}
*/
void CTuxedoThread::run()
{
if (action=="Init")
{
//RunInit();
KeepConnection();
//tuxCallBack=cbAddress;
}
else if(action=="FmlCall")
{
TuxFmlRunCall();
}
}
int CTuxedoThread::TuxInit(char * WSNADDR,char *userName,char *pwd,char * cltName,char * grpName,bool bAsync, TUXCALLBACK cbAddress)
{
action="Init";
strcpy(m_WSNADDR,WSNADDR);
strcpy(m_userName,userName);
strcpy(m_pwd,pwd);
strcpy(m_cltName,cltName);
strcpy(m_grpName,grpName);
m_bAsync=bAsync;
// bool rrr= connect( this,SIGNAL(Inited(int)),this,SLOT(myInited(int)),Qt::QueuedConnection);
// rrr= connect( this,SIGNAL(Inited(int)),&app,SLOT(Inited(int)),Qt::QueuedConnection);
// emit(Inited(1));
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -