controller_patcher/network/ControllerPatcherNet.cpp

51 lines
1.1 KiB
C++
Raw Permalink Normal View History

2017-05-07 14:44:09 +02:00
#include "ControllerPatcherNet.hpp"
#include "dynamic_libs/os_functions.h"
#include "dynamic_libs/socket_functions.h"
s32 ControllerPatcherNet::recvwait(s32 sock, void *buffer, s32 len) {
s32 ret;
while (len > 0) {
ret = recv(sock, buffer, len, 0);
if(ret < 0) return ret;
len -= ret;
buffer = (void *)(((char *) buffer) + ret);
}
return 0;
}
u8 ControllerPatcherNet::recvbyte(s32 sock) {
unsigned char buffer[1];
s32 ret;
ret = recvwait(sock, buffer, 1);
if (ret < 0) return ret;
return buffer[0];
}
s32 ControllerPatcherNet::checkbyte(s32 sock) {
unsigned char buffer[1];
s32 ret;
ret = recv(sock, buffer, 1, MSG_DONTWAIT);
if (ret < 0) return ret;
if (ret == 0) return -1;
return buffer[0];
}
s32 ControllerPatcherNet::sendwait(s32 sock, const void *buffer, s32 len) {
s32 ret;
while (len > 0) {
ret = send(sock, buffer, len, 0);
if(ret < 0) return ret;
len -= ret;
buffer = (void *)(((char *) buffer) + ret);
}
return 0;
}
s32 ControllerPatcherNet::sendbyte(s32 sock, unsigned char byte) {
unsigned char buffer[1];
buffer[0] = byte;
return sendwait(sock, buffer, 1);
}