publishers.rs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. use {
  2. pyth_lazer_client::arc_swap::StreamIntoAutoUpdatedHandle,
  3. pyth_lazer_client::history_client::GetStateParams,
  4. pyth_lazer_client::history_client::{PythLazerHistoryClient, PythLazerHistoryClientConfig},
  5. std::{env, time::Duration},
  6. tokio::time::sleep,
  7. url::Url,
  8. };
  9. #[tokio::main]
  10. async fn main() -> anyhow::Result<()> {
  11. tracing_subscriber::fmt::init();
  12. let urls = std::env::args()
  13. .skip(1)
  14. .map(|s| Url::parse(&s))
  15. .collect::<Result<Vec<_>, _>>()?;
  16. let client = PythLazerHistoryClient::new(PythLazerHistoryClientConfig {
  17. urls,
  18. update_interval: Duration::from_secs(5),
  19. access_token: Some(env::var("ACCESS_TOKEN")?),
  20. ..Default::default()
  21. });
  22. let state = client
  23. .state_stream(GetStateParams {
  24. publishers: true,
  25. ..Default::default()
  26. })
  27. .await?
  28. .into_auto_updated_handle()
  29. .await?;
  30. loop {
  31. println!("publishers len: {}", state.load().publishers.len());
  32. println!(
  33. "publisher 1: {:?}",
  34. state
  35. .load()
  36. .publishers
  37. .iter()
  38. .find(|p| p.publisher_id == Some(1))
  39. );
  40. sleep(Duration::from_secs(15)).await;
  41. }
  42. }