Socket.Stream.Protocol protocol (socket2 v2.1.2)

Copy Markdown

Summary

Types

t()

All the types that implement this protocol.

Functions

Close the socket.

Send a file through the socket, using non-copying operations where available.

Receive data from the socket compatible with the packet type.

Receive data from the socket with the given length or options.

Receive data from the socket with the given length and options.

Send data through the socket.

Shutdown the socket in the given mode, either :both, :read, or :write.

Types

t()

@type t() :: term()

All the types that implement this protocol.

Functions

close(self)

@spec close(t()) :: :ok | {:error, term()}

Close the socket.

file(self, path, options \\ [])

@spec file(t(), String.t(), Keyword.t()) :: :ok | {:error, term()}

Send a file through the socket, using non-copying operations where available.

recv(self)

@spec recv(t()) :: {:ok, term()} | {:error, term()}

Receive data from the socket compatible with the packet type.

recv(self, length_or_options)

@spec recv(t(), non_neg_integer() | Keyword.t()) :: {:ok, term()} | {:error, term()}

Receive data from the socket with the given length or options.

recv(self, length, options)

@spec recv(t(), non_neg_integer(), Keyword.t()) :: {:ok, term()} | {:error, term()}

Receive data from the socket with the given length and options.

send(self, data)

@spec send(t(), iodata()) :: :ok | {:error, term()}

Send data through the socket.

shutdown(self, how \\ :both)

@spec shutdown(t(), :both | :read | :write) :: :ok | {:error, term()}

Shutdown the socket in the given mode, either :both, :read, or :write.