class Cramp::Body
Public Class Methods
new()
click to toggle source
# File lib/cramp/body.rb, line 7 def initialize @queue = [] # Make sure to flush out the queue before closing the connection callback { flush } end
Public Instance Methods
call(body)
click to toggle source
# File lib/cramp/body.rb, line 14 def call(body) @queue << body schedule_dequeue end
closed?()
click to toggle source
# File lib/cramp/body.rb, line 24 def closed? @deferred_status != :unknown end
each(&blk)
click to toggle source
# File lib/cramp/body.rb, line 19 def each &blk @body_callback = blk schedule_dequeue end
flush()
click to toggle source
# File lib/cramp/body.rb, line 28 def flush return unless @body_callback until @queue.empty? Array(@queue.shift).each {|chunk| @body_callback.call(chunk) } end end
schedule_dequeue()
click to toggle source
# File lib/cramp/body.rb, line 36 def schedule_dequeue return unless @body_callback EventMachine.next_tick do next unless body = @queue.shift Array(body).each {|chunk| @body_callback.call(chunk) } schedule_dequeue unless @queue.empty? end end