use projectx_client::{Client, ContractId, Credentials, Hub, RealtimeEvent};
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::builder(Credentials::new("user", "api-key")?).build()?;
client.authenticate().await?;
let realtime = client.realtime(Hub::Market);
let mut events = realtime
.take_event_receiver()
.ok_or_else(|| std::io::Error::other("event receiver was already claimed"))?;
realtime.connect().await?;
let contract = ContractId::new("CON.F.US.MNQ.M26")?;
realtime.subscribe_contract_trades(&contract).await?;
while let Some(event) = events.recv().await {
match event {
RealtimeEvent::Reconnected => {
realtime.subscribe_contract_trades(&contract).await?;
}
RealtimeEvent::TransportGap => {
events.acknowledge_transport_gap();
}
_ => {}
}
}
realtime.disconnect().await?;
Ok(())
}