rainbows.git  about / heads / tags
Unicorn for sleepy apps and slow clients
blob 1ee705c67ad28e5a10bd1c0e124a10ea080d01c2 1416 bytes (raw)
$ git show v0.97.0:lib/rainbows/rev.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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
# -*- encoding: binary -*-
require 'rainbows/rev/core'
require 'rainbows/rev/client'

module Rainbows

  # Implements a basic single-threaded event model with
  # {Rev}[http://rev.rubyforge.org/].  It is capable of handling
  # thousands of simultaneous client connections, but with only a
  # single-threaded app dispatch.  It is suited for slow clients and
  # fast applications (applications that do not have slow network
  # dependencies) or applications that use DevFdResponse for deferrable
  # response bodies.  It does not require your Rack application to be
  # thread-safe, reentrancy is only required for the DevFdResponse body
  # generator.
  #
  # Compatibility: Whatever \Rev itself supports, currently Ruby
  # 1.8/1.9.
  #
  # This model does not implement as streaming "rack.input" which
  # allows the Rack application to process data as it arrives.  This
  # means "rack.input" will be fully buffered in memory or to a
  # temporary file before the application is entered.

  module Rev

    # :stopdoc:
    # keep-alive timeout scoreboard
    KATO = {}

    # all connected clients
    CONN = {}

    if {}.respond_to?(:compare_by_identity)
      CONN.compare_by_identity
      KATO.compare_by_identity
    end

    autoload :DeferredResponse,'rainbows/rev/deferred_response'
    autoload :DeferredChunkResponse,'rainbows/rev/deferred_chunk_response'
    include Core
    # :startdoc:
  end
end

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