122 lines
2.7 KiB
C++
122 lines
2.7 KiB
C++
// THNetCommCmdInter.cpp: implementation of the CTHNetRunCmdInter class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "THNetRunCmdInter.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Construction/Destruction
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
CTHNetRunCmdInter::CTHNetRunCmdInter()
|
|
{
|
|
// m_szHostName[0] = 0;
|
|
// m_szSrvName[0] = 0;
|
|
}
|
|
|
|
CTHNetRunCmdInter::~CTHNetRunCmdInter()
|
|
{
|
|
m_oLink.Close();
|
|
}
|
|
void CTHNetRunCmdInter::Clean()
|
|
{
|
|
// m_szHostName[0] = 0;
|
|
// m_szSrvName[0] = 0;
|
|
// m_nPort = 0;
|
|
// m_nAppNo = 0;
|
|
// m_nCtxNo = 0;
|
|
m_oLink.Close();
|
|
}
|
|
int CTHNetRunCmdInter::LinkByPara()
|
|
{
|
|
Clean();
|
|
return m_oLink.LinkByPara(m_oLink.m_oServPara);
|
|
}
|
|
int CTHNetRunCmdInter::LinkTo(const char * szServer,int nPort)
|
|
{
|
|
Clean();
|
|
m_oLink.m_oServPara.SetHostName(szServer,nPort);
|
|
return m_oLink.LinkByPara(m_oLink.m_oServPara);
|
|
}
|
|
int CTHNetRunCmdInter::LinkToSrv(const char * szServName,const int nAppNo,const int nCtxNo)
|
|
{
|
|
Clean();
|
|
m_oLink.m_oServPara.SetServName(szServName,nAppNo,nCtxNo);
|
|
return m_oLink.LinkByPara(m_oLink.m_oServPara);
|
|
}
|
|
int CTHNetRunCmdInter::LinkToSrv(const char * szServName,const char * szApp,const char * szCtx)
|
|
{
|
|
Clean();
|
|
m_oLink.m_oServPara.SetServName(szServName,szApp,szCtx);
|
|
return m_oLink.LinkByPara(m_oLink.m_oServPara);
|
|
}
|
|
void CTHNetRunCmdInter::SetPara(CNetCmdRunCmdPara * pPara)
|
|
{
|
|
memcpy(&m_oPara,pPara,sizeof(CNetCmdRunCmdPara));
|
|
}
|
|
int CTHNetRunCmdInter::SendData()
|
|
{
|
|
m_szErrorCode[0] = 0;
|
|
if(!m_oLink.IsWritable())
|
|
{
|
|
m_oLink.LinkByPara(m_oLink.m_oServPara);
|
|
}
|
|
XByteArray ba;
|
|
m_oPara.Write(&ba);
|
|
|
|
NET_HEAD oHead;
|
|
// oHead.cmdtype = NETDBIO_CMD_RUNCMD;
|
|
oHead.src.n_reg_type = 2;
|
|
oHead.len = ba.m_nLength;
|
|
if( !m_oLink.TxStream(&oHead,(void*)ba.m_pData))
|
|
{
|
|
sprintf(m_szErrorCode,"无法向服务 %s/%S 发送消息",
|
|
m_oLink.m_oServPara.m_szHostName,m_oLink.m_oServPara.m_szServName);
|
|
return 0;
|
|
}
|
|
if(m_oPara.m_nWriteBack)
|
|
{
|
|
sprintf(m_szErrorCode,"无返回结果");
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
return RecvData();
|
|
}
|
|
}
|
|
int CTHNetRunCmdInter::SendData(CNetCmdRunCmdPara * pPara)
|
|
{
|
|
SetPara(pPara);
|
|
return SendData();
|
|
}
|
|
int CTHNetRunCmdInter::RecvData()
|
|
{
|
|
m_szErrorCode[0] = 0;
|
|
if(m_oPara.m_nWriteBack == 0)
|
|
{
|
|
sprintf(m_szErrorCode,"无返回结果");
|
|
return 1;
|
|
}
|
|
NET_HEAD oHead;
|
|
if (!m_oLink.RxHead(&oHead))
|
|
{
|
|
sprintf(m_szErrorCode,"无法读取返回报文头");
|
|
return 0;
|
|
}
|
|
int nDataLen = oHead.len;
|
|
XByteArray baOut(nDataLen + 2);
|
|
if (!m_oLink.RxData(&baOut,(int)oHead.len))
|
|
{
|
|
sprintf(m_szErrorCode,"无法读取返回报文结果");
|
|
return 0;
|
|
}
|
|
int nSucc = baOut.ReadInt();
|
|
if(nSucc >= 0)
|
|
{
|
|
sprintf(m_szErrorCode,"执行成功");
|
|
return 1;
|
|
}
|
|
baOut.ReadString(m_szErrorCode,1024);
|
|
printf("%s\n",m_szErrorCode);
|
|
return 1;
|
|
} |