Support for the Ruby 2.1 series ended on March 31 2017. See here for details.

In Files

  • xmlrpc/server.rb

XMLRPC::Server

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.serve

Public Class Methods

new(port=8080, host="127.0.0.1", maxConnections=4, stdlog=$stdout, audit=true, debug=true, *a) click to toggle source

Creates a new XMLRPC::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 XMLRPC::BasicServer.new.

 
               # File 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
            

Public Instance Methods

serve() click to toggle source

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 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() click to toggle source

Stops and shuts the server down.

 
               # File xmlrpc/server.rb, line 592
def shutdown
  @server.shutdown
end