Sha256: fa429db10f58d21c762e112d32c51f0d218515044b2e77c21e8e016e6edef4fe

Contents?: true

Size: 1.53 KB

Versions: 9

Compression:

Stored size: 1.53 KB

Contents

module Mack
  module Distributed
    module Utils # :nodoc:
      module Rinda
        
        def self.register_or_renew(options = {})
          options = handle_options(options)
          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)
          ring_server.write([options[:space], 
                             options[:klass_def], 
                             options[:object], 
                             options[:description]], 
                            ::Rinda::SimpleRenewer.new)
        end
        
        def self.ring_server
          if configatron.mack.distributed.retrieve(:acl, nil)
            acl = ACL.new(configatron.mack.distributed.acl)
            DRb.install_acl(acl)
          end
          ::DRb.start_service
          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 => nil, :klass_def => nil, :object => nil, :description => nil, :timeout => configatron.mack.distributed.timeout}.merge(options)
        end
        
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
mack-distributed-0.8.0.2 lib/mack-distributed/utils/rinda.rb
mack-distributed-0.8.0.101 lib/mack-distributed/utils/rinda.rb
mack-distributed-0.8.1 lib/mack-distributed/utils/rinda.rb
mack-distributed-0.8.2 lib/mack-distributed/utils/rinda.rb
mack-distributed-0.8.0 lib/mack-distributed/utils/rinda.rb
mack-distributed-0.8.0.1 lib/mack-distributed/utils/rinda.rb
mack-distributed-0.8.0.3 lib/mack-distributed/utils/rinda.rb
mack-distributed-0.8.3 lib/mack-distributed/utils/rinda.rb
mack-distributed-0.8.3.1 lib/mack-distributed/utils/rinda.rb