Module: Mack::Distributed::Utils::Rinda

Defined in:
lib/mack-distributed/utils/rinda.rb

Class Method Summary collapse

Class Method Details

.read(options = {}) ⇒ Object



35
36
37
38
# File 'lib/mack-distributed/utils/rinda.rb', line 35

def self.read(options = {})
  options = handle_options(options)
  ring_server.read([options[:space], options[:klass_def], nil, options[:description]], options[:timeout])[2]
end

.register(options = {}) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/mack-distributed/utils/rinda.rb', line 16

def self.register(options = {})
  options = handle_options(options)
  ring_server.write([options[:space], 
                     options[:klass_def], 
                     options[:object], 
                     options[:description]], 
                    ::Rinda::SimpleRenewer.new)
end

.register_or_renew(options = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/mack-distributed/utils/rinda.rb', line 6

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

.ring_serverObject



25
26
27
28
29
30
31
32
33
# File 'lib/mack-distributed/utils/rinda.rb', line 25

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