framework_3_0_test.rs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // use std::future::Future;
  2. // use std::time::{Duration, Instant};
  3. // use exchanges::response_base::ResponseData;
  4. // use std::sync::Arc;
  5. // use tokio::sync::Mutex;
  6. // use tracing::info;
  7. // use global::log_utils::init_log_with_info;
  8. //
  9. //
  10. // struct Core {
  11. // pub max_delay: u128
  12. // }
  13. //
  14. // #[tokio::test]
  15. // async fn framework_3_0() {
  16. // init_log_with_info();
  17. //
  18. // let core = Arc::new(Mutex::new(Core { max_delay: 0 }));
  19. // let handler_am = Arc::new(Mutex::new(TestHandler { core_am: core }));
  20. //
  21. // // 一个闭包解决了引用问题。
  22. // generator(|data| {
  23. // let handler_c = handler_am.clone();
  24. //
  25. // async move {
  26. // let mut handler = handler_c.lock().await;
  27. //
  28. // handler.on_data(data).await
  29. // }
  30. // }).await;
  31. // }
  32. //
  33. // // 消息创造者
  34. // async fn generator<F, Fut>(handle_function: F)
  35. // where
  36. // F: Fn(ResponseData) -> Fut,
  37. // Fut: Future<Output = ()> + Send + 'static, // 确保 Fut 是一个 Future,且输出类型为 ()
  38. // {
  39. // let data = ResponseData::new("aaa".to_string(),
  40. // "code".to_string(),
  41. // "msg".to_string(),
  42. // "data".to_string());
  43. // // let mut c = 0;
  44. // loop {
  45. // let mut s_data = data.clone();
  46. // s_data.time = chrono::Utc::now().timestamp_micros();
  47. // s_data.res_time = Instant::now();
  48. //
  49. // handle_function(s_data).await;
  50. //
  51. // tokio::time::sleep(Duration::from_micros(10)).await;
  52. // }
  53. // }
  54. //
  55. // struct TestHandler {
  56. // pub core_am: Arc<Mutex<Core>>
  57. // }
  58. //
  59. // impl TestHandler {
  60. // // 消息处理者
  61. // pub async fn on_data(&mut self, data: ResponseData) {
  62. // let mut core = self.core_am.lock().await;
  63. //
  64. // let delay_nanos = data.res_time.elapsed().as_nanos();
  65. //
  66. // if delay_nanos > core.max_delay {
  67. // core.max_delay = delay_nanos;
  68. // }
  69. //
  70. // // 处理响应数据
  71. // info!("delay nanos: {}, max delay is: {}", delay_nanos, core.max_delay);
  72. // }
  73. // }