void thread_fun() { char buffer[2000]; for (;;) { error_code ec; udp::endpoint from; int bytes_transferred = m_socket.receive_from( asio::buffer(buffer, sizeof(buffer)), from, 0, ec); if (ec == boost::asio::error::operation_aborted || ec == boost::asio::error::bad_descriptor) return; if (ec) { fprintf(stderr, "Error receiving on DHT socket: %s\n", ec.message().c_str()); return; } try { entry msg = bdecode(buffer, buffer + bytes_transferred); #if defined TORRENT_DEBUG && TORRENT_USE_IOSTREAM std::cerr << msg << std::endl; #endif ++m_dht_requests; } catch (std::exception& e) { fprintf(stderr, "failed to decode DHT message: %s\n", e.what()); } } }
void run() { using namespace boost::posix_time; boost::system::error_code error; ptime now; udp::endpoint endpoint; while(!this->checked_ || this->alive_) { socket->receive_from(asio::buffer(buf), endpoint, 0, error); if(error == boost::system::errc::success) { last = microsec_clock::local_time(); } } }