Network: Add support for sending/receiving NetPacket over UDP/TCP

Former-commit-id: 5c09a5fa8b499e4204d2312f6d04d8554093a5a4
This commit is contained in:
Lynix
2016-02-04 14:51:26 +01:00
parent 6c0215952d
commit 08caff5ea3
4 changed files with 149 additions and 3 deletions

View File

@@ -8,6 +8,7 @@
#define NAZARA_TCPCLIENT_HPP
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Core/ByteArray.hpp>
#include <Nazara/Core/Signal.hpp>
#include <Nazara/Core/Stream.hpp>
#include <Nazara/Network/AbstractSocket.hpp>
@@ -15,6 +16,8 @@
namespace Nz
{
class NetPacket;
class NAZARA_NETWORK_API TcpClient : public AbstractSocket, public Stream
{
friend class TcpServer;
@@ -43,8 +46,10 @@ namespace Nz
inline bool IsKeepAliveEnabled() const;
bool Receive(void* buffer, std::size_t size, std::size_t* received);
bool ReceivePacket(NetPacket* packet);
bool Send(const void* buffer, std::size_t size, std::size_t* sent);
bool SendPacket(const NetPacket& packet);
bool SetCursorPos(UInt64 offset) override;
@@ -62,7 +67,16 @@ namespace Nz
void Reset(SocketHandle handle, const IpAddress& peerAddress);
std::size_t WriteBlock(const void* buffer, std::size_t size) override;
struct PendingPacket
{
std::size_t received = 0;
ByteArray data;
UInt16 netcode;
bool headerReceived = false;
};
IpAddress m_peerAddress;
PendingPacket m_pendingPacket;
UInt64 m_keepAliveInterval;
UInt64 m_keepAliveTime;
bool m_isLowDelayEnabled;
@@ -72,4 +86,4 @@ namespace Nz
#include <Nazara/Network/TcpClient.inl>
#endif // NAZARA_TCPCLIENT_HPP
#endif // NAZARA_TCPCLIENT_HPP