fn hook_curl_exec()

in src/plugin/plugin_curl.rs [151:178]


    fn hook_curl_exec(&self) -> (Box<BeforeExecuteHook>, Box<AfterExecuteHook>) {
        (
            Box::new(|request_id, execute_data| {
                validate_num_args(execute_data, 1)?;

                let cid = Self::get_resource_id(execute_data)?;
                let ch = execute_data.get_parameter(0);

                let info = Self::get_curl_info(cid, ch.clone())?;

                let span = Self::create_exit_span(request_id, &info)?;

                if info.is_http {
                    Self::inject_sw_header(request_id, ch.clone(), &info)?;
                }

                Ok(Box::new(span))
            }),
            Box::new(move |_, span, execute_data, _| {
                let mut span = span.downcast::<Span>().unwrap();

                let ch = execute_data.get_parameter(0);
                Self::finish_exit_span(&mut *span, ch)?;

                Ok(())
            }),
        )
    }