MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / handle_home_ns_req

Function handle_home_ns_req

chirpstack/src/api/backend/mod.rs:540–589  ·  view source on GitHub ↗
(
    sender_client: Arc<backend::Client>,
    bp: backend::BasePayload,
    b: &[u8],
)

Source from the content-addressed store, hash-verified

538}
539
540async fn handle_home_ns_req(
541 sender_client: Arc<backend::Client>,
542 bp: backend::BasePayload,
543 b: &[u8],
544) -> Response {
545 let pl: backend::HomeNSReqPayload = match serde_json::from_slice(b) {
546 Ok(v) => v,
547 Err(e) => {
548 let ans = err_to_response(anyhow::Error::new(e), &bp);
549 log_request_response(&bp, b, &ans).await;
550 return Json(&ans).into_response();
551 }
552 };
553
554 if sender_client.is_async() {
555 let b = b.to_vec();
556 task::spawn(async move {
557 let ans = match _handle_home_ns_req(pl).await {
558 Ok(v) => v,
559 Err(e) => {
560 let msg = e.to_string();
561 backend::HomeNSAnsPayload {
562 base: bp.to_base_payload_result(err_to_result_code(e), &msg),
563 h_net_id: Vec::new(),
564 }
565 }
566 };
567
568 log_request_response(&bp, &b, &ans).await;
569
570 if let Err(e) = sender_client.home_ns_ans(backend::Role::FNS, &ans).await {
571 error!(error = %e.full(), "Send async HomeNSAns error");
572 }
573 });
574
575 (StatusCode::OK, "").into_response()
576 } else {
577 match _handle_home_ns_req(pl).await {
578 Ok(ans) => {
579 log_request_response(&bp, b, &ans).await;
580 Json(&ans).into_response()
581 }
582 Err(e) => {
583 let ans = err_to_response(e, &bp);
584 log_request_response(&bp, b, &ans).await;
585 Json(&ans).into_response()
586 }
587 }
588 }
589}
590
591async fn _handle_home_ns_req(pl: backend::HomeNSReqPayload) -> Result<backend::HomeNSAnsPayload> {
592 let conf = config::get();

Callers 1

_handle_requestFunction · 0.85

Calls 9

err_to_responseFunction · 0.85
log_request_responseFunction · 0.85
_handle_home_ns_reqFunction · 0.85
err_to_result_codeFunction · 0.85
is_asyncMethod · 0.80
to_stringMethod · 0.80
home_ns_ansMethod · 0.80
to_vecMethod · 0.45

Tested by

no test coverage detected