Я пытаюсь создать IObservable
, который возвращает true
, если сообщение UDP было получено за последние 5 секунд, и если произойдет тайм-аут, возвращается ложь.
На данный момент у меня есть следующее:
public IObservable<Boolean> GettingUDPMessages(IPEndPoint localEP)
{
var udp = BaseComms.UDPBaseStringListener(localEP)
.Where(msg => msg.Data.Contains("running"))
.Select(s => true);
return Observable
.Timeout(udp, TimeSpan.FromSeconds(5))
.Catch(Observable.Return(false));
}
Проблемы с этим: -
истина
или ложь
об изменении состояния. Я мог бы использовать Subject
, но мне нужно быть осторожным, чтобы избавиться от наблюдаемого UDPBaseStringListener
, когда больше нет подписчиков.
Обновление
Каждый раз, когда я получаю сообщение UDP, я хочу, чтобы оно возвращало истину
. Если я не получал сообщения UDP в течение последних 5 секунд, я бы хотел, чтобы оно возвращало false
.