agg: &'c Aggregate,
link: &'c LinkName,
end: LinkEnd,
+ server_name: ServerName,
all_sections: Vec<SectionName>,
- special_server_section: SectionName,
}
trait Parseable: Sized {
}
None
}
+
+ #[throws(AE)]
+ pub fn establish_server_name(&self) -> ServerName {
+ let raw = match self.lookup_raw(
+ "server",
+ [ &SectionName::Common, &SN::special_server_section() ].iter().cloned()
+ ) {
+ Some(raw) => raw.val.as_deref().value()?,
+ None => SPECIAL_SERVER_SECTION,
+ };
+ ServerName(raw.into())
+ }
}
impl<'c> ResolveContext<'c> {
#[throws(AE)]
pub fn special_server(&self, key: &'static str) -> ServerName {
- let raw = match self.agg.lookup_raw(
- "server",
- [ &SectionName::Common, &self.special_server_section ].iter().cloned()
- ) {
- Some(raw) => raw.val.as_deref().value()?,
- None => SPECIAL_SERVER_SECTION,
- };
- ServerName(raw.into())
+ self.server_name.clone()
}
}
Ok::<_,AE>(agg)
})().context("read configuration")?;
+ let server_name = agg.establish_server_name()?;
+
let link = LinkName {
server: "fooxxx".parse().unwrap(),
client: "127.0.0.1".parse().unwrap(),
agg: &agg,
link: &link,
end: LinkEnd::Server,
+ server_name,
all_sections: vec![
SN::Link(link.clone()),
SN::Client(link.client.clone()),
SN::ServerLimit(link.server.clone()),
SN::GlobalLimit,
],
- special_server_section: SN::special_server_section(),
};
let ic = InstanceConfig::resolve_instance(&rctx)