Packages
raxx
0.10.4
1.1.0
1.0.1
1.0.0
1.0.0-rc.3
1.0.0-rc.2
retired
1.0.0-rc.1
retired
1.0.0-rc.0
retired
0.18.1
0.18.0
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.1
0.16.0
retired
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.14
0.14.13
0.14.12
0.14.11
0.14.10
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.1
0.11.0
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.0
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.0
0.0.1
Interface for HTTP webservers, frameworks and clients.
Current section
Files
Jump to
Current section
Files
lib/raxx/chunked.ex
defmodule Raxx.Chunked do
@moduledoc """
Module for handling a response served in chunks.
A chunked response needs to upgrade the Raxx handler.
This handler needs to implement the additional `handle_info/2` callback.
The chunked handler may be the same module as the request handler.
The contents are itemised below:
| **handler** | The module that implements the required callbacks to send a response in 1 or more chunks |
| **state** | Any state that the handle_info callback might need. |
| **initial** | TODO The first chunk to be streamed to the client, by default an empty string. |
| **headers** | TODO Any additional headers to add to the response that is sent to the client. |
"""
# For SSE
# Headers to initial HTTP streaming are automatically set `%{"cache-control" => "no-cache", "connection" => "keep-alive"}`
defstruct [app: nil, headers: []]
def upgrade(app, opts) do
struct(%__MODULE__{app: app}, opts)
end
def to_packet(data) do
size = :erlang.iolist_size(data)
[:erlang.integer_to_list(size, 16), "\r\n", data, "\r\n"]
end
def end_chunk do
"0\r\n\r\n"
end
end