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.
Summary
Functions
Returns a specification to start this module under a supervisor.
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec connect(GRPC.Channel.t(), map()) :: {:ok, %{conn_pid: pid()}} | {:error, any()}
@spec disconnect(pid()) :: :ok
@spec start_link(GRPC.Channel.t(), map()) :: GenServer.on_start()