void MemoryWatcherUnix::WatcherThread() { while (m_running) { for (auto& entry : m_values) { std::string address = entry.first; u32& current_value = entry.second; u32 new_value = ChasePointer(address); if (new_value != current_value) { // Update the value current_value = new_value; std::string message = ComposeMessage(address, new_value); sendto( m_fd, message.c_str(), message.size() + 1, 0, reinterpret_cast<sockaddr*>(&m_addr), sizeof(m_addr)); } } Common::SleepCurrentThread(SLEEP_DURATION); } }
void MemoryWatcher::Step() { if (!m_running) return; for (auto& entry : m_values) { std::string address = entry.first; u32& current_value = entry.second; u32 new_value = ChasePointer(address); if (new_value != current_value) { // Update the value current_value = new_value; std::string message = ComposeMessage(address, new_value); sendto(m_fd, message.c_str(), message.size() + 1, 0, reinterpret_cast<sockaddr*>(&m_addr), sizeof(m_addr)); } } }