BIG REFACTOR

This commit is contained in:
2022-02-16 17:54:33 +01:00
parent 387cff36ad
commit bdebabb79e
13 changed files with 111 additions and 74 deletions

View File

@@ -33,7 +33,8 @@ NetworkInitializer initializer;
IPAddresses Dns::Resolve(const std::string& host) {
IPAddresses list;
addrinfo hints = { 0 }, * addresses;
addrinfo hints{};
addrinfo* addresses = nullptr;
//hints.ai_family = AF_UNSPEC;
hints.ai_family = AF_INET;
@@ -54,7 +55,7 @@ IPAddresses Dns::Resolve(const std::string& host) {
#else
char straddr[512];
inet_ntop(p->ai_family, &((sockaddr_in*)p->ai_addr)->sin_addr, straddr, sizeof(straddr));
inet_ntop(p->ai_family, &(reinterpret_cast<sockaddr_in*>(p->ai_addr))->sin_addr, straddr, sizeof(straddr));
#endif
list.push_back(IPAddress(straddr));

View File

@@ -16,7 +16,7 @@ Socket::Socket(Type type)
: m_Blocking(false),
m_Type(type),
m_Status(Disconnected),
m_Handle((SocketHandle)INVALID_SOCKET)
m_Handle(static_cast<SocketHandle>(INVALID_SOCKET))
{
}

View File

@@ -13,10 +13,8 @@
namespace td {
namespace network {
TCPSocket::TCPSocket()
: Socket(Socket::TCP), m_Port(0)
{
m_Handle = (SocketHandle)INVALID_SOCKET;
TCPSocket::TCPSocket() : Socket(Socket::TCP), m_Port(0) {
m_Handle = static_cast<SocketHandle>(INVALID_SOCKET);
}
bool TCPSocket::Connect(const IPAddress& address, unsigned short port) {
@@ -32,7 +30,7 @@ bool TCPSocket::Connect(const IPAddress& address, unsigned short port) {
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
if (::getaddrinfo(address.ToString().c_str(), std::to_string(port).c_str(), &hints, &result) != 0) {
if (::getaddrinfo(address.ToString().c_str(), std::to_string(static_cast<int>(port)).c_str(), &hints, &result) != 0) {
std::cerr << "Failed to get address info !\n";
return false;
}
@@ -44,8 +42,8 @@ bool TCPSocket::Connect(const IPAddress& address, unsigned short port) {
struct addrinfo* ptr = nullptr;
for (ptr = result; ptr != nullptr; ptr = ptr->ai_next) {
struct sockaddr_in* sockaddr = (struct sockaddr_in*)ptr->ai_addr;
if (::connect(m_Handle, (struct sockaddr*)sockaddr, sizeof(struct sockaddr_in)) != 0) {
struct sockaddr* sockaddr = ptr->ai_addr;
if (::connect(m_Handle, sockaddr, sizeof(sockaddr_in)) != 0) {
std::cerr << "Failed to connect with this address !\n";
continue;
}
@@ -78,7 +76,7 @@ size_t TCPSocket::Send(const unsigned char* data, size_t size) {
Disconnect();
return 0;
}
sent += cur;
sent += static_cast<std::size_t>(cur);
}
return sent;
@@ -88,7 +86,7 @@ std::size_t TCPSocket::Receive(DataBuffer& buffer, std::size_t amount) {
buffer.Resize(amount);
buffer.SetReadOffset(0);
int recvAmount = ::recv(m_Handle, (char*)&buffer[0], amount, 0);
int recvAmount = ::recv(m_Handle, reinterpret_cast<char*>(buffer.data()), amount, 0);
if (recvAmount <= 0) {
#if defined(_WIN32) || defined(WIN32)
int err = WSAGetLastError();
@@ -104,8 +102,8 @@ std::size_t TCPSocket::Receive(DataBuffer& buffer, std::size_t amount) {
buffer.Clear();
return 0;
}
buffer.Resize(recvAmount);
return recvAmount;
buffer.Resize(static_cast<std::size_t>(recvAmount));
return static_cast<std::size_t>(recvAmount);
}
DataBuffer TCPSocket::Receive(std::size_t amount) {
@@ -126,7 +124,7 @@ DataBuffer TCPSocket::Receive(std::size_t amount) {
return DataBuffer();
}
return DataBuffer(std::string(buf.get(), received));
return DataBuffer(std::string(buf.get(), static_cast<std::size_t>(received)));
}
TCPSocket::TCPSocket(TCPSocket&& other) : Socket(TCP) {
@@ -136,12 +134,12 @@ TCPSocket::TCPSocket(TCPSocket&& other) : Socket(TCP) {
m_RemoteIP = other.m_RemoteIP;
SetStatus(other.GetStatus());
SetBlocking(other.IsBlocking());
other.m_Handle = (SocketHandle)INVALID_SOCKET;
other.m_Handle = static_cast<SocketHandle>(INVALID_SOCKET);
}
void SendPacket(const DataBuffer& data, network::TCPSocket& socket) {
DataBuffer compressed = utils::Compress(data);
socket.Send((const std::uint8_t*)compressed.ToString().data(), compressed.GetSize());
socket.Send(reinterpret_cast<const std::uint8_t*>(compressed.ToString().data()), compressed.GetSize());
}

View File

@@ -14,7 +14,7 @@ namespace network {
UDPSocket::UDPSocket()
: Socket(Socket::UDP), m_Port(0)
{
m_Handle = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
m_Handle = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
}
bool UDPSocket::Connect(const IPAddress& address, unsigned short port) {
@@ -31,20 +31,20 @@ bool UDPSocket::Connect(const IPAddress& address, unsigned short port) {
return true;
}
size_t UDPSocket::Send(const unsigned char* data, size_t size) {
size_t sent = 0;
std::size_t UDPSocket::Send(const unsigned char* data, std::size_t size) {
std::size_t sent = 0;
if (this->GetStatus() != Connected)
return 0;
while (sent < size) {
int cur = sendto(m_Handle, reinterpret_cast<const char*>(data + sent), size - sent, 0,
int cur = ::sendto(m_Handle, reinterpret_cast<const char*>(data + sent), size - sent, 0,
reinterpret_cast<sockaddr*>(&m_RemoteAddr), sizeof(sockaddr_in));
if (cur <= 0) {
Disconnect();
return 0;
}
sent += cur;
sent += static_cast<std::size_t>(cur);
}
return sent;
@@ -54,7 +54,7 @@ DataBuffer UDPSocket::Receive(std::size_t amount) {
std::unique_ptr<char[]> buf(new char[amount]);
socklen_t slen = sizeof(sockaddr_in);
int received = recvfrom(m_Handle, buf.get(), amount, 0,
int received = ::recvfrom(m_Handle, buf.get(), amount, 0,
reinterpret_cast<sockaddr*>(&m_RemoteAddr), &slen);
if (received <= 0) {
@@ -64,13 +64,40 @@ DataBuffer UDPSocket::Receive(std::size_t amount) {
int err = errno;
#endif
if (err == WOULDBLOCK)
return DataBuffer(std::string(buf.get(), received));
return DataBuffer(std::string(buf.get(), static_cast<std::size_t>(received)));
Disconnect();
return DataBuffer();
}
return DataBuffer(std::string(buf.get(), received));
return DataBuffer(std::string(buf.get(), static_cast<std::size_t>(received)));
}
std::size_t UDPSocket::Receive(DataBuffer& buffer, std::size_t amount) {
buffer.Resize(amount);
buffer.SetReadOffset(0);
socklen_t slen = sizeof(sockaddr_in);
int recvAmount = ::recvfrom(m_Handle, reinterpret_cast<char*>(buffer.data()), amount, 0,
reinterpret_cast<sockaddr*>(&m_RemoteAddr), &slen);
if (recvAmount <= 0) {
#if defined(_WIN32) || defined(WIN32)
int err = WSAGetLastError();
#else
int err = errno;
#endif
if (err == WOULDBLOCK) {
buffer.Clear();
return 0;
}
Disconnect();
buffer.Clear();
return 0;
}
buffer.Resize(static_cast<std::size_t>(recvAmount));
return static_cast<std::size_t>(recvAmount);
}
} // ns network