Skip to content

Commit

Permalink
Use #[cgp_context] to simplify delegation of providers to Cosmos co…
Browse files Browse the repository at this point in the history
…ntext (#536)

* Apply #[cgp_context] to CosmosChain

* Apply #[cgp_context] to other Cosmos contexts

* Use back main branch
  • Loading branch information
soareschen authored Feb 14, 2025
1 parent 9865ee3 commit b15ac3f
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 121 deletions.
36 changes: 18 additions & 18 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 1 addition & 20 deletions crates/cosmos/cosmos-relayer/src/contexts/birelay.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,33 +18,14 @@ use crate::contexts::chain::CosmosChain;
use crate::contexts::relay::CosmosRelay;
use crate::impls::error::HandleCosmosError;

#[cgp_context(CosmosBiRelayComponents: DefaultBiRelayComponents)]
#[derive(HasField, Clone)]
pub struct CosmosBiRelay {
pub runtime: HermesRuntime,
pub relay_a_to_b: CosmosRelay,
pub relay_b_to_a: CosmosRelay,
}

pub struct CosmosBiRelayComponents;

impl HasComponents for CosmosBiRelay {
type Components = CosmosBiRelayComponents;
}

impl<Component> DelegateComponent<Component> for CosmosBiRelayComponents
where
Self: IsDefaultBiRelayComponents<Component>,
{
type Delegate = DefaultBiRelayComponents;
}

impl<Name, Context, Params> IsProviderFor<Name, Context, Params> for CosmosBiRelayComponents
where
Self: IsDefaultBiRelayComponents<Name>,
DefaultBiRelayComponents: IsProviderFor<Name, Context, Params>,
{
}

delegate_components! {
CosmosBiRelayComponents {
[
Expand Down
32 changes: 7 additions & 25 deletions crates/cosmos/cosmos-relayer/src/contexts/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ use hermes_relayer_components_extra::build::traits::cache::{
use hermes_relayer_components_extra::build::traits::relay_with_batch_builder::{
RelayWithBatchBuilder, RelayWithBatchBuilderComponent,
};
use hermes_relayer_components_extra::components::extra::build::*;
use hermes_relayer_components_extra::components::extra::build::{
ChainBuilderComponent, ExtraBuildComponents, IsExtraBuildComponents,
};
use hermes_runtime::types::runtime::HermesRuntime;
use hermes_runtime_components::traits::runtime::{RuntimeGetterComponent, RuntimeTypeComponent};
use ibc::core::host::types::identifiers::{ChainId, ClientId};
Expand All @@ -50,6 +52,10 @@ use crate::contexts::relay::CosmosRelay;
use crate::impls::error::HandleCosmosError;
use crate::types::telemetry::CosmosTelemetry;

#[cgp_context(
CosmosBuildComponents:
ExtraBuildComponents<CosmosBaseBuildComponents>
)]
#[derive(Clone)]
pub struct CosmosBuilder {
pub fields: Arc<dyn HasCosmosBuilderFields>,
Expand Down Expand Up @@ -86,32 +92,8 @@ impl HasCosmosBuilderFields for CosmosBuilderFields {
}
}

pub struct CosmosBuildComponents;

pub struct CosmosBaseBuildComponents;

impl HasComponents for CosmosBuilder {
type Components = CosmosBuildComponents;
}

impl HasComponents for CosmosBuildComponents {
type Components = CosmosBaseBuildComponents;
}

impl<Name> DelegateComponent<Name> for CosmosBuildComponents
where
Self: IsExtraBuildComponents<Name>,
{
type Delegate = ExtraBuildComponents<CosmosBaseBuildComponents>;
}

impl<Name, Context, Params> IsProviderFor<Name, Context, Params> for CosmosBuildComponents
where
Self: IsExtraBuildComponents<Name>,
ExtraBuildComponents<CosmosBaseBuildComponents>: IsProviderFor<Name, Context, Params>,
{
}

delegate_components! {
CosmosBuildComponents {
[
Expand Down
24 changes: 3 additions & 21 deletions crates/cosmos/cosmos-relayer/src/contexts/chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ use hermes_chain_type_components::traits::fields::chain_id::ChainIdGetterCompone
use hermes_chain_type_components::traits::fields::message_response_events::HasMessageResponseEvents;
use hermes_chain_type_components::traits::types::event::HasEventType;
use hermes_chain_type_components::traits::types::message_response::HasMessageResponseType;
use hermes_cosmos_chain_components::components::client::ChainStatusQuerierComponent;
use hermes_cosmos_chain_components::components::cosmos_to_cosmos::CosmosToCosmosComponents;
use hermes_cosmos_chain_components::components::delegate::DelegateCosmosChainComponents;
use hermes_cosmos_chain_components::impls::types::config::{CosmosChainConfig, EventSourceMode};
Expand Down Expand Up @@ -138,9 +139,10 @@ use tendermint_rpc::{HttpClient, Url, WebSocketClientUrl};
use crate::contexts::encoding::ProvideCosmosEncoding;
use crate::impls::error::HandleCosmosError;
use crate::impls::subscription::CanCreateAbciEventSubscription;
use crate::presets::chain::*;
use crate::presets::chain::{CosmosChainFullPreset, IsCosmosChainFullPreset};
use crate::types::telemetry::CosmosTelemetry;

#[cgp_context(CosmosChainContextComponents: CosmosChainFullPreset)]
#[derive(Clone)]
pub struct CosmosChain {
pub base_chain: Arc<BaseCosmosChain>,
Expand Down Expand Up @@ -169,12 +171,6 @@ impl Deref for CosmosChain {
}
}

pub struct CosmosChainContextComponents;

impl HasComponents for CosmosChain {
type Components = CosmosChainContextComponents;
}

delegate_components! {
CosmosChainContextComponents {
[
Expand Down Expand Up @@ -205,20 +201,6 @@ delegate_components! {
}
}

impl<Name> DelegateComponent<Name> for CosmosChainContextComponents
where
Self: IsCosmosChainFullPreset<Name>,
{
type Delegate = CosmosChainFullPreset;
}

impl<Name, Context, Params> IsProviderFor<Name, Context, Params> for CosmosChainContextComponents
where
Self: IsCosmosChainFullPreset<Name>,
CosmosChainFullPreset: IsProviderFor<Name, Context, Params>,
{
}

delegate_components! {
DelegateCosmosChainComponents {
CosmosChain: CosmosToCosmosComponents,
Expand Down
21 changes: 4 additions & 17 deletions crates/cosmos/cosmos-relayer/src/contexts/encoding.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
use cgp::core::error::{ErrorRaiserComponent, ErrorTypeComponent};
use cgp::prelude::*;
use hermes_cosmos_chain_components::encoding::components::*;
use hermes_cosmos_chain_components::encoding::components::{
CosmosClientEncodingComponents, IsCosmosClientEncodingComponents,
};
use hermes_cosmos_chain_components::types::tendermint::{
TendermintClientState, TendermintConsensusState,
};
Expand All @@ -27,24 +29,9 @@ use prost_types::Any;

use crate::impls::error::HandleCosmosError;

#[cgp_context(CosmosEncodingContextComponents: CosmosClientEncodingComponents)]
pub struct CosmosEncoding;

pub struct CosmosEncodingContextComponents;

impl HasComponents for CosmosEncoding {
type Components = CosmosEncodingContextComponents;
}

with_cosmos_client_encoding_components! {
| Components | {
delegate_components! {
CosmosEncodingContextComponents {
Components: CosmosClientEncodingComponents,
}
}
}
}

delegate_components! {
CosmosEncodingContextComponents {
[
Expand Down
21 changes: 1 addition & 20 deletions crates/cosmos/cosmos-relayer/src/contexts/relay.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ use ibc::core::host::types::identifiers::ClientId;
use crate::contexts::chain::CosmosChain;
use crate::impls::error::HandleCosmosError;

#[cgp_context(CosmosRelayComponents: ExtraRelayPreset)]
#[derive(Clone)]
pub struct CosmosRelay {
pub fields: Arc<dyn HasCosmosRelayFields>,
Expand Down Expand Up @@ -106,8 +107,6 @@ impl CosmosRelay {
}
}

pub struct CosmosRelayComponents;

delegate_components! {
CosmosRelayComponents {
[
Expand Down Expand Up @@ -157,24 +156,6 @@ delegate_components! {
}
}

impl<Name> DelegateComponent<Name> for CosmosRelayComponents
where
Self: IsExtraRelayPreset<Name>,
{
type Delegate = ExtraRelayPreset;
}

impl<Name, Context, Params> IsProviderFor<Name, Context, Params> for CosmosRelayComponents
where
Self: IsExtraRelayPreset<Name>,
ExtraRelayPreset: IsProviderFor<Name, Context, Params>,
{
}

impl HasComponents for CosmosRelay {
type Components = CosmosRelayComponents;
}

pub trait CanUseCosmosRelay:
HasRelayClientIds
+ HasRuntime
Expand Down

0 comments on commit b15ac3f

Please sign in to comment.