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.