class GV::Bedrock::Service
Base class of distributed services
Public Class Methods
find(name)
click to toggle source
Finds previously provided service, blocks if there isn’t any
# File lib/gv/bedrock/service.rb, line 59 def find name space.read([:name,name,nil,nil])[3] rescue nil end
provide()
click to toggle source
advertises service into primary tuple space
# File lib/gv/bedrock/service.rb, line 21 def provide DRb.start_service provider.provide info "Service #{self.name} started on #{DRb.uri}" DRb.thread.join end
provider()
click to toggle source
Default Service
Provider
# File lib/gv/bedrock/service.rb, line 31 def provider @@provider ||= Rinda::RingProvider.new(self.name.underscore,self,self.new,nil) end
random_service()
click to toggle source
Retrives random service instance
# File lib/gv/bedrock/service.rb, line 45 def random_service services.sample end
service()
click to toggle source
Retrives service instance
# File lib/gv/bedrock/service.rb, line 38 def service self.find self.name.underscore end
services()
click to toggle source
Retrives all service instances
# File lib/gv/bedrock/service.rb, line 52 def services space.read_all([:name,self.name.underscore,nil,nil]).map{|s| s[3]} rescue [] end
space()
click to toggle source
Primary remote tuple space
# File lib/gv/bedrock/service.rb, line 66 def space @@space ||= Rinda::TupleSpaceProxy.new(Rinda::RingFinger.primary) end
Public Instance Methods
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/gv/bedrock/service.rb, line 72 def method_missing name, *args, &block if @api.respond_to? name @api.public_send name, *args, &block else super name, *args, &block end end