sui_rpc_loadgen/payload/
get_reference_gas_price.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use 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}