bool CommRemote::run(Messages & messages, Feedback & feedback) { // Delete all the previous remote messages to the robot messages.clearRemoteMessagesToRobot(); pthread_mutex_lock(&dataMutex); // Add all the received remote messages to the robot std::vector<RemoteMessageToRobot const *>::iterator toIter; for (toIter = messagesToRobot.begin(); toIter != messagesToRobot.end(); toIter++) { messages.addRemoteMessageToRobot(*toIter); } messagesToRobot.clear(); // Take ownership of all the remote messages to be sent from the robot messagesFromRobot.insert(messagesFromRobot.end(), messages.getRemoteMessagesToSend().begin(), messages.getRemoteMessagesToSend().end()); messages.clearRemoteMessagesFromRobot(); pthread_mutex_unlock(&dataMutex); // Are we connected to a client now? bool isConnectedToClient = (clientSocket >= 0); if (isConnectedToClient != wasConnectedToClient) { feedback.setConnectedToClient(isConnectedToClient); wasConnectedToClient = isConnectedToClient; } return false; }