Sha256: a22dcadb7612c96aba5c84699a4ed2c751770f7d65c084127768ef30bc8294b1

Contents?: true

Size: 1.84 KB

Versions: 8

Compression:

Stored size: 1.84 KB

Contents

require 'xmlrpc/server'
require 'socket'
require 'logger'

class XmlblasterCallbackServer

  attr_reader :thread
  attr_reader :callback_url

  def initialize( ip, port, public_ip, public_port, callbackInstance, audit = nil )
    if audit == nil then
      @audit = Logger.new($stdout)
    else
      @audit = audit
    end
    @thread = nil
    @callback_server = nil
    @callback_url = "http://#{public_ip}:#{public_port}/RPC2"
    @port = port
    @ip = ip
    @callback_instance = callbackInstance
  end

  def start
    
    begin
      @callback_server = XMLRPC::Server.new( @port, @ip, 4, @audit, false )
      @audit.debug( "CallBackServer started")
    rescue => e
      msg = e.message + ": " + e.backtrace.join("\n")
      @audit.error( "CallBackServer: Could not create XMLRPC Server: " + msg)
      return false
    end

    @thread = Thread.new( @port, @callback_instance ) { | port, callback_instance | 
      Thread.current['name'] = "MOM-CallbackServer"
      STDOUT.sync = true


      if @callback_server then      

        @audit.debug( "MOM-CallBackServer: " + @callback_url )
        
        @callback_server.add_handler("ping") do |name, *args|
          @callback_instance.ping( *args )
        end

        @callback_server.add_handler("update") do |name, *args|
          @callback_instance.update( *args )
        end

        @callback_server.set_default_handler do |name, *args|
          raise XMLRPC::FaultException.new(-99, "MOM-CallBackServer: Method #{name} missing or wrong number of parameters!")
        end

        # listening
        @audit.debug( "MOM-CallBackServer: XMLRPC Server serving." )
        @callback_server.serve()

      else
        return false
      end
      
    }
    
    return true
  end


  def shutdown
    if @callback_server then
      @callback_server.shutdown()
      @thread.kill
    end
    return true
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
adaptation-1.0.1 lib/adaptation/xmlblaster/xmlblaster_callback_server.rb
adaptation-0.1.5 lib/adaptation/xmlblaster/xmlblaster_callback_server.rb
adaptation-0.1.6 lib/adaptation/xmlblaster/xmlblaster_callback_server.rb
adaptation-0.1.7 lib/adaptation/xmlblaster/xmlblaster_callback_server.rb
adaptation-0.1.4 lib/adaptation/xmlblaster/xmlblaster_callback_server.rb
adaptation-0.1.8 lib/adaptation/xmlblaster/xmlblaster_callback_server.rb
adaptation-0.1.10 lib/adaptation/xmlblaster/xmlblaster_callback_server.rb
adaptation-0.1.9 lib/adaptation/xmlblaster/xmlblaster_callback_server.rb