lib/faye/adapters/goliath.rb



class Goliath::Connection
  attr_accessor :socket_stream
  alias :goliath_receive_data :receive_data
  
  def receive_data(data)
    if @serving == :websocket
      socket_stream.receive(data) if socket_stream
    else
      goliath_receive_data(data)
      socket_stream.receive(@parser.upgrade_data) if socket_stream
      @serving = :websocket if @api.websocket?
    end
  end
  
  def unbind
    super
  ensure
    socket_stream.fail if socket_stream
  end
end

class Goliath::API
  include Faye::WebSocket::Adapter
end

class Goliath::Request
  alias :goliath_process :process
  
  def process
    env['em.connection'] = conn
    goliath_process
  end
end

class Goliath::Response
  alias :goliath_head :head
  alias :goliath_headers_output :headers_output
  
  def head
    (status == 101) ? '' : goliath_head
  end
  
  def headers_output
    (status == 101) ? '' : goliath_headers_output
  end
end