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;
}