sui_rpc_loadgen/payload/
get_reference_gas_price.rs1use anyhow::Result;
5use futures::future::try_join_all;
6use sui_sdk::SuiClient;
7
8use crate::payload::{GetReferenceGasPrice, ProcessPayload, RpcCommandProcessor, SignerInfo};
9use async_trait::async_trait;
10
11#[async_trait]
12impl<'a> ProcessPayload<'a, &'a GetReferenceGasPrice> for RpcCommandProcessor {
13 async fn process(
14 &'a self,
15 op: &'a GetReferenceGasPrice,
16 _signer_info: &Option<SignerInfo>,
17 ) -> Result<()> {
18 let clients = self.get_clients().await?;
19
20 let futures = (0..op.num_repeats).map(|_| {
21 let clients = clients.clone();
22 async move {
23 let futures = clients.iter().map(get_reference_gas_price);
24 try_join_all(futures).await
25 }
26 });
27
28 try_join_all(futures).await.unwrap();
29 Ok(())
30 }
31}
32
33async fn get_reference_gas_price(client: &SuiClient) -> Result<u64> {
34 let results = client
35 .governance_api()
36 .get_reference_gas_price()
37 .await
38 .unwrap();
39 Ok(results)
40}