# `ExUtcp.Transports.TcpUdp.ConnectionBehaviour`
[🔗](https://github.com/universal-tool-calling-protocol/elixir-utcp/blob/main/lib/ex_utcp/transports/tcp_udp/connection_behaviour.ex#L1)

Behaviour for TCP/UDP connections to enable mocking in tests.

# `call_tool`

```elixir
@callback call_tool(
  conn :: pid(),
  tool_name :: String.t(),
  args :: map(),
  timeout :: integer()
) ::
  {:ok, any()} | {:error, term()}
```

# `call_tool_stream`

```elixir
@callback call_tool_stream(
  conn :: pid(),
  tool_name :: String.t(),
  args :: map(),
  timeout :: integer()
) :: {:ok, Enumerable.t()} | {:error, term()}
```

# `close`

```elixir
@callback close(conn :: pid()) :: :ok | {:error, term()}
```

# `get_last_used`

```elixir
@callback get_last_used(conn :: pid()) :: integer()
```

# `start_link`

```elixir
@callback start_link(provider :: map()) :: {:ok, pid()} | {:error, term()}
```

# `update_last_used`

```elixir
@callback update_last_used(conn :: pid()) :: :ok
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
