Add a client for BankForks (#10728)
Also: * Use BanksClient in solana-tokens
This commit is contained in:
		
							
								
								
									
										49
									
								
								banks-interface/src/lib.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								banks-interface/src/lib.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
use serde::{Deserialize, Serialize};
 | 
			
		||||
use solana_sdk::{
 | 
			
		||||
    account::Account,
 | 
			
		||||
    clock::Slot,
 | 
			
		||||
    commitment_config::CommitmentLevel,
 | 
			
		||||
    fee_calculator::FeeCalculator,
 | 
			
		||||
    hash::Hash,
 | 
			
		||||
    pubkey::Pubkey,
 | 
			
		||||
    signature::Signature,
 | 
			
		||||
    transaction::{self, Transaction, TransactionError},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
 | 
			
		||||
pub struct TransactionStatus {
 | 
			
		||||
    pub slot: Slot,
 | 
			
		||||
    pub confirmations: Option<usize>, // None = rooted
 | 
			
		||||
    pub err: Option<TransactionError>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[tarpc::service]
 | 
			
		||||
pub trait Banks {
 | 
			
		||||
    async fn send_transaction_with_context(transaction: Transaction);
 | 
			
		||||
    async fn get_fees_with_commitment_and_context(
 | 
			
		||||
        commitment: CommitmentLevel,
 | 
			
		||||
    ) -> (FeeCalculator, Hash, Slot);
 | 
			
		||||
    async fn get_transaction_status_with_context(signature: Signature)
 | 
			
		||||
        -> Option<TransactionStatus>;
 | 
			
		||||
    async fn get_slot_with_context(commitment: CommitmentLevel) -> Slot;
 | 
			
		||||
    async fn process_transaction_with_commitment_and_context(
 | 
			
		||||
        transaction: Transaction,
 | 
			
		||||
        commitment: CommitmentLevel,
 | 
			
		||||
    ) -> Option<transaction::Result<()>>;
 | 
			
		||||
    async fn get_account_with_commitment_and_context(
 | 
			
		||||
        address: Pubkey,
 | 
			
		||||
        commitment: CommitmentLevel,
 | 
			
		||||
    ) -> Option<Account>;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod tests {
 | 
			
		||||
    use super::*;
 | 
			
		||||
    use tarpc::{client, transport};
 | 
			
		||||
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn test_banks_client_new() {
 | 
			
		||||
        let (client_transport, _server_transport) = transport::channel::unbounded();
 | 
			
		||||
        BanksClient::new(client::Config::default(), client_transport);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user