Тип команды
2. Статус команды(Ожидает отправки, Ожидает ответа, Получила ответ)
3. Время отправки
4. Значение передаваемое с командой
5. ID команды
Требования:
1. Что бы команда дожидалась ответа, а когда придёт ответ, тогда отправить следующую.
2. Если команда ждёт ответа больше 3 секунд, то удаляем эту команду.
3. Если при добавлении в список команд, там есть команда такого же типа, то мы не будем добавлять эту команду, а просто заменим значение передаваемое с командой на новое. Нечто похожее на это:
commandList[старая команда такого же типа].value = commandList[новая команда такого же типа].value
4. Если в списке комманд каким то образом окажется что 1 команда уже получила ответ, но не удалилась, то нужно её удалить и отправить следующую
В принципе QList меня устраивает за исключением того что иногда нужно удалить команду из списка не зная какую позицию она занимает в списке.
Вы скажите: "Перегрузи оператор == у структуры команды, и ищи её в списке по ID". Но для выполнения 4 го пунтка в списке требований, мне нужно перегрузить оператор == что бы он сравнивал типы команд, а не id.
Что делать?
Использовать использовать QMap где у каждой команды будет ещё один id?
Вот если бы ла функция contains но только туда разные виды сравнения передавать
Можно использовать std::find_if, и искать по какому угодно параметру
Обсуждают сегодня