Class: XMLRPC::Server
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
          WEBrickServlet,
          BasicServer
         | |
| Instance Chain: | |
| Inherits: | XMLRPC::WEBrickServlet 
 | 
| Defined in: | lib/xmlrpc/server.rb | 
Overview
Implements a standalone XML-RPC server. The method #serve is left if a SIGHUP is sent to the program.
require "xmlrpc/server"
s = XMLRPC::Server.new(8080)
s.add_handler("michael.add") do |a,b|
  a + b
end
s.add_handler("michael.div") do |a,b|
  if b == 0
    raise XMLRPC::FaultException.new(1, "division by zero")
  else
    a / b
  end
end
s.set_default_handler do |name, *args|
  raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
                                   " or wrong number of parameters!")
end
s.serveConstant Summary
BasicServer - Inherited
ERR_MC_EXPECTED_STRUCT, ERR_MC_MISSING_METHNAME, ERR_MC_MISSING_PARAMS, ERR_MC_RECURSIVE_CALL, ERR_MC_WRONG_PARAM, ERR_MC_WRONG_PARAM_PARAMS, ERR_METHOD_MISSING, ERR_UNCAUGHT_EXCEPTION
Class Method Summary
- 
    
      .new(port = 8080, host = "127.0.0.1", maxConnections = 4, stdlog = $stdout, audit = true, debug = true, *a)  ⇒ Server 
    
    constructor
    Creates a new Serverinstance, which is a XML-RPC server listening on the givenportand accepts requests for the givenhost, which islocalhostby default.
WEBrickServlet - Inherited
BasicServer - Inherited
| .new | Creates a new BasicServer instance, which should not be done, because BasicServer is an abstract class. | 
Instance Attribute Summary
WEBrickServlet - Inherited
| #require_path_info? | Deprecated from WEBrick/1.2.2, but does not break anything. | 
Instance Method Summary
- 
    
      #serve  
    
    Call this after you have added all you handlers to the server. 
- 
    
      #shutdown  
    
    Stops and shuts the server down. 
WEBrickServlet - Inherited
| #get_instance, | |
| #get_valid_ip | Return the valid IP addresses that are allowed to connect to the server. | 
| #service, | |
| #set_valid_ip | Specifies the valid IP addresses that are allowed to connect to the server. | 
BasicServer - Inherited
| #add_handler | Adds  | 
| #add_introspection | Adds the introspection handlers  | 
| #add_multicall | Adds the multi-call handler  | 
| #get_default_handler | Returns the default-handler, which is called when no handler for a method-name is found. | 
| #get_service_hook | Returns the service-hook, which is called on each service request (RPC) unless it's  | 
| #process, | |
| #set_default_handler | Sets  | 
| #set_service_hook | A service-hook is called for each service request (RPC). | 
| #call_method, | |
| #check_arity | Returns  | 
| #dispatch, #handle, #multicall_fault | |
ParseContentType - Included
ParserWriterChooseMixin - Included
| #set_parser | Sets the XMLParser to use for parsing XML documents. | 
| #set_writer | Sets the XMLWriter to use for generating XML output. | 
| #create, #parser | |
Constructor Details
    .new(port = 8080, host = "127.0.0.1", maxConnections = 4, stdlog = $stdout, audit = true, debug = true, *a)  ⇒ Server 
  
Creates a new Server instance, which is a XML-RPC server listening on the given port and accepts requests for the given host, which is localhost by default.
The server is not started, to start it you have to call #serve.
The optional audit and debug parameters are obsolete!
All additionally provided parameters in *a are by-passed to BasicServer.new.
# File 'lib/xmlrpc/server.rb', line 574
def initialize(port=8080, host="127.0.0.1", maxConnections=4, stdlog=$stdout, audit=true, debug=true, *a) super(*a) require 'webrick' @server = WEBrick::HTTPServer.new(:Port => port, :BindAddress => host, :MaxClients => maxConnections, :Logger => WEBrick::Log.new(stdlog)) @server.mount("/", self) end
Instance Method Details
#serve
Call this after you have added all you handlers to the server. This method starts the server to listen for XML-RPC requests and answer them.
# File 'lib/xmlrpc/server.rb', line 584
def serve signals = %w[INT TERM HUP] & Signal.list.keys signals.each { |signal| trap(signal) { @server.shutdown } } @server.start end
#shutdown
Stops and shuts the server down.
# File 'lib/xmlrpc/server.rb', line 592
def shutdown @server.shutdown end