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

Production-ready gRPC transport implementation for UTCP.

This transport handles gRPC-based tool providers with:
- Real gRPC connections using Protocol Buffers
- Connection pooling and lifecycle management
- Authentication support (API Key, Basic, OAuth2)
- Error recovery with retry logic
- gNMI integration for network management
- High-performance streaming capabilities

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `gnmi_get`

```elixir
@spec gnmi_get(pid(), [String.t()], keyword()) :: {:ok, map()} | {:error, term()}
```

Performs a gNMI Get operation.

# `gnmi_set`

```elixir
@spec gnmi_set(pid(), [map()], keyword()) :: {:ok, map()} | {:error, term()}
```

Performs a gNMI Set operation.

# `gnmi_subscribe`

```elixir
@spec gnmi_subscribe(pid(), [String.t()], keyword()) ::
  {:ok, [map()]} | {:error, term()}
```

Performs a gNMI Subscribe operation.

# `new`

```elixir
@spec new(keyword()) :: %ExUtcp.Transports.Grpc{
  connection_timeout: non_neg_integer(),
  logger: function(),
  max_retries: non_neg_integer(),
  pool_opts: keyword(),
  retry_config: map(),
  retry_delay: non_neg_integer()
}
```

Creates a new gRPC transport.

# `start_link`

```elixir
@spec start_link(keyword()) :: {:ok, pid()} | {:error, term()}
```

Starts the gRPC transport GenServer.

---

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