View Source Membrane.RTSP.Response (Membrane RTSP v0.5.2)
This module represents a RTSP response.
Summary
Functions
Retrieves the first header matching given name from a response.
Parses RTSP response.
Verifies if raw response binary has got proper length by comparing Content-Length
header value to actual size of body in response.
Returns tuple with verdict, expected size and actual size of body
Types
@type t() :: %Membrane.RTSP.Response{ body: ExSDP.t() | binary(), headers: Membrane.RTSP.headers(), status: non_neg_integer(), version: term() }
Functions
Retrieves the first header matching given name from a response.
iex> response = %Response{
...> status: 200,
...> version: "1.0",
...> headers: [{"header_name", "header_value"}]
...> }
iex> Response.get_header(response, "header_name")
{:ok, "header_value"}
iex> Response.get_header(response, "non_existent_header")
{:error, :no_such_header}
Parses RTSP response.
If the body is present it will be parsed according to Content-Type
header.
Currently only the application/sdp
is supported.
@spec verify_content_length(binary()) :: {:ok, non_neg_integer(), non_neg_integer()} | {:error, non_neg_integer(), non_neg_integer()}
Verifies if raw response binary has got proper length by comparing Content-Length
header value to actual size of body in response.
Returns tuple with verdict, expected size and actual size of body
Example responses:
{:ok, 512, 512}
- Content-Length
header value and body size matched. A response is complete.
{:ok, 0, 0}
- Content-Length
header missing or set to 0 and no body. A response is complete.
{:error, 512, 123}
- Missing part of body in response.
{:error, 512, 0}
- Missing whole body in response.
{:error, 0, 0}
- Missing part of header or missing delimiter at the and of header part.