def main
mc = rpcclient(configuration[:agent])
mc.agent_filter(configuration[:agent])
string_to_ddl_type(configuration[:arguments], mc.ddl.action_interface(configuration[:action])) if mc.ddl
mc.validate_request(configuration[:action], configuration[:arguments])
if mc.reply_to
configuration[:arguments][:process_results] = true
puts "Request sent with id: " + mc.send(configuration[:action], configuration[:arguments]) + " replies to #{mc.reply_to}"
elsif !configuration[:show_results]
configuration[:arguments][:process_results] = false
puts "Request sent with id: " + mc.send(configuration[:action], configuration[:arguments])
else
discover_args = {:verbose => true}
if mc.default_discovery_method && !STDIN.tty? && !STDIN.eof?
mc.discovery_method = 'stdin'
mc.discovery_options = 'auto'
discover_args = {:verbose => false}
end
mc.discover discover_args
printrpc mc.send(configuration[:action], configuration[:arguments])
printrpcstats :summarize => true, :caption => "#{configuration[:agent]}##{configuration[:action]} call stats" if mc.discover.size > 0
halt mc.stats
end
end