Sha256: aeeac42149d7ed67e5306931de20c57586b291c0f5a58b0abcf7cba209fe9d93

Contents?: true

Size: 947 Bytes

Versions: 5

Compression:

Stored size: 947 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 ZookeeperConstants

  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

5 entries across 5 versions & 1 rubygems

Version Path
zk-1.1.1 spec/informal/close-in-event-thread.rb
zk-1.1.0 spec/informal/close-in-event-thread.rb
zk-1.0.0 spec/informal/close-in-event-thread.rb
zk-1.0.0.rc.1 spec/informal/close-in-event-thread.rb
zk-0.9.1 spec/informal/close-in-event-thread.rb