View Source Membrane.RTSP.Response (Membrane RTSP v0.5.3)

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 result() :: {:ok, t()} | {:error, atom()}
@type t() :: %Membrane.RTSP.Response{
  body: ExSDP.t() | binary(),
  headers: Membrane.RTSP.headers(),
  status: non_neg_integer(),
  version: term()
}

Functions

Link to this function

get_header(response, name)

View Source
@spec get_header(t(), binary()) :: {:error, :no_such_header} | {:ok, binary()}

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}
@spec parse(binary()) ::
  {:ok, t()} | {:error, :invalid_start_line | :malformed_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.

Link to this function

verify_content_length(response)

View Source
@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.