В течение некоторого времени я использовал старый дистрибутив Ruby (кажется, это был 1.8.6), в котором я кодировал библиотеку сокетов.В старой библиотеке был метод с именем ready? , который проверял, есть ли еще данные для получения без блокировки.Какова была бы лучшая замена для этого в 1.9?
Причина, по которой мне это нужно, заключается в том, что у меня есть программа, структурированная так:
def handle_socket_messages
while true
break unless messages_to_send
sent_messages
end
while @s and @s.ready?
#read messages
readStr = @s.recv(0x1024)
...
end
end
(тогда у меня есть другой цикл, который сохраняетвыполнение метода handle_socket_messages, а затем использование спящего режима, чтобы цикл не вращался слишком быстро вместе с некоторыми другими методами.
Как видите, мне нужно проверить, получу ли я данные, используя @s.ready? (@s - это сокет), в противном случае циклы висят в readStr = @ s.recv (0x1024) , где сокет продолжает получать данные, которые сервер не делает.не отправлять (он ожидает данные, а не должен).
Какая из них лучше всего подойдет для этого метода?