Module: Faye::Extensible
Instance Method Summary collapse
- #add_extension(extension) ⇒ Object
- #pipe_through_extensions(stage, message, &callback) ⇒ Object
- #remove_extension(extension) ⇒ Object
Instance Method Details
#add_extension(extension) ⇒ Object
4 5 6 7 8 |
# File 'lib/faye/protocol/extensible.rb', line 4 def add_extension(extension) @extensions ||= [] @extensions << extension extension.added if extension.respond_to?(:added) end |
#pipe_through_extensions(stage, message, &callback) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/faye/protocol/extensible.rb', line 22 def pipe_through_extensions(stage, , &callback) return callback.call() unless @extensions extensions = @extensions.dup pipe = lambda do || if ! callback.call() else extension = extensions.shift if (!extension) callback.call() else if extension.respond_to?(stage) extension.__send__(stage, , pipe) else pipe.call() end end end end pipe.call() end |
#remove_extension(extension) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/faye/protocol/extensible.rb', line 10 def remove_extension(extension) return unless @extensions @extensions.delete_if do |ext| if ext == extension extension.removed if extension.respond_to?(:removed) true else false end end end |