View Source Membrane.TCP.Socket (Membrane TCP plugin v0.1.0)

TCP Socket behavior

Summary

Types

@type socket_pair_config() :: %{
  connection_side:
    :server | :client | {:client, :inet.ip_address(), :inet.port_number()},
  local_address: :inet.socket_address(),
  local_port_no: :inet.port_number(),
  local_socket: t() | nil
}
@type t() :: %Membrane.TCP.Socket{
  connection_side: :server | :client | nil,
  ip_address: :inet.socket_address(),
  port_no: :inet.port_number(),
  sock_opts: [:gen_tcp.option()],
  socket_handle: :gen_tcp.socket() | nil,
  state: :listening | :connected | nil
}

Functions

@spec accept(listening_socket :: t()) ::
  {:ok, connected_socket :: t()} | {:error, :inet.posix()}
@spec close(socket :: t()) :: t()
Link to this function

connect(local_socket, socket)

View Source
@spec connect(local :: t(), target :: t()) :: {:ok, t()} | {:error, :inet.posix()}
Link to this function

create_socket_pair(sockets_config, local_socket_options \\ [])

View Source
@spec create_socket_pair(
  socket_pair_config(),
  keyword()
) :: {local_socket :: t(), server_socket :: t() | nil}
@spec listen(socket :: t()) :: {:ok, listen_socket :: t()} | {:error, :inet.posix()}
@spec recv(socket :: t()) ::
  {:ok, Membrane.Payload.t()} | {:error, :closed | :timeout | :inet.posix()}
@spec send(local_socket :: t(), payload :: Membrane.Payload.t()) ::
  :ok | {:error, :closed | :inet.posix()}