# File lib/soap/rpc/router.rb, line 407 def initialize(soapaction, name, param_def, opt) @soapaction = soapaction @name = name @request_style = opt[:request_style] @response_style = opt[:response_style] @request_use = opt[:request_use] @response_use = opt[:response_use] @faults = opt[:faults] check_style(@request_style) check_style(@response_style) check_use(@request_use) check_use(@response_use) if @response_style == :rpc request_qname = opt[:request_qname] or raise @rpc_method_factory = RPC::SOAPMethodRequest.new(request_qname, param_def, @soapaction) @rpc_response_qname = opt[:response_qname] else @doc_request_qnames = [] @doc_response_qnames = [] param_def.each do |param| param = MethodDef.to_param(param) case param.io_type when SOAPMethod::IN @doc_request_qnames << param.qname when SOAPMethod::OUT @doc_response_qnames << param.qname else raise ArgumentError.new( "illegal inout definition for document style: #{param.io_type}") end end end end
# File lib/soap/rpc/router.rb, line 450 def call(body, mapping_registry, literal_mapping_registry, opt) if @request_style == :rpc values = request_rpc(body, mapping_registry, literal_mapping_registry, opt) else values = request_document(body, mapping_registry, literal_mapping_registry, opt) end result = receiver.method(@name.intern).call(*values) return result if result.is_a?(SOAPFault) if @response_style == :rpc response_rpc(result, mapping_registry, literal_mapping_registry, opt) elsif @doc_response_qnames.empty? # nothing to do else response_doc(result, mapping_registry, literal_mapping_registry, opt) end end
Generated with the Darkfish Rdoc Generator 2.