Networking

This commit is contained in:
HikikoMarmy
2025-02-20 02:40:54 +00:00
parent 893385346f
commit 5d07483ed7
3 changed files with 38 additions and 16 deletions

View File

@@ -14,14 +14,23 @@ public:
virtual ~GenericRequest() = default; 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 ) void DeserializeHeader( sptr_byte_stream stream )
{ {
m_packetId = stream->read_u16(); m_packetId = stream->read_u16();
m_requestId = stream->read_u32(); 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; typedef std::shared_ptr< GenericRequest > sptr_generic_request;

View File

@@ -5,9 +5,14 @@ RealmSocket::RealmSocket()
{ {
fd = INVALID_SOCKET; fd = INVALID_SOCKET;
memset( &local_address, 0, sizeof( local_address ) ); memset( &local_addr, 0, sizeof( local_addr ) );
memset( &remote_address, 0, sizeof( remote_address ) ); memset( &remote_addr, 0, sizeof( remote_addr ) );
port = 0;
local_ip = "";
local_port = 0;
remote_ip = "";
remote_port = 0;
flag.disconnected = 0; flag.disconnected = 0;
flag.is_listener = 0; flag.is_listener = 0;
@@ -30,9 +35,14 @@ RealmSocket::~RealmSocket()
fd = INVALID_SOCKET; fd = INVALID_SOCKET;
memset( &local_address, 0, sizeof( local_address ) ); memset( &local_addr, 0, sizeof( local_addr ) );
memset( &remote_address, 0, sizeof( remote_address ) ); memset( &remote_addr, 0, sizeof( remote_addr ) );
port = 0;
local_ip = "";
local_port = 0;
remote_ip = "";
remote_port = 0;
flag.disconnected = 0; flag.disconnected = 0;
flag.is_listener = 0; flag.is_listener = 0;
@@ -104,10 +114,10 @@ RealmUDPSocket::~RealmUDPSocket()
void RealmUDPSocket::send( const sptr_byte_stream stream ) 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 ) 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 ) );
} }

View File

@@ -40,12 +40,15 @@ public:
} }
SOCKET fd; SOCKET fd;
uint16_t port;
sockaddr_in local_address;
sockaddr_in remote_address;
std::string peer_ip_address; sockaddr_in local_addr;
int32_t peer_port; 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; uint32_t last_write_position;