# `GRPC.Client.Adapters.Gun.ConnectionProcess`
[🔗](https://github.com/elixir-grpc/grpc/tree/master/grpc/blob/v1.0.5/lib/grpc/client/adapters/gun/connection_process.ex#L1)

Owns long-lived Gun connections on behalf of the Gun adapter.

This process exists so named Gun-backed channels are no longer tied to the
lifecycle of the process that happened to call `GRPC.Stub.connect/2`.

Without this wrapper, `GRPC.Client.Connection` would need to own Gun directly
or understand Gun-specific owner messages. Keeping Gun ownership in this
adapter-local process preserves a clean adapter boundary while ensuring the
underlying Gun connection survives short-lived callers.

Request-specific Gun messages are routed to per-stream response processes, so
this process only needs to manage connection-level lifecycle and stream
bookkeeping.

Named channels are registered in the node-local `GRPC.Client.Registry` under
`{ref, host, port}`, so a connection is reused by every caller on the node.

# `cancel`

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `connect`

# `disconnect`

# `open_stream`

# `request`

# `send_data`

# `start_link`

---

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