mirror of
https://github.com/HikikoMarmy/Champions-Reborn-Server.git
synced 2026-04-05 08:59:54 -03:00
Networking
This commit is contained in:
@@ -14,14 +14,23 @@ public:
|
||||
|
||||
virtual ~GenericRequest() = default;
|
||||
|
||||
virtual sptr_generic_response ProcessRequest( sptr_tcp_socket socket, sptr_byte_stream stream ) = 0;
|
||||
virtual sptr_generic_response ProcessRequest(sptr_user user, sptr_byte_stream stream)
|
||||
{
|
||||
return nullptr;
|
||||
};
|
||||
|
||||
virtual sptr_generic_response ProcessRequest( sptr_byte_stream stream )
|
||||
{
|
||||
return nullptr;
|
||||
};
|
||||
|
||||
void DeserializeHeader( sptr_byte_stream stream )
|
||||
{
|
||||
m_packetId = stream->read_u16();
|
||||
m_requestId = stream->read_u32();
|
||||
auto _ = stream->read_u32(); // Always 2 from client.
|
||||
auto ver = stream->read_u32(); // Called Version in the game, but is always 2 for CON and RTA
|
||||
};
|
||||
virtual void Deserialize( sptr_tcp_socket socket, sptr_byte_stream stream ) = 0;
|
||||
virtual void Deserialize( sptr_byte_stream stream ) = 0;
|
||||
};
|
||||
|
||||
typedef std::shared_ptr< GenericRequest > sptr_generic_request;
|
||||
|
||||
@@ -5,9 +5,14 @@ RealmSocket::RealmSocket()
|
||||
{
|
||||
fd = INVALID_SOCKET;
|
||||
|
||||
memset( &local_address, 0, sizeof( local_address ) );
|
||||
memset( &remote_address, 0, sizeof( remote_address ) );
|
||||
port = 0;
|
||||
memset( &local_addr, 0, sizeof( local_addr ) );
|
||||
memset( &remote_addr, 0, sizeof( remote_addr ) );
|
||||
|
||||
local_ip = "";
|
||||
local_port = 0;
|
||||
|
||||
remote_ip = "";
|
||||
remote_port = 0;
|
||||
|
||||
flag.disconnected = 0;
|
||||
flag.is_listener = 0;
|
||||
@@ -30,9 +35,14 @@ RealmSocket::~RealmSocket()
|
||||
|
||||
fd = INVALID_SOCKET;
|
||||
|
||||
memset( &local_address, 0, sizeof( local_address ) );
|
||||
memset( &remote_address, 0, sizeof( remote_address ) );
|
||||
port = 0;
|
||||
memset( &local_addr, 0, sizeof( local_addr ) );
|
||||
memset( &remote_addr, 0, sizeof( remote_addr ) );
|
||||
|
||||
local_ip = "";
|
||||
local_port = 0;
|
||||
|
||||
remote_ip = "";
|
||||
remote_port = 0;
|
||||
|
||||
flag.disconnected = 0;
|
||||
flag.is_listener = 0;
|
||||
@@ -104,10 +114,10 @@ RealmUDPSocket::~RealmUDPSocket()
|
||||
|
||||
void RealmUDPSocket::send( const sptr_byte_stream stream )
|
||||
{
|
||||
m_pendingWriteQueue.push( stream );
|
||||
sendto( fd, ( char * )stream->data.data(), stream->get_position(), 0, ( sockaddr * )&remote_addr, sizeof( remote_addr ) );
|
||||
}
|
||||
|
||||
void RealmUDPSocket::send( const ByteStream &stream )
|
||||
{
|
||||
m_pendingWriteQueue.push( std::make_shared< ByteStream >( stream ) );
|
||||
sendto( fd, ( char * )stream.data.data(), stream.get_position(), 0, ( sockaddr * )&remote_addr, sizeof( remote_addr ) );
|
||||
}
|
||||
@@ -40,12 +40,15 @@ public:
|
||||
}
|
||||
|
||||
SOCKET fd;
|
||||
uint16_t port;
|
||||
sockaddr_in local_address;
|
||||
sockaddr_in remote_address;
|
||||
|
||||
std::string peer_ip_address;
|
||||
int32_t peer_port;
|
||||
sockaddr_in local_addr;
|
||||
sockaddr_in remote_addr;
|
||||
|
||||
std::string local_ip;
|
||||
int32_t local_port;
|
||||
|
||||
std::string remote_ip;
|
||||
int32_t remote_port;
|
||||
|
||||
uint32_t last_write_position;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user