From 1f999035ada2767cc1d541e513cecac8003ef3d3 Mon Sep 17 00:00:00 2001 From: nadin-Starkware Date: Wed, 13 Nov 2024 18:19:49 +0200 Subject: [PATCH] chore: add create_remote_server macro commit-id:6442e09a --- crates/starknet_sequencer_node/src/servers.rs | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/crates/starknet_sequencer_node/src/servers.rs b/crates/starknet_sequencer_node/src/servers.rs index 2e98acd0b4..297166a868 100644 --- a/crates/starknet_sequencer_node/src/servers.rs +++ b/crates/starknet_sequencer_node/src/servers.rs @@ -44,6 +44,57 @@ pub struct SequencerNodeServers { wrapper_servers: WrapperServers, } +/// A macro for creating a remote component server based on the component's execution mode. +/// Returns a remote server if the component is configured with Remote execution mode; otherwise, +/// returns None. +/// +/// # Arguments +/// +/// * `$execution_mode` - A reference to the component's execution mode, of type +/// `&ComponentExecutionMode`. +/// * `$local_client` - The local client to be used for the remote server initialization if the +/// execution mode is `Remote`. +/// * `$config` - The configuration for the remote server. +/// +/// # Returns +/// +/// An `Option>>` containing +/// the remote server if the execution mode is Remote, or None if the execution mode is Disabled, +/// LocalExecutionWithRemoteEnabled or LocalExecutionWithRemoteDisabled. +/// +/// # Example +/// +/// ```rust,ignore +/// let batcher_remote_server = create_remote_server!( +/// &config.components.batcher.execution_mode, +/// clients.get_gateway_local_client(), +/// config.remote_server_config +/// ); +/// match batcher_remote_server { +/// Some(server) => println!("Remote server created: {:?}", server), +/// None => println!("Remote server not created because the execution mode is not remote."), +/// } +/// ``` +#[macro_export] +macro_rules! create_remote_server { + ($execution_mode:expr, $local_client:expr, $config:expr) => { + match *$execution_mode { + ComponentExecutionMode::Remote => { + let local_client = $local_client + .expect("Error: local client must be initialized in Remote execution mode."); + let config = $config + .as_ref() + .expect("Error: config must be initialized in Remote execution mode."); + + Some(Box::new(RemoteComponentServer::new(local_client, config.clone()))) + } + ComponentExecutionMode::LocalExecutionWithRemoteDisabled + | ComponentExecutionMode::LocalExecutionWithRemoteEnabled + | ComponentExecutionMode::Disabled => None, + } + }; +} + /// A macro for creating a component server, determined by the component's execution mode. Returns a /// local server if the component is run locally, otherwise None. ///