reth_node_builder::components

Trait NodeComponentsBuilder

Source
pub trait NodeComponentsBuilder<Node: FullNodeTypes>: Send {
    type Components: NodeComponents<Node, PayloadBuilder = PayloadBuilderHandle<<Node::Types as NodeTypesWithEngine>::Engine>>;

    // Required method
    fn build_components(
        self,
        ctx: &BuilderContext<Node>,
    ) -> impl Future<Output = Result<Self::Components>> + Send;
}
Expand description

A type that configures all the customizable components of the node and knows how to build them.

Implementers of this trait are responsible for building all the components of the node: See NodeComponents.

The ComponentsBuilder is a generic, general purpose implementation of this trait that can be used to customize certain components of the node using the builder pattern and defaults, e.g. Ethereum and Optimism. A type that’s responsible for building the components of the node.

Required Associated Types§

Source

type Components: NodeComponents<Node, PayloadBuilder = PayloadBuilderHandle<<Node::Types as NodeTypesWithEngine>::Engine>>

The components for the node with the given types

Required Methods§

Source

fn build_components( self, ctx: &BuilderContext<Node>, ) -> impl Future<Output = Result<Self::Components>> + Send

Consumes the type and returns the created components.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<Node, N, F, Fut, Pool, EVM, Executor, Cons> NodeComponentsBuilder<Node> for F
where N: NetworkPrimitives<BlockHeader = HeaderTy<Node::Types>, BlockBody = BodyTy<Node::Types>>, Node: FullNodeTypes, F: FnOnce(&BuilderContext<Node>) -> Fut + Send, Fut: Future<Output = Result<Components<Node, N, Pool, EVM, Executor, Cons>>> + Send, Pool: TransactionPool<Transaction: PoolTransaction<Consensus = TxTy<Node::Types>>> + Unpin + 'static, EVM: ConfigureEvm<Header = HeaderTy<Node::Types>, Transaction = TxTy<Node::Types>>, Executor: BlockExecutorProvider<Primitives = <Node::Types as NodeTypes>::Primitives>, Cons: FullConsensus<<Node::Types as NodeTypes>::Primitives> + Clone + Unpin + 'static,

Source§

type Components = Components<Node, N, Pool, EVM, Executor, Cons>

Source§

impl<Node, PoolB, PayloadB, NetworkB, ExecB, ConsB> NodeComponentsBuilder<Node> for ComponentsBuilder<Node, PoolB, PayloadB, NetworkB, ExecB, ConsB>
where Node: FullNodeTypes, PoolB: PoolBuilder<Node, Pool: TransactionPool<Transaction: PoolTransaction<Pooled = <NetworkB::Primitives as NetworkPrimitives>::PooledTransaction>>>, NetworkB: NetworkBuilder<Node, PoolB::Pool, Primitives: NetworkPrimitives<BlockHeader = HeaderTy<Node::Types>, BlockBody = BodyTy<Node::Types>>>, PayloadB: PayloadServiceBuilder<Node, PoolB::Pool>, ExecB: ExecutorBuilder<Node>, ConsB: ConsensusBuilder<Node>,

Source§

type Components = Components<Node, <NetworkB as NetworkBuilder<Node, <PoolB as PoolBuilder<Node>>::Pool>>::Primitives, <PoolB as PoolBuilder<Node>>::Pool, <ExecB as ExecutorBuilder<Node>>::EVM, <ExecB as ExecutorBuilder<Node>>::Executor, <ConsB as ConsensusBuilder<Node>>::Consensus>