Sha256: 7c1a7f05834fec7c6af4f146a5f5f884b571220dc319a2cb4c0bd08a77b59b20
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
require "em-synchrony" require 'commute/common/eventmachine' module Commute module Common # Public: Adapter that uses em-synchrony (with em-http-request). # # Requires use of em-synchrony and thus Eventmachine. # class Synchrony < Eventmachine @name = :adapter # Internal: Make a request through em-synchrony. def call router, request, options = {} # Get the current fiber. body = nil request.on(:data) { |_body| body = _body } # Buffer the request (only streaming response). request.on(:end) do |body| response = nil # Create a native em-http request. em_request = to_request request.http, body # Create a Http response. http_response = to_response request, em_request.response_header # Create a Http::Status (determined from response code). status = Http::Status.new(http_response.code) # Respond. response = request.respond(http_response, status) response.write em_request.response unless \ em_request.response.strip.empty? # Request is finished, end the response. response.end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
commute-0.3.0.pre | lib/commute/common/synchrony.rb |