Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,213 @@
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Stream/Buffer/Buffer.h>
|
||||
#include <Stream/Buffer/BufferFactory.h>
|
||||
#include <Network/Dispatch/AdminToolDispatch.h>
|
||||
|
||||
#include <Network/AsyncSock/ClientSock.h>
|
||||
#include <Network/SingleSession/ClientSingleSession.h>
|
||||
|
||||
|
||||
CSingleSession::CSingleSession( )
|
||||
: m_hSock( INVALID_SOCKET ), m_lpClientAsync( NULL ), m_pPacketDispatch( NULL ), m_bIsConnected( FALSE )
|
||||
//m_pRecvBuffer( CREATE_BUFFER( static_cast< unsigned long >( CBufferFactory::GetOptimizedBufferSize( 32768 ) ) ) )
|
||||
{
|
||||
m_pRecvBuffer = m_DefaultBufferFactory.Create( 32768 );
|
||||
}
|
||||
|
||||
CSingleSession::~CSingleSession( )
|
||||
{
|
||||
Destroy( );
|
||||
|
||||
if( m_pRecvBuffer )
|
||||
{
|
||||
m_DefaultBufferFactory.Release( m_pRecvBuffer );
|
||||
//RELEASE_BUFFER( m_pRecvBuffer );
|
||||
}
|
||||
}
|
||||
|
||||
bool CSingleSession::Initialize( CPacketToolDispatch* pPacketDispatch )
|
||||
{
|
||||
if( pPacketDispatch == NULL ) return false;
|
||||
|
||||
m_lpClientAsync = new CClientSock( this );
|
||||
|
||||
if( !SetDispatch( pPacketDispatch ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if( !m_lpClientAsync->Create( ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void CSingleSession::Disconnected( )
|
||||
{
|
||||
MessageBox( NULL, _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>."), _T("<EFBFBD>˸<EFBFBD>"), MB_OK );
|
||||
m_bIsConnected = false;
|
||||
}
|
||||
|
||||
bool CSingleSession::Connect( TCHAR* Address, int nPort )
|
||||
{
|
||||
if( m_lpClientAsync )
|
||||
{
|
||||
if( InitializeInternal( m_pPacketDispatch ) )
|
||||
{
|
||||
if( m_lpClientAsync->Connect(Address, nPort ) )
|
||||
{
|
||||
m_hSock = m_lpClientAsync->m_hSocket;
|
||||
m_bIsConnected = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CSingleSession::GetConnected( )
|
||||
{
|
||||
return m_bIsConnected;
|
||||
}
|
||||
|
||||
bool CSingleSession::InitializeInternal( CPacketToolDispatch* lpPacketDispatch )
|
||||
{
|
||||
m_bIsConnected = FALSE;
|
||||
|
||||
CloseSocket( );
|
||||
|
||||
//m_pRecvBuffer->ClearBuffer( );
|
||||
|
||||
if( m_pRecvBuffer == NULL )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if( m_pPacketDispatch == NULL )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CSingleSession::Send( CBuffer* lpBuffer )
|
||||
{
|
||||
unsigned long dwSendBytes = 0;
|
||||
unsigned long nSendByte = lpBuffer->length( );
|
||||
|
||||
if( m_hSock != INVALID_SOCKET )
|
||||
{
|
||||
while( nSendByte )
|
||||
{
|
||||
dwSendBytes = m_lpClientAsync->Send( lpBuffer->begin( ), lpBuffer->length( ) ); // <20><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>~
|
||||
|
||||
if( dwSendBytes )
|
||||
{
|
||||
nSendByte -= dwSendBytes;
|
||||
}
|
||||
else //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD>θ<EFBFBD>
|
||||
{
|
||||
CloseSocket( );
|
||||
//RELEASE_BUFFER( lpBuffer );
|
||||
m_DefaultBufferFactory.Release( lpBuffer );
|
||||
|
||||
AfxMessageBox( _T("<EFBFBD><EFBFBD>Ŷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>~~"), MB_OK );
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//RELEASE_BUFFER( lpBuffer );
|
||||
m_DefaultBufferFactory.Release( lpBuffer );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CSingleSession::Recv( )
|
||||
{
|
||||
unsigned long dwReceived = 0; //<2F><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~
|
||||
unsigned long dwBufferLength = m_pRecvBuffer->remain( ); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if( m_hSock != INVALID_SOCKET ) // <20><>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD>?
|
||||
{
|
||||
dwReceived = m_lpClientAsync->Receive( m_pRecvBuffer->wr_ptr( ), m_pRecvBuffer->remain( ) ); // <20><><EFBFBD><EFBFBD> <20>ƹ<DEBE><C6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~
|
||||
|
||||
if( dwReceived ) // <20><><EFBFBD><EFBFBD> <20>Ҵ<DEBE>.
|
||||
{
|
||||
return Dispatch( dwReceived ); // <20><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ~ <20><>
|
||||
}
|
||||
else // <20><>~
|
||||
{
|
||||
CloseSocket( );
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CSingleSession::Dispatch( unsigned long dwReceivedBytes )
|
||||
{
|
||||
// <20><>Ŷ ó<><C3B3><EFBFBD><EFBFBD> <20>ϰ<EFBFBD>, ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>δ<EFBFBD>.
|
||||
//m_pRecvBuffer->UseBuffer(dwReceivedBytes);
|
||||
m_pRecvBuffer->wr_ptr( dwReceivedBytes );
|
||||
unsigned long dwDispatchSize = m_pRecvBuffer->length( );
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> 0(<28><><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD>) <20>̰ų<CCB0>, <20><>Ŷ ó<><C3B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> Socket<65><74> Close<73>Ѵ<EFBFBD>.
|
||||
bool bResult = ( ( 0 != dwReceivedBytes ) && ( NULL != m_pPacketDispatch ) &&
|
||||
m_pPacketDispatch->ParsePacket( m_pRecvBuffer->begin( ), &dwDispatchSize ) );
|
||||
|
||||
m_pRecvBuffer->rd_ptr( dwDispatchSize ); // ó<><C3B3><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6><EFBFBD≯<EFBFBD>ŭ <20>о<EFBFBD><D0BE>ְ<EFBFBD>
|
||||
m_pRecvBuffer->pop_read_data( ); // ó<><C3B3><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
|
||||
|
||||
if( !bResult )
|
||||
{
|
||||
AfxMessageBox( _T("Dispatch <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>~~"), MB_OK );
|
||||
CloseSocket();
|
||||
}
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
void CSingleSession::Close( )
|
||||
{
|
||||
if( m_lpClientAsync ) delete m_lpClientAsync;
|
||||
m_hSock = INVALID_SOCKET;
|
||||
m_bIsConnected = FALSE;
|
||||
}
|
||||
|
||||
bool CSingleSession::SetDispatch( CPacketToolDispatch* pPacketDispatch )
|
||||
{
|
||||
if( m_pPacketDispatch ) return false;
|
||||
|
||||
m_pPacketDispatch = pPacketDispatch;
|
||||
m_pPacketDispatch->SetSession(this);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CSingleSession::Destroy( )
|
||||
{
|
||||
Close( );
|
||||
|
||||
CloseSocket( );
|
||||
|
||||
if( m_pPacketDispatch )
|
||||
{
|
||||
m_pPacketDispatch->Destroy();
|
||||
m_pPacketDispatch = NULL;
|
||||
}
|
||||
|
||||
// m_pRecvBuffer->ClearBuffer();
|
||||
}
|
||||
|
||||
void CSingleSession::CloseSocket( )
|
||||
{
|
||||
if(INVALID_SOCKET != m_hSock)
|
||||
{
|
||||
shutdown(m_hSock, SD_BOTH);
|
||||
closesocket(m_hSock);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
#ifndef _CLIENT_SINGLE_SESSION_H_
|
||||
#define _CLIENT_SINGLE_SESSION_H_
|
||||
|
||||
#include <Stream/Buffer/BufferFactory.h>
|
||||
#include <tchar.h>
|
||||
|
||||
// forward decl.
|
||||
class CClientSock;
|
||||
class CBuffer;
|
||||
class CPacketToolDispatch;
|
||||
class CWnd;
|
||||
|
||||
class CSingleSession
|
||||
{
|
||||
public:
|
||||
CSingleSession( );
|
||||
~CSingleSession( );
|
||||
|
||||
bool Send( CBuffer* lpBuffer );
|
||||
bool Recv( );
|
||||
void Close( );
|
||||
void Destroy( );
|
||||
bool Initialize( CPacketToolDispatch* CPacketToolDispatch );
|
||||
bool Connect( TCHAR* Address, int nPort );
|
||||
void Disconnected( );
|
||||
bool GetConnected( );
|
||||
bool SetCurrentWindow( CWnd* pMainFrame );
|
||||
CWnd* GetCurrentWindow( );
|
||||
|
||||
private:
|
||||
SOCKET m_hSock; // Socket<65><74><EFBFBD><EFBFBD>
|
||||
CClientSock* m_lpClientAsync; // MfcŬ<63><C5AC><EFBFBD><EFBFBD> CAsyncSocket
|
||||
|
||||
CBuffer* m_pRecvBuffer; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>.
|
||||
CPacketToolDispatch* m_pPacketDispatch; // <20><EFBFBD><DEBE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..
|
||||
|
||||
bool m_bIsConnected;
|
||||
|
||||
void CloseSocket( );
|
||||
bool InitializeInternal( CPacketToolDispatch* pPacketDispatch );
|
||||
bool Dispatch( unsigned long dwReceivedBytes );
|
||||
bool SetDispatch( CPacketToolDispatch* pPacketDispatch );
|
||||
CDefaultBufferFactory m_DefaultBufferFactory;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user