Module: Itsi::RackEnvPool
- Defined in:
- lib/itsi/rack_env_pool.rb
Constant Summary collapse
- RACK_ENV_TEMPLATE =
{ "SERVER_SOFTWARE" => "Itsi", "rack.errors" => $stderr, "rack.multithread" => true, "rack.multiprocess" => true, "rack.run_once" => false, "rack.hijack?" => true, "rack.multipart.buffer_size" => 16_384, "SCRIPT_NAME" => "", "REQUEST_METHOD" => "", "PATH_INFO" => "", "REQUEST_PATH" => "", "QUERY_STRING" => "", "REMOTE_ADDR" => "", "SERVER_PORT" => "", "SERVER_NAME" => "", "SERVER_PROTOCOL" => "", "HTTP_HOST" => "", "HTTP_VERSION" => "", "itsi.request" => "", "itsi.response" => "", "rack.version" => nil, "rack.url_scheme" => "", "rack.input" => "", "rack.hijack" => "" }.freeze
- POOL =
[]
Class Method Summary collapse
Class Method Details
.checkin(env) ⇒ Object
44 45 46 |
# File 'lib/itsi/rack_env_pool.rb', line 44 def self.checkin(env) POOL << env end |
.checkout ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/itsi/rack_env_pool.rb', line 35 def self.checkout recycled = POOL.pop return RACK_ENV_TEMPLATE.dup unless recycled # Reset in C rather than iterating key-by-key in Ruby for every request. recycled.replace(RACK_ENV_TEMPLATE) recycled end |