mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-30 01:04:36 +00:00
Implement reading unknown lengths of data from socket.
This commit is contained in:
parent
72ce3ccf15
commit
e2d69e7981
@ -351,6 +351,24 @@ int Socket::Recv( void* _buf, int len, int timeout )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Socket::ReadUpTo( void* _buf, int len, int timeout )
|
||||||
|
{
|
||||||
|
const auto sock = m_sock.load( std::memory_order_relaxed );
|
||||||
|
auto buf = (char*)_buf;
|
||||||
|
|
||||||
|
int rd = 0;
|
||||||
|
while( len > 0 )
|
||||||
|
{
|
||||||
|
const auto res = recv( sock, buf, len, 0 );
|
||||||
|
if( res == 0 ) break;
|
||||||
|
if( res == -1 ) return -1;
|
||||||
|
len -= res;
|
||||||
|
rd += res;
|
||||||
|
buf += res;
|
||||||
|
}
|
||||||
|
return rd;
|
||||||
|
}
|
||||||
|
|
||||||
bool Socket::Read( void* buf, int len, int timeout )
|
bool Socket::Read( void* buf, int len, int timeout )
|
||||||
{
|
{
|
||||||
auto cbuf = (char*)buf;
|
auto cbuf = (char*)buf;
|
||||||
|
@ -30,6 +30,7 @@ public:
|
|||||||
int Send( const void* buf, int len );
|
int Send( const void* buf, int len );
|
||||||
int GetSendBufSize();
|
int GetSendBufSize();
|
||||||
|
|
||||||
|
int ReadUpTo( void* buf, int len, int timeout );
|
||||||
bool Read( void* buf, int len, int timeout );
|
bool Read( void* buf, int len, int timeout );
|
||||||
|
|
||||||
template<typename ShouldExit>
|
template<typename ShouldExit>
|
||||||
|
Loading…
Reference in New Issue
Block a user