pub struct GitlabInstanceHost { /* private fields */ }Expand description
Live-updatable, Arc-shareable handle to the registries.gitlab_instance_host setting
(spec FR-011a).
The shared raw string lives outside this crate (deps-lsp’s EcosystemRuntime, a plain
Arc<RwLock<Option<String>>> with no #[cfg] — see that struct’s docs for why) and is
threaded in at construction; every host-semantics decision (validation, memoization)
lives here instead.
Validation runs on read, not on write: Self::resolve compares the current raw
string and live policy against a memo of the last outcome, re-validating only when either
changes (issue #588 critic M11 — the memo must be keyed on policy too, since
RegistryAccessPolicy mutates in place: a host accepted under a looser policy must not
keep resolving once the policy tightens). A rejected value is treated as unset for host
resolution purposes (Self::get returns None), but is tracked distinctly
(InstanceHostOutcome::Invalid) for token-host routing — see token_host_origin.
Implementations§
Source§impl GitlabInstanceHost
impl GitlabInstanceHost
Sourcepub fn new(
raw: Arc<RwLock<Option<String>>>,
policy: Arc<RegistryAccessPolicy>,
) -> Self
pub fn new( raw: Arc<RwLock<Option<String>>>, policy: Arc<RegistryAccessPolicy>, ) -> Self
Builds a handle sharing raw (the config-owned raw string cell) and policy (the
same live RegistryAccessPolicy handle GitlabHost::parse gates against
elsewhere).
Sourcepub fn get(&self) -> Option<GitlabHost>
pub fn get(&self) -> Option<GitlabHost>
The currently configured, validated instance host — None when unset or when the
configured value fails validation (logged once per distinct (raw, policy) pair, not
per read).
Collapses InstanceHostOutcome::Unset and InstanceHostOutcome::Invalid to the
same None: for host resolution (what a project:/$...-relative component:
include resolves against), “not configured” and “configured but rejected” are the
same outcome. They are not the same outcome for token routing — see
token_host_origin, which calls Self::resolve directly instead.