| 344 | } |
| 345 | |
| 346 | void 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 | |
| 368 | TcpSocket::PendingPacket::PendingPacket() : Size( 0 ), SizeReceived( 0 ), Data() {} |
| 369 |
nothing calls this directly
no test coverage detected