+ end
+
+ # Starts the response receiver routine
+ # Expected to return the amount of received responses.
+ def start_receiver(requestid, waitfor, timeout, &block)
+ Log.debug("Starting response receiver with timeout of #{timeout}")
+ hosts_responded = 0
+ begin
+ Timeout.timeout(timeout) do
+ begin
+ resp = receive(requestid)
+ yield resp.payload
+ hosts_responded += 1
+ end while (waitfor == 0 || hosts_responded < waitfor)
+ end
+ rescue Timeout::Error => e
+ Log.warn("Could not receive all responses. Expected : #{waitfor}. Received : #{hosts_responded}")
+ end
+
+ hosts_responded
+ end