Sha256: 41988cbb5485e90f7bf11345cdaf351250f28de17c0572621afc3956545c9d2e

Contents?: true

Size: 1.38 KB

Versions: 5

Compression:

Stored size: 1.38 KB

Contents

module Mack
  module Distributed
    module Utils
      module Rinda
        
        def self.register_or_renew(options = {})
          options = handle_options(options)
          ::DRb.start_service
          begin
            ring_server.take([options[:space], options[:klass_def], nil, nil], options[:timeout])
          rescue Exception => e
            # Mack.logger.error(e)
          end
          register(options)
        end
        
        def self.register(options = {})
          options = handle_options(options)
          ::DRb.start_service
          ring_server.write([options[:space], 
                             options[:klass_def], 
                             options[:object], 
                             options[:description]], 
                            ::Rinda::SimpleRenewer.new)
        end
        
        def self.ring_server
          rs = ::Rinda::RingFinger.primary
          rs
        end
        
        def self.read(options = {})
          options = handle_options(options)
          ring_server.read([options[:space], options[:klass_def], nil, options[:description]], options[:timeout])[2]
        end
        
        private
        def self.handle_options(options = {})
          {:space => :name, :klass_def => nil, :object => nil, :description => nil, :timeout => app_config.mack.drb_timeout}.merge(options)
        end
        
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mack-0.6.0 lib/distributed/utils/rinda.rb
mack-0.6.0.1 lib/distributed/utils/rinda.rb
mack-0.6.1.1 lib/mack/distributed/utils/rinda.rb
mack-0.6.1.2 lib/mack/distributed/utils/rinda.rb
mack-0.6.1 lib/mack/distributed/utils/rinda.rb