mirror of
https://github.com/HikikoMarmy/Champions-Reborn-Server.git
synced 2026-04-05 08:59:54 -03:00
Store the game type in the socket for gateways
This commit is contained in:
@@ -256,7 +256,7 @@ void LobbyServer::CheckSocketProblem()
|
||||
}
|
||||
}
|
||||
|
||||
void LobbyServer::AcceptGateway( SOCKET socket, RealmGameType clientType )
|
||||
void LobbyServer::AcceptGateway( SOCKET socket, RealmGameType gameType )
|
||||
{
|
||||
sockaddr_in clientInfo{};
|
||||
int32_t addrSize = sizeof( clientInfo );
|
||||
@@ -273,12 +273,13 @@ void LobbyServer::AcceptGateway( SOCKET socket, RealmGameType clientType )
|
||||
new_socket->remote_addr = clientInfo;
|
||||
new_socket->remote_ip = inet_ntoa( clientInfo.sin_addr );
|
||||
new_socket->remote_port = ntohs( clientInfo.sin_port );
|
||||
new_socket->gameType = gameType;
|
||||
m_clientSockets.push_back( new_socket );
|
||||
|
||||
Log::Info( "New Gateway Client Connected : (%s)", new_socket->remote_ip.c_str() );
|
||||
}
|
||||
|
||||
void LobbyServer::AcceptClient( SOCKET socket, RealmGameType clientType )
|
||||
void LobbyServer::AcceptClient( SOCKET socket, RealmGameType gameType )
|
||||
{
|
||||
sockaddr_in clientInfo{};
|
||||
int32_t addrSize = sizeof( clientInfo );
|
||||
@@ -295,10 +296,10 @@ void LobbyServer::AcceptClient( SOCKET socket, RealmGameType clientType )
|
||||
new_socket->remote_addr = clientInfo;
|
||||
new_socket->remote_ip = inet_ntoa( clientInfo.sin_addr );
|
||||
new_socket->remote_port = ntohs( clientInfo.sin_port );
|
||||
|
||||
new_socket->gameType = gameType;
|
||||
m_clientSockets.push_back( new_socket );
|
||||
|
||||
RealmUserManager::Get().CreateUser( new_socket, clientType );
|
||||
RealmUserManager::Get().CreateUser( new_socket, gameType );
|
||||
|
||||
Log::Info( "New Client Connected : (%s)", new_socket->remote_ip.c_str() );
|
||||
}
|
||||
|
||||
@@ -15,27 +15,21 @@ sptr_generic_response RequestGetServerAddress::ProcessRequest( sptr_socket socke
|
||||
{
|
||||
Deserialize( stream );
|
||||
|
||||
auto user = RealmUserManager::Get().FindUserBySocket( socket );
|
||||
if( user == nullptr )
|
||||
if( socket->gameType == RealmGameType::RETURN_TO_ARMS )
|
||||
{
|
||||
return std::make_shared< ResultGetServerAddress >( this, "", 0, RealmGameType::RETURN_TO_ARMS );
|
||||
}
|
||||
|
||||
if (user->m_gameType == RealmGameType::RETURN_TO_ARMS)
|
||||
{
|
||||
return std::make_shared< ResultGetServerAddress >(this, Config::service_ip, Config::rta_lobby_port, user->m_gameType);
|
||||
return std::make_shared< ResultGetServerAddress >( this, Config::service_ip, Config::rta_lobby_port, socket->gameType );
|
||||
}
|
||||
else
|
||||
{
|
||||
return std::make_shared< ResultGetServerAddress >(this, Config::service_ip, Config::con_lobby_port, user->m_gameType);
|
||||
return std::make_shared< ResultGetServerAddress >( this, Config::service_ip, Config::con_lobby_port, socket->gameType );
|
||||
}
|
||||
}
|
||||
|
||||
ResultGetServerAddress::ResultGetServerAddress( GenericRequest *request, std::string ip, int32_t port, RealmGameType clientType ) : GenericResponse( *request )
|
||||
ResultGetServerAddress::ResultGetServerAddress( GenericRequest *request, std::string ip, int32_t port, RealmGameType gameType ) : GenericResponse( *request )
|
||||
{
|
||||
m_ip = ip;
|
||||
m_port = port;
|
||||
m_clientType = clientType;
|
||||
m_gameType = gameType;
|
||||
}
|
||||
|
||||
ByteBuffer &ResultGetServerAddress::Serialize()
|
||||
@@ -44,7 +38,7 @@ ByteBuffer &ResultGetServerAddress::Serialize()
|
||||
m_stream.write_u32( m_trackId );
|
||||
m_stream.write_u32( 0 );
|
||||
|
||||
if( m_clientType == RealmGameType::RETURN_TO_ARMS )
|
||||
if( m_gameType == RealmGameType::RETURN_TO_ARMS )
|
||||
m_stream.write_utf8( m_ip );
|
||||
else
|
||||
m_stream.write_sz_utf8( m_ip );
|
||||
|
||||
@@ -22,7 +22,7 @@ class ResultGetServerAddress : public GenericResponse {
|
||||
public:
|
||||
std::string m_ip;
|
||||
int32_t m_port;
|
||||
RealmGameType m_clientType;
|
||||
RealmGameType m_gameType;
|
||||
|
||||
ResultGetServerAddress( GenericRequest *request, std::string ip, int32_t port, RealmGameType clientType );
|
||||
ByteBuffer &Serialize();
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "GenericNetRequest.h"
|
||||
#include "GenericNetResponse.h"
|
||||
#include "GenericNetMessage.h"
|
||||
#include "../Common/Constant.h"
|
||||
|
||||
class RealmSocket
|
||||
{
|
||||
@@ -46,6 +47,7 @@ public:
|
||||
sockaddr_in local_addr;
|
||||
sockaddr_in remote_addr;
|
||||
|
||||
RealmGameType gameType;
|
||||
std::string remote_ip;
|
||||
uint32_t remote_port;
|
||||
uint32_t last_write_position;
|
||||
|
||||
Reference in New Issue
Block a user