fn call()

in dubbo/src/filter/timeout.rs [38:65]


    fn call(&mut self, req: Request<()>) -> Result<Request<()>, Status> {
        if let Some(attachments) = RpcContext::get_attachments() {
            let current_nanos = SystemTime::now()
                .duration_since(UNIX_EPOCH)
                .unwrap()
                .as_nanos();

            let attachments = attachments.lock().unwrap();
            let tri_timeout_deadline_in_nanos =
                attachments.get(TRI_TIMEOUT_DEADLINE_IN_NANOS).unwrap();
            let tri_timeout_deadline_in_nanos: u128 = tri_timeout_deadline_in_nanos
                .as_str()
                .unwrap()
                .parse()
                .unwrap();

            tracing::debug!(
                "TimeoutFilter tri-timeout-deadline-in-nanos : {}, current-nanos:{}",
                tri_timeout_deadline_in_nanos,
                current_nanos
            );
            if tri_timeout_deadline_in_nanos - current_nanos <= 0 {
                return Err(Status::new(Code::DeadlineExceeded, String::from("Timeout")));
            }
        }

        Ok(req)
    }