Sha256: d76181412b64c20d6f8d47878a555284b6f9b91e37dcce3f7868e4e9f27e5776

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_DEFAULT_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.5.5.2 lib/distributed/utils/rinda.rb
mack-0.5.5.1 lib/distributed/utils/rinda.rb
mack-0.5.5.4 lib/distributed/utils/rinda.rb
mack-0.5.5.3 lib/distributed/utils/rinda.rb
mack-0.5.5 lib/distributed/utils/rinda.rb