pub struct BlockchainDataClient {
pub chain: SharedChain,
pub config: BlockchainDataClientConfig,
pub core_client: Option<BlockchainDataClientCore>,
/* private fields */
}Expand description
A comprehensive client for interacting with blockchain data from multiple sources.
The BlockchainDataClient serves as a facade that coordinates between different blockchain
data providers, caching mechanisms, and contract interactions. It provides a unified interface
for retrieving and processing blockchain data, particularly focused on DeFi protocols.
This client supports two primary data sources:
- Direct RPC connections to blockchain nodes (via WebSocket).
- HyperSync API for efficient historical data queries.
Fields§
§chain: SharedChainThe blockchain being targeted by this client instance.
config: BlockchainDataClientConfigConfiguration parameters for the blockchain data client.
core_client: Option<BlockchainDataClientCore>The core client instance that handles blockchain operations. Wrapped in Option to allow moving it into the background processing task.
Implementations§
Source§impl BlockchainDataClient
impl BlockchainDataClient
Sourcepub fn new(config: BlockchainDataClientConfig) -> Self
pub fn new(config: BlockchainDataClientConfig) -> Self
Creates a new BlockchainDataClient instance for the specified configuration.
Sourcepub async fn await_process_task_close(&mut self)
pub async fn await_process_task_close(&mut self)
Waits for the background processing task to complete.
This method blocks until the spawned process task finishes execution, which typically happens after a shutdown signal is sent.
Trait Implementations§
Source§impl DataClient for BlockchainDataClient
impl DataClient for BlockchainDataClient
Source§fn connect<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn connect<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn disconnect<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn disconnect<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn is_connected(&self) -> bool
fn is_connected(&self) -> bool
true if the client is currently connected.Source§fn is_disconnected(&self) -> bool
fn is_disconnected(&self) -> bool
true if the client is currently disconnected.Source§fn subscribe_blocks(&mut self, cmd: &SubscribeBlocks) -> Result<()>
fn subscribe_blocks(&mut self, cmd: &SubscribeBlocks) -> Result<()>
Source§fn subscribe_pool(&mut self, cmd: &SubscribePool) -> Result<()>
fn subscribe_pool(&mut self, cmd: &SubscribePool) -> Result<()>
Source§fn subscribe_pool_swaps(&mut self, cmd: &SubscribePoolSwaps) -> Result<()>
fn subscribe_pool_swaps(&mut self, cmd: &SubscribePoolSwaps) -> Result<()>
Source§fn subscribe_pool_liquidity_updates(
&mut self,
cmd: &SubscribePoolLiquidityUpdates,
) -> Result<()>
fn subscribe_pool_liquidity_updates( &mut self, cmd: &SubscribePoolLiquidityUpdates, ) -> Result<()>
Source§fn subscribe_pool_fee_collects(
&mut self,
cmd: &SubscribePoolFeeCollects,
) -> Result<()>
fn subscribe_pool_fee_collects( &mut self, cmd: &SubscribePoolFeeCollects, ) -> Result<()>
Source§fn subscribe_pool_flash_events(
&mut self,
cmd: &SubscribePoolFlashEvents,
) -> Result<()>
fn subscribe_pool_flash_events( &mut self, cmd: &SubscribePoolFlashEvents, ) -> Result<()>
Source§fn unsubscribe_blocks(&mut self, cmd: &UnsubscribeBlocks) -> Result<()>
fn unsubscribe_blocks(&mut self, cmd: &UnsubscribeBlocks) -> Result<()>
Source§fn unsubscribe_pool(&mut self, cmd: &UnsubscribePool) -> Result<()>
fn unsubscribe_pool(&mut self, cmd: &UnsubscribePool) -> Result<()>
Source§fn unsubscribe_pool_swaps(&mut self, cmd: &UnsubscribePoolSwaps) -> Result<()>
fn unsubscribe_pool_swaps(&mut self, cmd: &UnsubscribePoolSwaps) -> Result<()>
Source§fn unsubscribe_pool_liquidity_updates(
&mut self,
cmd: &UnsubscribePoolLiquidityUpdates,
) -> Result<()>
fn unsubscribe_pool_liquidity_updates( &mut self, cmd: &UnsubscribePoolLiquidityUpdates, ) -> Result<()>
Source§fn unsubscribe_pool_fee_collects(
&mut self,
cmd: &UnsubscribePoolFeeCollects,
) -> Result<()>
fn unsubscribe_pool_fee_collects( &mut self, cmd: &UnsubscribePoolFeeCollects, ) -> Result<()>
Source§fn unsubscribe_pool_flash_events(
&mut self,
cmd: &UnsubscribePoolFlashEvents,
) -> Result<()>
fn unsubscribe_pool_flash_events( &mut self, cmd: &UnsubscribePoolFlashEvents, ) -> Result<()>
Source§fn request_pool_snapshot(&self, cmd: &RequestPoolSnapshot) -> Result<()>
fn request_pool_snapshot(&self, cmd: &RequestPoolSnapshot) -> Result<()>
§fn subscribe(&mut self, cmd: &SubscribeCustomData) -> Result<(), Error>
fn subscribe(&mut self, cmd: &SubscribeCustomData) -> Result<(), Error>
§fn subscribe_instruments(
&mut self,
cmd: &SubscribeInstruments,
) -> Result<(), Error>
fn subscribe_instruments( &mut self, cmd: &SubscribeInstruments, ) -> Result<(), Error>
§fn subscribe_instrument(
&mut self,
cmd: &SubscribeInstrument,
) -> Result<(), Error>
fn subscribe_instrument( &mut self, cmd: &SubscribeInstrument, ) -> Result<(), Error>
§fn subscribe_book_deltas(
&mut self,
cmd: &SubscribeBookDeltas,
) -> Result<(), Error>
fn subscribe_book_deltas( &mut self, cmd: &SubscribeBookDeltas, ) -> Result<(), Error>
§fn subscribe_book_depth10(
&mut self,
cmd: &SubscribeBookDepth10,
) -> Result<(), Error>
fn subscribe_book_depth10( &mut self, cmd: &SubscribeBookDepth10, ) -> Result<(), Error>
§fn subscribe_book_snapshots(
&mut self,
cmd: &SubscribeBookSnapshots,
) -> Result<(), Error>
fn subscribe_book_snapshots( &mut self, cmd: &SubscribeBookSnapshots, ) -> Result<(), Error>
§fn subscribe_quotes(&mut self, cmd: &SubscribeQuotes) -> Result<(), Error>
fn subscribe_quotes(&mut self, cmd: &SubscribeQuotes) -> Result<(), Error>
§fn subscribe_trades(&mut self, cmd: &SubscribeTrades) -> Result<(), Error>
fn subscribe_trades(&mut self, cmd: &SubscribeTrades) -> Result<(), Error>
§fn subscribe_mark_prices(
&mut self,
cmd: &SubscribeMarkPrices,
) -> Result<(), Error>
fn subscribe_mark_prices( &mut self, cmd: &SubscribeMarkPrices, ) -> Result<(), Error>
§fn subscribe_index_prices(
&mut self,
cmd: &SubscribeIndexPrices,
) -> Result<(), Error>
fn subscribe_index_prices( &mut self, cmd: &SubscribeIndexPrices, ) -> Result<(), Error>
§fn subscribe_funding_rates(
&mut self,
cmd: &SubscribeFundingRates,
) -> Result<(), Error>
fn subscribe_funding_rates( &mut self, cmd: &SubscribeFundingRates, ) -> Result<(), Error>
§fn subscribe_bars(&mut self, cmd: &SubscribeBars) -> Result<(), Error>
fn subscribe_bars(&mut self, cmd: &SubscribeBars) -> Result<(), Error>
§fn subscribe_instrument_status(
&mut self,
cmd: &SubscribeInstrumentStatus,
) -> Result<(), Error>
fn subscribe_instrument_status( &mut self, cmd: &SubscribeInstrumentStatus, ) -> Result<(), Error>
§fn subscribe_instrument_close(
&mut self,
cmd: &SubscribeInstrumentClose,
) -> Result<(), Error>
fn subscribe_instrument_close( &mut self, cmd: &SubscribeInstrumentClose, ) -> Result<(), Error>
§fn unsubscribe(&mut self, cmd: &UnsubscribeCustomData) -> Result<(), Error>
fn unsubscribe(&mut self, cmd: &UnsubscribeCustomData) -> Result<(), Error>
§fn unsubscribe_instruments(
&mut self,
cmd: &UnsubscribeInstruments,
) -> Result<(), Error>
fn unsubscribe_instruments( &mut self, cmd: &UnsubscribeInstruments, ) -> Result<(), Error>
§fn unsubscribe_instrument(
&mut self,
cmd: &UnsubscribeInstrument,
) -> Result<(), Error>
fn unsubscribe_instrument( &mut self, cmd: &UnsubscribeInstrument, ) -> Result<(), Error>
§fn unsubscribe_book_deltas(
&mut self,
cmd: &UnsubscribeBookDeltas,
) -> Result<(), Error>
fn unsubscribe_book_deltas( &mut self, cmd: &UnsubscribeBookDeltas, ) -> Result<(), Error>
§fn unsubscribe_book_depth10(
&mut self,
cmd: &UnsubscribeBookDepth10,
) -> Result<(), Error>
fn unsubscribe_book_depth10( &mut self, cmd: &UnsubscribeBookDepth10, ) -> Result<(), Error>
§fn unsubscribe_book_snapshots(
&mut self,
cmd: &UnsubscribeBookSnapshots,
) -> Result<(), Error>
fn unsubscribe_book_snapshots( &mut self, cmd: &UnsubscribeBookSnapshots, ) -> Result<(), Error>
§fn unsubscribe_quotes(&mut self, cmd: &UnsubscribeQuotes) -> Result<(), Error>
fn unsubscribe_quotes(&mut self, cmd: &UnsubscribeQuotes) -> Result<(), Error>
§fn unsubscribe_trades(&mut self, cmd: &UnsubscribeTrades) -> Result<(), Error>
fn unsubscribe_trades(&mut self, cmd: &UnsubscribeTrades) -> Result<(), Error>
§fn unsubscribe_mark_prices(
&mut self,
cmd: &UnsubscribeMarkPrices,
) -> Result<(), Error>
fn unsubscribe_mark_prices( &mut self, cmd: &UnsubscribeMarkPrices, ) -> Result<(), Error>
§fn unsubscribe_index_prices(
&mut self,
cmd: &UnsubscribeIndexPrices,
) -> Result<(), Error>
fn unsubscribe_index_prices( &mut self, cmd: &UnsubscribeIndexPrices, ) -> Result<(), Error>
§fn unsubscribe_funding_rates(
&mut self,
cmd: &UnsubscribeFundingRates,
) -> Result<(), Error>
fn unsubscribe_funding_rates( &mut self, cmd: &UnsubscribeFundingRates, ) -> Result<(), Error>
§fn unsubscribe_bars(&mut self, cmd: &UnsubscribeBars) -> Result<(), Error>
fn unsubscribe_bars(&mut self, cmd: &UnsubscribeBars) -> Result<(), Error>
§fn unsubscribe_instrument_status(
&mut self,
cmd: &UnsubscribeInstrumentStatus,
) -> Result<(), Error>
fn unsubscribe_instrument_status( &mut self, cmd: &UnsubscribeInstrumentStatus, ) -> Result<(), Error>
§fn unsubscribe_instrument_close(
&mut self,
cmd: &UnsubscribeInstrumentClose,
) -> Result<(), Error>
fn unsubscribe_instrument_close( &mut self, cmd: &UnsubscribeInstrumentClose, ) -> Result<(), Error>
§fn request_data(&self, request: &RequestCustomData) -> Result<(), Error>
fn request_data(&self, request: &RequestCustomData) -> Result<(), Error>
§fn request_instruments(&self, request: &RequestInstruments) -> Result<(), Error>
fn request_instruments(&self, request: &RequestInstruments) -> Result<(), Error>
§fn request_instrument(&self, request: &RequestInstrument) -> Result<(), Error>
fn request_instrument(&self, request: &RequestInstrument) -> Result<(), Error>
§fn request_book_snapshot(
&self,
request: &RequestBookSnapshot,
) -> Result<(), Error>
fn request_book_snapshot( &self, request: &RequestBookSnapshot, ) -> Result<(), Error>
§fn request_quotes(&self, request: &RequestQuotes) -> Result<(), Error>
fn request_quotes(&self, request: &RequestQuotes) -> Result<(), Error>
§fn request_trades(&self, request: &RequestTrades) -> Result<(), Error>
fn request_trades(&self, request: &RequestTrades) -> Result<(), Error>
Auto Trait Implementations§
impl Freeze for BlockchainDataClient
impl !RefUnwindSafe for BlockchainDataClient
impl Send for BlockchainDataClient
impl Sync for BlockchainDataClient
impl Unpin for BlockchainDataClient
impl UnsafeUnpin for BlockchainDataClient
impl !UnwindSafe for BlockchainDataClient
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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