You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wow-btc-swap/swap/src/asb/kraken.rs

26 lines
532 B

use crate::asb::{LatestRate, Rate};
use crate::kraken;
use anyhow::Result;
use tokio::sync::watch::Receiver;
#[derive(Clone)]
pub struct RateService {
receiver: Receiver<Result<Rate, kraken::Error>>,
}
impl LatestRate for RateService {
type Error = kraken::Error;
fn latest_rate(&mut self) -> Result<Rate, Self::Error> {
(*self.receiver.borrow()).clone()
}
}
impl RateService {
pub async fn new() -> Result<Self> {
Ok(Self {
receiver: kraken::connect().await?,
})
}
}