Kayrock.Socket (kayrock v1.0.1)

Copy Markdown View Source

This module handle all socket related operations.

NOTE this is a copy of KafkaEx.Socket: https://github.com/kafkaex/kafka_ex/blob/master/lib/kafka_ex/socket.ex

It is duplicated here to avoid creating a circular dependency.

Summary

Functions

Closes the socket.

Returns the information about the socket.

Returns true if the socket is open

Receives data from the socket.

Sends data over the socket.

Set options to the socket.

Types

t()

@type t() :: %Kayrock.Socket{
  socket: :gen_tcp.socket() | :ssl.sslsocket(),
  ssl: boolean()
}

Functions

close(socket)

@spec close(t()) :: :ok

Closes the socket.

For more information, see :ssl.close/1 for ssl or :gen_tcp.send/1 for non ssl.

create(host, port, socket_options \\ [], is_ssl \\ false)

Creates a socket.

For more information about the available options, see :ssl.connect/3 for ssl or :gen_tcp.connect/3 for non ssl.

info(socket)

@spec info(t()) :: list() | nil

Returns the information about the socket.

For more information, see Port.info

open?(socket)

@spec open?(t()) :: boolean()

Returns true if the socket is open

recv(socket, length)

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

Receives data from the socket.

For more information, see :ssl.recv/2 for ssl or :gen_tcp.recv/2 for non ssl.

recv(socket, length, timeout)

@spec recv(t(), non_neg_integer(), timeout()) ::
  {:ok, String.t() | binary() | term()} | {:error, any()}

send(socket, data)

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

Sends data over the socket.

It handles both, SSL and non SSL sockets.

For more information, see :ssl.send/2 for ssl or :gen_tcp.send/2 for non ssl.

setopts(socket, options)

@spec setopts(t(), list()) :: :ok | {:error, any()}

Set options to the socket.

For more information, see :ssl.setopts/2 for ssl or :inet.setopts/2 for non ssl.