MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / handle_list_services

Function handle_list_services

crates/openshell-server/src/grpc/service.rs:142–168  ·  view source on GitHub ↗
(
    state: &Arc<ServerState>,
    request: Request<ListServicesRequest>,
)

Source from the content-addressed store, hash-verified

140}
141
142pub(super) async fn handle_list_services(
143 state: &Arc<ServerState>,
144 request: Request<ListServicesRequest>,
145) -> Result<Response<ListServicesResponse>, Status> {
146 let req = request.into_inner();
147 if !req.sandbox.is_empty() {
148 validate_endpoint_name("sandbox", &req.sandbox, MAX_SANDBOX_NAME_LEN)?;
149 }
150
151 let limit = super::clamp_limit(req.limit, 100, super::MAX_PAGE_SIZE);
152 let endpoints: Vec<ServiceEndpoint> = if req.sandbox.is_empty() {
153 state.store.list_messages(limit, req.offset).await
154 } else {
155 state
156 .store
157 .list_messages_with_selector(&format!("sandbox={}", req.sandbox), limit, req.offset)
158 .await
159 }
160 .map_err(|e| Status::internal(format!("list endpoints failed: {e}")))?;
161
162 let services = endpoints
163 .into_iter()
164 .map(|ep| service_endpoint_response(state, ep))
165 .collect();
166
167 Ok(Response::new(ListServicesResponse { services }))
168}
169
170pub(super) async fn handle_delete_service(
171 state: &Arc<ServerState>,

Calls 6

validate_endpoint_nameFunction · 0.85
clamp_limitFunction · 0.85
list_messagesMethod · 0.80
is_emptyMethod · 0.45

Tested by

no test coverage detected