4 def self.discover(filter, timeout, limit, client)
7 Timeout.timeout(timeout) do
8 reqid = client.sendreq("ping", "discovery", filter)
9 Log.debug("Waiting #{timeout} seconds for discovery replies to request #{reqid}")
12 reply = client.receive(reqid)
13 Log.debug("Got discovery reply from #{reply.payload[:senderid]}")
14 hosts << reply.payload[:senderid]
16 return hosts if limit > 0 && hosts.size == limit
19 rescue Timeout::Error => e
23 client.unsubscribe("discovery", :reply)