mirror of
https://github.com/Maschell/controller_patcher.git
synced 2024-11-22 12:09:16 +01:00
74d422a87e
Updated the TCP Handshake to also negotiate a protocol version.
51 lines
1.1 KiB
C++
51 lines
1.1 KiB
C++
#include "dynamic_libs/os_functions.h"
|
|
#include "dynamic_libs/socket_functions.h"
|
|
#include "ControllerPatcherNet.hpp"
|
|
|
|
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);
|
|
}
|