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