Method: DigitalFabric::AgentProxy#http_custom_upgrade

Defined in:
lib/tipi/digital_fabric/agent_proxy.rb

#http_custom_upgrade(id, req, headers) ⇒ Object



206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
# File 'lib/tipi/digital_fabric/agent_proxy.rb', line 206

def http_custom_upgrade(id, req, headers)
  # send upgrade response
  upgrade_headers = headers ?
   headers.merge(HTTP_RESPONSE_UPGRADE_HEADERS) :
    HTTP_RESPONSE_UPGRADE_HEADERS
  req.send_headers(upgrade_headers, true)

  conn = req.adapter.conn
  reader = spin("#{Fiber.current.tag}.#{id}") do
    conn.recv_loop do |data|
      send_df_message(Protocol.conn_data(id, data))
    end
  end
  while (message = receive)
    return if http_custom_upgrade_message(conn, message)
  end
ensure
  reader.stop
end