Pavel Strakhov 1 年之前
父节点
当前提交
19744fd2ab
共有 2 个文件被更改,包括 22 次插入14 次删除
  1. 2 1
      apps/delayed-price-pusher/src/hermes_client.rs
  2. 20 13
      apps/delayed-price-pusher/src/main.rs

+ 2 - 1
apps/delayed-price-pusher/src/hermes_client.rs

@@ -1,7 +1,7 @@
 use anyhow::{bail, ensure, Context};
 use backoff::{future::retry, ExponentialBackoff};
 use futures::{Stream, StreamExt, TryFutureExt, TryStreamExt};
-use log::warn;
+use log::{info, warn};
 use reqwest::Client;
 use reqwest_eventsource::{Event, EventSource};
 use serde::Deserialize;
@@ -119,6 +119,7 @@ impl HermesClient {
 
         let mut url = self.config.endpoint.join("/v2/updates/price/stream")?;
         url.query_pairs_mut().append_pair("ids[]", price_feed_id);
+        info!("requesting hermes stream at {url}");
         // This never returns Err for now, but we may consider treating some error kinds
         // as permanent failures later.
         let event_source = retry(ExponentialBackoff::default(), || {

+ 20 - 13
apps/delayed-price-pusher/src/main.rs

@@ -14,7 +14,7 @@ use alloy::{
     sol_types::SolEvent,
 };
 use config::{Config, HermesConfig};
-use futures::{StreamExt, TryStreamExt};
+use futures::{future::pending, StreamExt, TryStreamExt};
 use hermes_client::HermesClient;
 use log::{info, warn};
 use price_fetcher::{PriceFetcher, PriceRequest};
@@ -36,7 +36,7 @@ async fn main() -> anyhow::Result<()> {
             stream_disconnect_delay: Duration::from_secs(10),
         },
     };
-    if true {
+    if false {
         let client = HermesClient::new(config.hermes.clone());
 
         let r = client
@@ -56,17 +56,24 @@ async fn main() -> anyhow::Result<()> {
         return Ok(());
     }
 
-    let (f, _responses) = PriceFetcher::new(
-        "TODO price_feed",
-        config.clone(),
-        Arc::new(HermesClient::new(config.hermes)),
-    );
-    f.handle(PriceRequest {
-        price_feed_id: "TODO".into(),
-        timestamp: 1,
-        context: [1, 2, 3].into(),
-    })
-    .await;
+    if true {
+        let (f, mut responses) = PriceFetcher::new(
+            "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
+            config.clone(),
+            Arc::new(HermesClient::new(config.hermes)),
+        );
+        f.handle(PriceRequest {
+            price_feed_id: "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"
+                .into(),
+            timestamp: 1729590018,
+            context: [1, 2, 3].into(),
+        })
+        .await;
+        while let Some(item) = responses.recv().await {
+            info!("response: {item:?}");
+        }
+        pending::<()>().await;
+    }
 
     let signer = LocalSigner::from_signing_key(SigningKey::from_slice(&hex::decode(
         "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80",