MCPcopy Create free account
hub / github.com/Dstack-TEE/dstack / resolve_service

Method resolve_service

ra-rpc/src/openapi.rs:615–643  ·  view source on GitHub ↗
(&self, source_id: usize, query: &str)

Source from the content-addressed store, hash-verified

613 }
614
615 fn resolve_service(&self, source_id: usize, query: &str) -> Result<&ServiceInfo> {
616 let normalized = query.trim_start_matches('.').to_string();
617 if let Some(&idx) = self.service_by_full_name.get(&normalized) {
618 let service = &self.services[idx];
619 if service.source_id == source_id {
620 return Ok(service);
621 }
622 }
623
624 let matches = self
625 .service_by_simple_name
626 .get(query)
627 .into_iter()
628 .flatten()
629 .filter_map(|idx| {
630 let service = &self.services[*idx];
631 (service.source_id == source_id).then_some(service)
632 })
633 .collect::<Vec<_>>();
634
635 match matches.as_slice() {
636 [service] => Ok(service),
637 [] => bail!("service {} not found in descriptor {}", query, source_id),
638 _ => bail!(
639 "service name {} is ambiguous, please use the fully qualified name",
640 query
641 ),
642 }
643 }
644
645 fn message(&self, name: &str) -> Option<&MessageInfo> {
646 self.messages.get(name)

Callers 1

generate_documentFunction · 0.80

Calls 2

into_iterMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected