class CitrusRpc::RpcServer::Server
@example
Specifiy remote service interface paths
dirname = File.expand_path File.dirname(__FILE__) records = [ { :namespace => 'user', :path => dirname + '/remote/test' } ]
Create a new rpc server and start it
Server.new(:records => records, :port => 3333).start
Public Class Methods
new(args={})
click to toggle source
Create a new rpc server
@param [Hash] args Options
@option args [Integer] port @option args [Array] records
# File lib/citrus-rpc/rpc-server/server.rb, line 37 def initialize args={} raise ArgumentError, 'server port empty' unless args[:port] raise ArgumentError, 'server port must be bigger than zero' unless args[:port] > 0 raise ArgumentError, 'records empty' unless args[:records] raise ArgumentError, 'records must be an array' unless args[:records].respond_to? :to_a @services = {} create_namespace args[:records] load_remote_services args[:records], args[:context] args[:services] = @services @gateway = Gateway.new args @gateway.on(:error) { |*args| emit :error, *args } @gateway.on(:closed) { |*args| emit :closed, *args } end
Public Instance Methods
start()
click to toggle source
Start the rpc server
# File lib/citrus-rpc/rpc-server/server.rb, line 56 def start @gateway.start end
stop()
click to toggle source
Stop the rpc server
# File lib/citrus-rpc/rpc-server/server.rb, line 61 def stop @gateway.stop end
Private Instance Methods
create_namespace(records)
click to toggle source
Create remote services namespace
@param [Array] records
@private
# File lib/citrus-rpc/rpc-server/server.rb, line 72 def create_namespace records records.each { |record| @services[record[:namespace]] ||= {} } end
load_remote_services(records, context)
click to toggle source
Load remote services
@param [Array] records @param [Object] context
@private
# File lib/citrus-rpc/rpc-server/server.rb, line 82 def load_remote_services records, context records.each { |record| remotes = load_app_remote record[:path] remotes.each { |service, remote| @services[record[:namespace]][service] = remote.new context } } end