Networking
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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 ) );
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user