Sha256: 2809217891e2ce620b7d64848053de495d7e1305a5aef6fac4664023276e63f2
Contents?: true
Size: 1.84 KB
Versions: 2
Compression:
Stored size: 1.84 KB
Contents
module ZK # the subscription object that is passed back from subscribing # to events. # @see ZK::Client::Base#register class EventHandlerSubscription # the event handler associated with this subscription # @return [EventHandler] attr_accessor :event_handler # the path this subscription is for # @return [String] attr_accessor :path # the block associated with the path # @return [Proc] attr_accessor :callback # an array of what kinds of events this handler is interested in receiving # # @return [Set] containing any combination of :create, :change, :delete, # or :children # # @private attr_accessor :interests ALL_EVENTS = [:created, :deleted, :changed, :child].freeze unless defined?(ALL_EVENTS) ALL_EVENT_SET = Set.new(ALL_EVENTS).freeze unless defined?(ALL_EVENT_SET) # @private def initialize(event_handler, path, callback, interests) @event_handler, @path, @callback = event_handler, path, callback @interests = prep_interests(interests) end # unsubscribe from the path or state you were watching # @see ZK::Client::Base#register def unsubscribe @event_handler.unregister(self) end alias :unregister :unsubscribe # @private def call(event) callback.call(event) end private def prep_interests(a) return ALL_EVENT_SET if a.nil? rval = case a when Array Set.new(a) when Symbol Set.new([a]) else raise ArgumentError, "Don't know how to handle interests: #{a.inspect}" end rval.tap do |rv| invalid = (rv - ALL_EVENT_SET) raise ArgumentError, "Invalid event name(s) #{invalid.to_a.inspect} given" unless invalid.empty? end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
zk-1.0.0 | lib/zk/event_handler_subscription.rb |
zk-1.0.0.rc.1 | lib/zk/event_handler_subscription.rb |