# gRPC Client v1.0.0 - Table of Contents

> gRPC client implementation for Elixir

## Pages

- [gRPC Elixir Client](readme.md)
- [Changelog](changelog.md)

- Getting Started
  - [Client](client.md)

- Advanced
  - [Custom Codecs](custom_codecs.md)
  - [Load Balancing](load_balancing.md)

## Modules

- [GRPC.Client.Adapters.Gun.ConnectionProcess](GRPC.Client.Adapters.Gun.ConnectionProcess.md): Owns long-lived Gun connections on behalf of the Gun adapter.
- [GRPC.Client.Adapters.Gun.StreamResponseProcess](GRPC.Client.Adapters.Gun.StreamResponseProcess.md): Owns response state for a single Gun request stream.
- [GRPC.Client.DNSResolver](GRPC.Client.DNSResolver.md): Dedicated process for periodic DNS re-resolution.
- [GRPC.Client.Interceptor](GRPC.Client.Interceptor.md): Interceptor on client side. See `GRPC.Stub.connect/2`.

- [GRPC.Client.Interceptors.Logger](GRPC.Client.Interceptors.Logger.md): Print log around client rpc calls, like
- [GRPC.Client.Resolver.DNS.Adapter](GRPC.Client.Resolver.DNS.Adapter.md): Adapter to resolve DNS (A and TXT).

- [GRPC.Client.ServiceConfig](GRPC.Client.ServiceConfig.md): Represents the gRPC `ServiceConfig` parsed from JSON, which can come from DNS TXT records or xDS.

- Client Core
  - [GRPC.Channel](GRPC.Channel.md): A struct to store the connection data, which should be passed to
RPC functions as the first argument
  - [GRPC.Client.Connection](GRPC.Client.Connection.md): Connection manager for gRPC client channels, with optional load balancing
and name resolution support.
  - [GRPC.Client.Stream](GRPC.Client.Stream.md): A struct that *streaming* clients get from rpc function calls and use to send further requests.
  - [GRPC.Stub](GRPC.Stub.md): A module acting as the interface for gRPC client.

- Adapters
  - [GRPC.Client.Adapter](GRPC.Client.Adapter.md): HTTP client adapter for GRPC.

  - [GRPC.Client.Adapters.Gun](GRPC.Client.Adapters.Gun.md): A client adapter using Gun.
  - [GRPC.Client.Adapters.Mint](GRPC.Client.Adapters.Mint.md): A client adapter using Mint.

- Load Balancing
  - [GRPC.Client.LoadBalancing](GRPC.Client.LoadBalancing.md): Load balancing behaviour for gRPC clients.
  - [GRPC.Client.LoadBalancing.PickFirst](GRPC.Client.LoadBalancing.PickFirst.md)
  - [GRPC.Client.LoadBalancing.RoundRobin](GRPC.Client.LoadBalancing.RoundRobin.md)

- Resolvers
  - [GRPC.Client.Resolver](GRPC.Client.Resolver.md): Behaviour for gRPC client resolvers.
  - [GRPC.Client.Resolver.DNS](GRPC.Client.Resolver.DNS.md): DNS Resolver for gRPC targets, supporting dynamic updates via a GenServer.
  - [GRPC.Client.Resolver.IPv4](GRPC.Client.Resolver.IPv4.md): Resolver for gRPC clients connecting to one or more IPv4 addresses.
  - [GRPC.Client.Resolver.IPv6](GRPC.Client.Resolver.IPv6.md): Resolver for gRPC clients connecting to one or more IPv6 addresses.
  - [GRPC.Client.Resolver.Unix](GRPC.Client.Resolver.Unix.md): Resolver for gRPC clients connecting via Unix Domain Sockets (UDS).

- Deprecated
  - [GRPC.ClientInterceptor](GRPC.ClientInterceptor.md): Interceptor on client side. See `GRPC.Stub.connect/2`.

