class Thin::DeferrableBody

Based on version from James Tucker <raggi@rubyforge.org>

Public Class Methods

new() click to toggle source
# File lib/message_bus/rack/thin_ext.rb, line 8
def initialize
  @queue = []
end

Public Instance Methods

call(body) click to toggle source
# File lib/message_bus/rack/thin_ext.rb, line 12
def call(body)
  @queue << body
  schedule_dequeue
end
each(&blk) click to toggle source
# File lib/message_bus/rack/thin_ext.rb, line 17
def each(&blk)
  @body_callback = blk
  schedule_dequeue
end

Private Instance Methods

schedule_dequeue() click to toggle source
# File lib/message_bus/rack/thin_ext.rb, line 23
def schedule_dequeue
  return unless @body_callback
  ::EM.next_tick do
    next unless body = @queue.shift
    body.each do |chunk|
      @body_callback.call(chunk)
    end
    schedule_dequeue unless @queue.empty?
  end
end