# `AtpClient.Isabelle.Session`
[🔗](https://github.com/jcschuster/AtpClient/blob/v0.5.0/lib/atp_client/isabelle/session.ex#L1)

Handle for an open Isabelle server session.

Wraps a `IsabelleClient.Shared` GenServer PID — which owns the underlying
TCP socket, the active Isabelle session, and routes async task messages so
multiple concurrent callers can share it safely — together with the resolved
configuration the session was opened with, so follow-up calls can pick up
the same `local_dir` / `isabelle_dir` without being passed them again.

The `:owner` field is a private pid that isolates the link to the Shared
process from the caller; `close_session/1` stops it, which in turn shuts
the Shared process down. Treat it as opaque.

# `t`

```elixir
@type t() :: %AtpClient.Isabelle.Session{
  client: pid(),
  config: keyword(),
  owner: pid()
}
```

---

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