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 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;

View File

@@ -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 ) );
}

View File

@@ -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;