Method: EF::Object#stop_listening

Defined in:
lib/event-framework.rb

#stop_listening(observable = nil, event = nil, block = nil) ⇒ Object

unregistrate all matching handlers



197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'lib/event-framework.rb', line 197

def stop_listening(observable=nil, event=nil, block=nil)
  @mutex.synchronize do
    observables = []

    @observables.each do |o, e, b|
      if (!observable || o == observable) && (!event || e == event) && (!block || b == block)
        if self == o
          @observers.reject! do |o, e, b|
            o == self
          end
        else
          o.unregistrate(self, e, b)
        end
      else
        observables << [o, e, b]
      end
    end

    @observables = observables
  end
end