# gRPC Server v1.0.0 - Table of Contents

> gRPC server implementation for Elixir

## Pages

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

- Getting Started
  - [Quickstart](quickstart.md)
  - [Streaming](stream.md)
  - [Error Handling](error_handling.md)
  - [Codegen](codegen.md)

- Advanced
  - [Transcoding](transcoding.md)
  - [CORS](cors.md)
  - [Telemetry](telemetry.md)
  - [Pooling](pooling.md)
  - [Custom Codecs](custom_codecs.md)

- Cheatsheets
  - [Stream Operators](streams.md)

## Modules

- [GRPC](GRPC.md): GRPC is a fully featured Elixir implementation of the gRPC protocol (grpc.io),
enabling efficient communication between services through a unified and
stream-oriented API. It supports all RPC types, friendly error handling, TLS,
interceptors, reflection, and optional HTTP transcoding.
- [GRPC.Logger](GRPC.Logger.md)
- [GRPC.Protoc.CLI](GRPC.Protoc.CLI.md): `protoc` plugin for generating Elixir code.

- Server Core
  - [GRPC.Endpoint](GRPC.Endpoint.md): GRPC endpoint for multiple servers and interceptors.
  - [GRPC.Server](GRPC.Server.md): A gRPC server which handles requests by calling user-defined functions.
  - [GRPC.Server.Stream](GRPC.Server.Stream.md): A struct as an argument that servers get in rpc function definitions and use to handle headers,
send streaming replies.
  - [GRPC.Server.Supervisor](GRPC.Server.Supervisor.md): A simple supervisor to start your servers.

- Server Adapters
  - [GRPC.Server.Adapter](GRPC.Server.Adapter.md): HTTP server adapter for GRPC.

  - [GRPC.Server.Adapters.Cowboy](GRPC.Server.Adapters.Cowboy.md): A server (`b:GRPC.Server.Adapter`) adapter using `:cowboy`.
  - [GRPC.Server.Adapters.Cowboy.Handler](GRPC.Server.Adapters.Cowboy.Handler.md): A cowboy handler accepting all requests and calls corresponding functions defined by users.

- Server Interceptors
  - [GRPC.Server.Interceptor](GRPC.Server.Interceptor.md): Interceptor on server side. See `GRPC.Endpoint`.

  - [GRPC.Server.Interceptors.CORS](GRPC.Server.Interceptors.CORS.md): Sends CORS headers when the client is using RPC via Web transcoding or gRPC-web.
  - [GRPC.Server.Interceptors.Logger](GRPC.Server.Interceptors.Logger.md): Print log around server rpc calls, like

- Transcoding
  - [GRPC.Server.Router](GRPC.Server.Router.md): 

- Stream API
  - [GRPC.Stream](GRPC.Stream.md): Provides a `Flow`-based abstraction layer for building gRPC streaming pipelines in Elixir.
  - [GRPC.Stream.Operators](GRPC.Stream.Operators.md): Useful and internal functions for manipulating streams.

- Error Handling
  - [GRPC.Server.Adapters.ReportException](GRPC.Server.Adapters.ReportException.md): Exception raised by server adapter, meant to be used as part of metadata `crash_report`

- Deprecated
  - [GRPC.ServerInterceptor](GRPC.ServerInterceptor.md): Interceptor on server side. See `GRPC.Endpoint`.

