Sha256: db8c3f32118ab8c3f1e62d61b71ade5865978a6529c74a643c5aacc0b033a1c3

Contents?: true

Size: 771 Bytes

Versions: 5

Compression:

Stored size: 771 Bytes

Contents

# docs/examples/events_02.rb

require 'thread'
require 'zk'

class Events
  def initialize
    @zk = ZK.new
    @queue = Queue.new
    @path = '/zk-example-events01'
  end

  def do_something_with(data)
    puts "I was told to say #{data.inspect}"
    @queue.push(:got_event)
  end

  def run
    @zk.register(@path) do |event|
      if event.node_changed? or event.node_created?
        data = @zk.get(@path, watch: true).first    # fetch the latest data and re-set watch
        do_something_with(data)
      end
    end

    @zk.delete(@path) rescue ZK::Exceptions::NoNode
    @zk.stat(@path, watch: true)
    @zk.create(@path, 'Hello, events!')

    @queue.pop

    @zk.set(@path, "ooh, an update!")

    @queue.pop
  ensure
    @zk.close!
  end
end

Events.new.run

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
zk-1.2.0 docs/examples/events_02.rb
zk-1.1.1 docs/examples/events_02.rb
zk-1.1.0 docs/examples/events_02.rb
zk-1.0.0 docs/examples/events_02.rb
zk-1.0.0.rc.1 docs/examples/events_02.rb