Я пытаюсь смоделировать распределенную файловую систему, и у меня возникли небольшие проблемы с имитацией работы сердцебиения. У меня есть один узел имени, который хранит метаданные файла, и узлы данных, которые фактически хранят блоки файла. Периодически (как каждые 3 секунды) я отправляю сообщение с узла данных на узел имени, сообщая узлу имени, что он жив.
В настоящее время у меня есть HashTable в узле имени, который хранится в качестве ключа имя узла данных (String) и в качестве значения логическое значение, которое сообщает мне, если узел данных еще жив или нет. Если я получаю сообщение от узла данных, значение в таблице ha sh переключается на true. Часть, с которой у меня возникают трудности, это как я могу переключить значение обратно в false, если я не получу сообщение от узла данных, скажем, в течение 10 секунд?
Единственное, о чем я могу думать, - это отметка времени каждый такт и размещение каждой временной метки в другой хеш-таблице, которая содержит имя узла данных и временную метку. Затем напишите функцию, которая сравнивает текущее время с каждой из временных меток в хеш-таблице и измените любой узел данных с временной меткой с более чем 10 секунд go на false в булевой таблице ha sh. Затем поместите эту функцию в бесконечное время, пока l oop. Что было бы лучшим способом приблизиться к чему-то подобному?