Behaviour for the connection underneath Snodo.Client.
A transport moves one complete JSON-RPC request to a server and returns the
complete JSON-RPC response. Snodo.Client builds the request and decodes the
response, so a transport never interprets result or error.
request/3 receives these options:
:timeout- milliseconds to wait for the response.:dialect- the protocol dialect module that built the request. HTTP uses itstransport_policy/1to derive headers.
Failures of the connection itself are %Snodo.Error{kind: :transport}. Use
connection_error/2 (-32000) and timeout_error/1 (-32001), the codes the
official TypeScript SDK uses for the same client-side conditions.
Summary
Functions
The connection is closed, unreachable, or produced an unusable response.
No response arrived within timeout milliseconds.
Types
@type state() :: term()
Callbacks
@callback close(state()) :: :ok
@callback connect(init_arg :: term(), opts :: keyword()) :: {:ok, state()} | {:error, Snodo.Error.t()}
@callback request(state(), message :: map(), opts :: keyword()) :: {:ok, map()} | {:error, Snodo.Error.t()}
Functions
@spec connection_error(String.t(), term()) :: Snodo.Error.t()
The connection is closed, unreachable, or produced an unusable response.
@spec timeout_error(timeout()) :: Snodo.Error.t()
No response arrived within timeout milliseconds.