lib/rmpd/commands/miscellaneous.rb in rmpd-1.0.4 vs lib/rmpd/commands/miscellaneous.rb in rmpd-1.0.5

- old
+ new

@@ -23,16 +23,48 @@ def command_list send_command("command_list_begin") @in_command_list = true yield self send_command("command_list_end") + handle_command_list_response + ensure + @in_command_list = false + @in_command_list_response_regexp = nil + end + + def command_list_ok + send_command("command_list_ok_begin") + @in_command_list = true + yield self + send_command("command_list_end") + read_command_list_ok_responses do |responses| + handle_command_list_response.tap do |res| + responses << res unless res.empty? + end + end + ensure + @in_command_list = false + @in_command_list_response_regexp = nil + end + + + private + + def handle_command_list_response if @in_command_list_response_regexp read_responses(@in_command_list_response_regexp) else read_response end - ensure - @in_command_list = false - @in_command_list_response_regexp = nil + end + + def read_command_list_ok_responses + responses = [] + + begin + yield responses + end while LIST_OK_RE === @last_response + + responses end end end