(uint32), я в мапу кладу структуру с ключом seqNo, а в данных - время приёма пакета и тип пакета.
Потом отдельно по таймеру взвожу мьютекс, сканирую всю мапу (раз в секунду), нахожу протухшие пакеты, создаю отдельно слайс с пакетами-автоответчиками, кладу туда автоматически созданный ответ с ошибкой "тайм-аут обработки", удаляю запись из мапы, снимаю мьютекс и закидываю все автосозданные пакеты в канал для отправки в сеть.
Если ответ приходит вовремя, то также удаляю запись из мапы.
Как тут канал поможет?
Заводишь канал inFlightTx, пишешь в него все сообщения что надо посмотреть на предмет таймаута. Раз в секунду горутина просыпается, вычитывает весь канал и то что не expired - закидывает в канал обратно
По факту, ты мапу не используешь по ключу примерно нигде
Обсуждают сегодня