Files
ict/client/ewsc/net/netlib/THNetRunCmdInter.cpp
2026-01-23 08:57:55 +08:00

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;
}