forked from LosaDev/ls-2019-source
LosaDev source snapshot 2019
This commit is contained in:
commit
c198676e97
20588 files changed
+8812878
No files matched your search
@@ -0,0 +1,157 @@
|
||||
// Packet.cpp: implementation of the CPacket class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "../stdafx.h"
|
||||
#include "Packet.h"
|
||||
|
||||
#include "../LS_TTBotDlg.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Construction/Destruction
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
CPacket::CPacket()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
|
||||
CPacket::CPacket(DWORD ID)
|
||||
{
|
||||
Clear();
|
||||
*m_packet_header.m_ID = ID;
|
||||
m_currentPos = sizeof(PACKETHEADER);
|
||||
}
|
||||
|
||||
CPacket::CPacket(const uint8 *buffer, uint32 size)
|
||||
{
|
||||
Clear();
|
||||
|
||||
if( size >= sizeof(PACKETHEADER) )
|
||||
{
|
||||
memcpy( m_pBuffer , buffer, sizeof(PACKETHEADER) );
|
||||
m_currentPos = sizeof(PACKETHEADER);
|
||||
|
||||
if( size >= GetBufferSize() )
|
||||
{
|
||||
if( GetBufferSize() < m_currentPos )
|
||||
{
|
||||
MessageBox(NULL, "CPacket error", "error", MB_OK );
|
||||
exit(1);
|
||||
return;
|
||||
}
|
||||
memcpy( &m_pBuffer[m_currentPos], &buffer[m_currentPos], GetBufferSize() - m_currentPos );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CPacket::~CPacket()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CPacket::Clear()
|
||||
{
|
||||
memset(m_pBuffer,0,MAX_BUFFER);
|
||||
m_currentPos = 0;
|
||||
m_packet_header.m_ID = (DWORD*)&m_pBuffer[PK_ID_ADDR];
|
||||
m_packet_header.m_Size = (DWORD*)&m_pBuffer[PK_SIZE_ADDR];
|
||||
m_packet_header.m_CheckSum = (DWORD*)&m_pBuffer[PK_CKSUM_ADDR];
|
||||
m_packet_header.m_iState = (int*)&m_pBuffer[PK_FSM_ADDR];
|
||||
*m_packet_header.m_Size = sizeof(PACKETHEADER);
|
||||
}
|
||||
|
||||
void CPacket::SetBufferCopy(char *pBuf,int size)
|
||||
{
|
||||
Clear();
|
||||
|
||||
memcpy( m_pBuffer, pBuf, size );
|
||||
m_currentPos = sizeof(PACKETHEADER);
|
||||
}
|
||||
|
||||
void CPacket::SetDataAdd(char *pBuf,int size)
|
||||
{
|
||||
memcpy( &m_pBuffer[m_currentPos], pBuf, size );
|
||||
m_currentPos += size;
|
||||
*m_packet_header.m_Size = m_currentPos;
|
||||
}
|
||||
|
||||
void CPacket::SetCheckSum( DWORD dwSum )
|
||||
{
|
||||
*m_packet_header.m_CheckSum = dwSum;
|
||||
}
|
||||
|
||||
void CPacket::SetState( int iState )
|
||||
{
|
||||
*m_packet_header.m_iState = iState;
|
||||
}
|
||||
|
||||
const uint8* CPacket::GetBuffer() const
|
||||
{
|
||||
return &m_pBuffer[0];
|
||||
}
|
||||
|
||||
const uint8* CPacket::GetData() const
|
||||
{
|
||||
return &m_pBuffer[0] + sizeof(PACKETHEADER);
|
||||
}
|
||||
|
||||
uint32 CPacket::GetBufferSize() const
|
||||
{
|
||||
return *m_packet_header.m_Size;
|
||||
}
|
||||
|
||||
uint32 CPacket::GetDataSize() const
|
||||
{
|
||||
return *m_packet_header.m_Size - sizeof(PACKETHEADER);
|
||||
}
|
||||
|
||||
DWORD CPacket::GetPacketID() const
|
||||
{
|
||||
return *m_packet_header.m_ID;
|
||||
}
|
||||
|
||||
DWORD CPacket::GetCheckSum() const
|
||||
{
|
||||
return *m_packet_header.m_CheckSum;
|
||||
}
|
||||
|
||||
int CPacket::GetState() const
|
||||
{
|
||||
return *m_packet_header.m_iState;
|
||||
}
|
||||
|
||||
bool CPacket::IsValidHeader() const
|
||||
{
|
||||
return (GetBufferSize() >= sizeof(PACKETHEADER) );
|
||||
}
|
||||
|
||||
bool CPacket::IsValidPacket() const
|
||||
{
|
||||
if(!IsValidHeader()) return false;
|
||||
|
||||
return (GetBufferSize() >= m_currentPos);
|
||||
}
|
||||
|
||||
bool CPacket::CheckLeftPacketSize( int iAddSize )
|
||||
{
|
||||
if( m_currentPos + iAddSize >= MAX_BUFFER )
|
||||
{
|
||||
//LOG.PrintTimeAndLog( 0,"[ID:%d - SIZE:%d] << Packat Size Overflow!", GetPacketID(), m_currentPos + iAddSize );
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CPacket::CheckRightPacketSize( int iAddSize )
|
||||
{
|
||||
if( m_currentPos + iAddSize >= MAX_BUFFER )
|
||||
{
|
||||
//LOG.PrintTimeAndLog( 0,"[ID:%d - SIZE:%d] >> Packat Size Overflow!", GetPacketID(), m_currentPos + iAddSize );
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user