pub struct TpuClient<P, M, C> { /* private fields */ }
Expand description
Client which sends transactions directly to the current leader’s TPU port over UDP. The client uses RPC to determine the current leader and fetch node contact info
Implementations§
Source§impl<P, M, C> TpuClient<P, M, C>where
P: ConnectionPool<NewConnectionConfig = C>,
M: ConnectionManager<ConnectionPool = P, NewConnectionConfig = C>,
C: NewConnectionConfig,
impl<P, M, C> TpuClient<P, M, C>where
P: ConnectionPool<NewConnectionConfig = C>,
M: ConnectionManager<ConnectionPool = P, NewConnectionConfig = C>,
C: NewConnectionConfig,
Sourcepub fn send_transaction(&self, transaction: &Transaction) -> bool
pub fn send_transaction(&self, transaction: &Transaction) -> bool
Serialize and send transaction to the current and upcoming leader TPUs according to fanout size
Sourcepub fn send_wire_transaction(&self, wire_transaction: Vec<u8>) -> bool
pub fn send_wire_transaction(&self, wire_transaction: Vec<u8>) -> bool
Send a wire transaction to the current and upcoming leader TPUs according to fanout size
Sourcepub fn try_send_transaction(
&self,
transaction: &Transaction,
) -> TransportResult<()>
pub fn try_send_transaction( &self, transaction: &Transaction, ) -> TransportResult<()>
Serialize and send transaction to the current and upcoming leader TPUs according to fanout size Returns the last error if all sends fail
Sourcepub fn send_transaction_to_upcoming_leaders(
&self,
transaction: &Transaction,
) -> TransportResult<()>
pub fn send_transaction_to_upcoming_leaders( &self, transaction: &Transaction, ) -> TransportResult<()>
Serialize and send transaction to the current and upcoming leader TPUs according to fanout NOTE: send_wire_transaction() and try_send_transaction() above both fail in a specific case when used in LocalCluster They both invoke the nonblocking TPUClient and both fail when calling “transfer_with_client()” multiple times I do not full understand WHY the nonblocking TPUClient fails in this specific case. But the method defined below does work although it has only been tested in LocalCluster integration tests
Sourcepub fn try_send_transaction_batch(
&self,
transactions: &[Transaction],
) -> TransportResult<()>
pub fn try_send_transaction_batch( &self, transactions: &[Transaction], ) -> TransportResult<()>
Serialize and send a batch of transactions to the current and upcoming leader TPUs according to fanout size Returns the last error if all sends fail
Sourcepub fn try_send_wire_transaction(
&self,
wire_transaction: Vec<u8>,
) -> TransportResult<()>
pub fn try_send_wire_transaction( &self, wire_transaction: Vec<u8>, ) -> TransportResult<()>
Send a wire transaction to the current and upcoming leader TPUs according to fanout size Returns the last error if all sends fail
pub fn try_send_wire_transaction_batch( &self, wire_transactions: Vec<Vec<u8>>, ) -> TransportResult<()>
Sourcepub fn new(
name: &'static str,
rpc_client: Arc<RpcClient>,
websocket_url: &str,
config: TpuClientConfig,
connection_manager: M,
) -> Result<Self>
pub fn new( name: &'static str, rpc_client: Arc<RpcClient>, websocket_url: &str, config: TpuClientConfig, connection_manager: M, ) -> Result<Self>
Create a new client that disconnects when dropped
Sourcepub fn new_with_connection_cache(
rpc_client: Arc<RpcClient>,
websocket_url: &str,
config: TpuClientConfig,
connection_cache: Arc<ConnectionCache<P, M, C>>,
) -> Result<Self>
pub fn new_with_connection_cache( rpc_client: Arc<RpcClient>, websocket_url: &str, config: TpuClientConfig, connection_cache: Arc<ConnectionCache<P, M, C>>, ) -> Result<Self>
Create a new client that disconnects when dropped
pub fn send_and_confirm_messages_with_spinner<T: Signers + ?Sized>( &self, messages: &[Message], signers: &T, ) -> Result<Vec<Option<TransactionError>>>
pub fn rpc_client(&self) -> &RpcClient
Trait Implementations§
Source§impl<P, M, C> AsyncClient for TpuClient<P, M, C>where
P: ConnectionPool<NewConnectionConfig = C>,
M: ConnectionManager<ConnectionPool = P, NewConnectionConfig = C>,
C: NewConnectionConfig,
impl<P, M, C> AsyncClient for TpuClient<P, M, C>where
P: ConnectionPool<NewConnectionConfig = C>,
M: ConnectionManager<ConnectionPool = P, NewConnectionConfig = C>,
C: NewConnectionConfig,
Source§fn async_send_versioned_transaction(
&self,
transaction: VersionedTransaction,
) -> TransportResult<Signature>
fn async_send_versioned_transaction( &self, transaction: VersionedTransaction, ) -> TransportResult<Signature>
Source§fn async_send_versioned_transaction_batch(
&self,
batch: Vec<VersionedTransaction>,
) -> TransportResult<()>
fn async_send_versioned_transaction_batch( &self, batch: Vec<VersionedTransaction>, ) -> TransportResult<()>
Source§fn async_send_transaction(
&self,
transaction: Transaction,
) -> Result<Signature, TransportError>
fn async_send_transaction( &self, transaction: Transaction, ) -> Result<Signature, TransportError>
Source§fn async_send_batch(
&self,
transactions: Vec<Transaction>,
) -> Result<(), TransportError>
fn async_send_batch( &self, transactions: Vec<Transaction>, ) -> Result<(), TransportError>
Source§fn async_send_message<T>(
&self,
keypairs: &T,
message: Message,
recent_blockhash: Hash,
) -> Result<Signature, TransportError>
fn async_send_message<T>( &self, keypairs: &T, message: Message, recent_blockhash: Hash, ) -> Result<Signature, TransportError>
Source§fn async_send_instruction(
&self,
keypair: &Keypair,
instruction: Instruction,
recent_blockhash: Hash,
) -> Result<Signature, TransportError>
fn async_send_instruction( &self, keypair: &Keypair, instruction: Instruction, recent_blockhash: Hash, ) -> Result<Signature, TransportError>
Source§fn async_transfer(
&self,
lamports: u64,
keypair: &Keypair,
pubkey: &Pubkey,
recent_blockhash: Hash,
) -> Result<Signature, TransportError>
fn async_transfer( &self, lamports: u64, keypair: &Keypair, pubkey: &Pubkey, recent_blockhash: Hash, ) -> Result<Signature, TransportError>
keypair
to pubkey
, but don’t wait to confirm.Auto Trait Implementations§
impl<P, M, C> Freeze for TpuClient<P, M, C>
impl<P, M, C> !RefUnwindSafe for TpuClient<P, M, C>
impl<P, M, C> Send for TpuClient<P, M, C>
impl<P, M, C> Sync for TpuClient<P, M, C>
impl<P, M, C> Unpin for TpuClient<P, M, C>
impl<P, M, C> !UnwindSafe for TpuClient<P, M, C>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more