www.pudn.com > NETINFO.rar > LineConnect.cpp
#include "LineConnect.h"
CLineConnection::CLineConnection(const ETHERNET *ether, const IP* ip, NetInfo* pNi, const NETINFO_CALLBACKS *pFuncs,
DWORD dwAttachData,int lineBufferSize)
:CConnection(ether, ip, pNi, pFuncs, dwAttachData),
m_lineBufferSize(lineBufferSize),
m_connecterLine(lineBufferSize),m_listenerLine(lineBufferSize)
{
m_line = new char[lineBufferSize];
}
CLineConnection::~CLineConnection()
{
delete m_line;
}
BOOL CLineConnection::OnData(int sender, int receiver, const BYTE* pData, DWORD length)
{
CCollectLine *pCollectLine;
if( sender == m_connecter )
pCollectLine = & m_connecterLine;
else
pCollectLine = & m_listenerLine;
if( pCollectLine->PutData((const char*)pData, length) )
{
int writeLen;
while( pCollectLine->GetLine(m_line, m_lineBufferSize, &writeLen) )
{
OnLine(sender, receiver, m_line, writeLen-1);
}
if( writeLen >= m_lineBufferSize )
{
printf("CLineConnection::OnData()--line buffer size is too small!\n");
MessageBox(NULL, "CLineConnection::OnData()--line buffer size is too small!", "", MB_OK | MB_SYSTEMMODAL);
}
}
return TRUE;
}
void CLineConnection::OnLine(int sender, int receiver, const char* line, int lineLen)
{
if( m_pFuncs && m_pFuncs->OnTcpLine )
m_pFuncs->OnTcpLine(m_pNi, this, sender==m_connecter, line, lineLen);
}