Sha256: 0a03463e4f4abf5efb39fa7de0e92d4b9d60da97568f096c095eaa6714a3cf5a

Contents?: true

Size: 686 Bytes

Versions: 4

Compression:

Stored size: 686 Bytes

Contents

require 'zk'
require 'timeout'

module Cellect
  class NodeSet
    include Celluloid
    
    attr_accessor :zk, :state
    
    def initialize
      self.state = :initializing
      after(0.001){ async.initialize_zk } # don't block waiting for ZK to connect
    end
    
    def initialize_zk
      # don't let ZK hang the thread, just retry connection on restart
      Timeout::timeout(5) do
        self.zk = ZK.new zk_url, chroot: '/cellect'
      end
      setup
      self.state = :ready
    end
    
    def ready?
      state == :ready
    end
    
    protected
    
    def zk_url
      ENV.fetch 'ZK_URL', 'localhost:2181'
    end
    
    def setup
      
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
cellect-client-0.0.2 lib/cellect/node_set.rb
cellect-server-0.0.2 lib/cellect/node_set.rb
cellect-client-0.0.1 lib/cellect/node_set.rb
cellect-server-0.0.1 lib/cellect/node_set.rb