77 lines
1.4 KiB
C++
77 lines
1.4 KiB
C++
#include "Common.h"
|
|
#include "Sockets.h"
|
|
|
|
bool Sockets::SendInt(OrbisNetId Sock, int val)
|
|
{
|
|
auto res = sceNetSend(Sock, &val, sizeof(int), 0);
|
|
if (res <= 0)
|
|
{
|
|
klog("SendInt(): Failed to send %llX\n", res);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool Sockets::RecvInt(OrbisNetId Sock, int* val)
|
|
{
|
|
auto res = sceNetRecv(Sock, val, sizeof(int), 0);
|
|
if (res <= 0)
|
|
{
|
|
klog("RecvInt(): Failed to recv %llX\n", res);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool Sockets::SendLargeData(OrbisNetId Sock, unsigned char* data, size_t dataLen)
|
|
{
|
|
unsigned char* CurrentPosition = data;
|
|
size_t DataLeft = dataLen;
|
|
int res = 0;
|
|
|
|
while (DataLeft > 0)
|
|
{
|
|
size_t DataChunkSize = std::min((size_t)8192, DataLeft);
|
|
|
|
res = sceNetSend(Sock, CurrentPosition, DataChunkSize, 0);
|
|
|
|
if (res < 0)
|
|
{
|
|
klog("SendLargeData() Error: %llX(%llX)\n", res, *sceNetErrnoLoc());
|
|
return false;
|
|
}
|
|
|
|
DataLeft -= res;
|
|
CurrentPosition += res;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool Sockets::RecvLargeData(OrbisNetId Sock, unsigned char* data, size_t dataLen)
|
|
{
|
|
size_t DataLeft = dataLen;
|
|
int Received = 0;
|
|
int res = 0;
|
|
|
|
while (DataLeft > 0)
|
|
{
|
|
size_t DataChunkSize = std::min((size_t)8192, DataLeft);
|
|
res = sceNetRecv(Sock, data + Received, DataChunkSize, 0);
|
|
|
|
if (res < 0)
|
|
{
|
|
klog("RecvLargeData() Error: %llX(%llX)\n", res, *sceNetErrnoLoc());
|
|
return false;
|
|
}
|
|
|
|
Received += res;
|
|
DataLeft -= res;
|
|
}
|
|
|
|
return true;
|
|
} |