module Faye::Extensible
Public Instance Methods
add_extension(extension)
click to toggle source
# File lib/faye/protocol/extensible.rb, line 5 def add_extension(extension) @extensions ||= [] @extensions << extension extension.added(self) if extension.respond_to?(:added) end
pipe_through_extensions(stage, message, env, &callback)
click to toggle source
# File lib/faye/protocol/extensible.rb, line 20 def pipe_through_extensions(stage, message, env, &callback) debug('Passing through ? extensions: ?', stage, message) return callback.call(message) unless @extensions extensions = @extensions.dup pipe = lambda do |message| next callback.call(message) unless message extension = extensions.shift next callback.call(message) unless extension next pipe.call(message) unless extension.respond_to?(stage) arity = extension.method(stage).arity if arity >= 3 extension.__send__(stage, message, env, pipe) else extension.__send__(stage, message, pipe) end end pipe.call(message) end
remove_extension(extension)
click to toggle source
# File lib/faye/protocol/extensible.rb, line 11 def remove_extension(extension) return unless @extensions @extensions.delete_if do |ext| next false unless ext == extension extension.removed(self) if extension.respond_to?(:removed) true end end