rainbows.git  about / heads / tags
Unicorn for sleepy apps and slow clients
blob 74206310c5041f2cc4cd4fd7d52813c59f2035b3 476 bytes (raw)
$ git show v0.97.0:lib/rainbows/rev/deferred_response.rb	# shows this blob on the CLI

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
 
# -*- encoding: binary -*-
# :enddoc:
#
# this is class is specific to Rev for writing large static files
# or proxying IO-derived objects
class Rainbows::Rev::DeferredResponse < ::Rev::IO
  def initialize(io, client, body)
    super(io)
    @client, @body = client, body
  end

  def on_read(data)
    @client.write(data)
  end

  def on_close
    @client.next! if @client.attached? # attached? is false if write fails
    @body.respond_to?(:close) and @body.close
  end
end

git clone https://yhbt.net/rainbows.git