knSocketTCP_receiveN

This commit is contained in:
Timerix22 2024-04-09 04:12:43 +05:00
parent 0e370b31ba
commit da504dfcf5
2 changed files with 16 additions and 0 deletions

View File

@ -100,3 +100,15 @@ Maybe knSocketTCP_receive(knSocketTCP* socket, char* buffer, u32 bufferLength){
return SUCCESS(UniUInt64(receivedCount));
}
Maybe knSocketTCP_receiveN(knSocketTCP* socket, char* buf, u32 bufsize, u32 n){
if(bufsize < n)
safethrow(ERR_UNEXPECTEDVAL, ;);
u32 receivedTotal = 0;
while(receivedTotal < n) {
try(knSocketTCP_receive(socket, buf+receivedTotal, n-receivedTotal), m_receivedCount, ;);
receivedTotal += m_receivedCount.value.UInt64;
}
return MaybeNull;
}

View File

@ -51,6 +51,10 @@ Maybe knSocketTCP_send(knSocketTCP* socket, char* buffer, u32 dataLength);
///@return Maybe<u64> received bytes amount
Maybe knSocketTCP_receive(knSocketTCP* socket, char* buffer, u32 bufferLength);
/// receives a package of size n
///@return Maybe<void>
Maybe knSocketTCP_receiveN(knSocketTCP* socket, char* buf, u32 bufsize, u32 n);
#if __cplusplus
}
#endif