MCPcopy Create free account
hub / github.com/SpartanJ/eepp / startAsyncRead

Method startAsyncRead

src/eepp/network/tcpsocket.cpp:346–366  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

344}
345
346void TcpSocket::startAsyncRead( ReadFn readFn ) {
347 mReadThread = std::thread( [this, readFn] {
348 setReceiveTimeout( Milliseconds( 100 ) );
349 std::string buffer;
350 buffer.resize( 131072 );
351 Clock clock;
352 while ( mSocket != Private::SocketImpl::invalidSocket() ) {
353 size_t received = 0;
354 clock.restart();
355 while ( receive( buffer.data(), buffer.size(), received ) == Status::Done &&
356 received > 0 )
357 readFn( buffer.c_str(), received );
358 if ( mSocket != Private::SocketImpl::invalidSocket() &&
359 clock.getElapsedTime().asMilliseconds() < 100.f ) {
360 auto ms = 100.f - clock.getElapsedTime().asMilliseconds();
361 Sys::sleep( Milliseconds( ms ) );
362 }
363 clock.restart();
364 }
365 } );
366}
367
368TcpSocket::PendingPacket::PendingPacket() : Size( 0 ), SizeReceived( 0 ), Data() {}
369

Callers

nothing calls this directly

Calls 8

MillisecondsFunction · 0.85
c_strMethod · 0.80
asMillisecondsMethod · 0.80
getElapsedTimeMethod · 0.80
resizeMethod · 0.45
restartMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected