Sha256: a2e320ae208b4733b2ac48e62265dc8c1901e7fc5ac57c31b06a9ffacc8898f1

Contents?: true

Size: 949 Bytes

Versions: 31

Compression:

Stored size: 949 Bytes

Contents

#!/usr/bin/env ruby

require 'zk'

LOG = Logger.new($stderr).tap { |n| n.level = Logger::DEBUG }

ZK.logger = LOG
Zookeeper.logger = LOG

class CloseInEventThread
  include Zookeeper::Constants

  def initialize
    @zk = ZK.new
    @q = Queue.new
  end

  def run
    @zk.on_connecting do |event|
      if @ok_do_it
        logger.debug { "ok, calling close, in event thread? #{@zk.event_dispatch_thread?}" }
        @zk.close! 
        logger.debug { "close! returned, continuing" }
        @q.push(:OK)
      else
        logger.debug { "on_connecting, got event #{event}" }
      end
    end

    @ok_do_it = true
    logger.debug { "push bogus ZOO_CONNECTING_STATE event into queue" }
    @zk.__send__(:cnx).event_queue.push(:req_id => -1, :type => -1, :state => ZOO_CONNECTING_STATE, :path => '')

    rval = @q.pop

    logger.debug { "got #{rval.inspect}" }

    @zk.close!
  end

  def logger
    LOG
  end
end

CloseInEventThread.new.run

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
zk-1.10.0 spec/informal/close-in-event-thread.rb
zk-1.9.6 spec/informal/close-in-event-thread.rb
zk-1.9.5 spec/informal/close-in-event-thread.rb
zk-1.9.4 spec/informal/close-in-event-thread.rb
zk-1.9.3 spec/informal/close-in-event-thread.rb
zk-1.9.2 spec/informal/close-in-event-thread.rb
zk-1.9.1 spec/informal/close-in-event-thread.rb
zk-1.9.0 spec/informal/close-in-event-thread.rb
zk-1.8.0 spec/informal/close-in-event-thread.rb
zk-1.7.5 spec/informal/close-in-event-thread.rb
zk-1.7.4 spec/informal/close-in-event-thread.rb
zk-1.7.3 spec/informal/close-in-event-thread.rb
zk-1.7.2 spec/informal/close-in-event-thread.rb
zk-1.7.1 spec/informal/close-in-event-thread.rb
zk-1.7.0 spec/informal/close-in-event-thread.rb
zk-1.6.5 spec/informal/close-in-event-thread.rb
zk-1.6.4 spec/informal/close-in-event-thread.rb
zk-1.6.3 spec/informal/close-in-event-thread.rb
zk-1.6.2 spec/informal/close-in-event-thread.rb
zk-1.6.1 spec/informal/close-in-event-thread.rb