Skip to content

Commit

Permalink
Add convenient GossipSync variant constructors
Browse files Browse the repository at this point in the history
These constructors fill in the missing types for each variant so that
users don't have to turbofish them manually.
  • Loading branch information
wpaulino committed Jul 15, 2022
1 parent f3d5b94 commit 6877539
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions lightning-background-processor/src/lib.rs
Expand Up @@ -137,6 +137,55 @@ where A::Target: chain::Access, L::Target: Logger {
}
}

/// (C-not exported) as the bindings concretize everything and have constructors for us
impl<P: Deref<Target = P2PGossipSync<G, A, L>>, G: Deref<Target = NetworkGraph<L>>, A: Deref, L: Deref>
GossipSync<P, &RapidGossipSync<G, L>, G, A, L>
where
A::Target: chain::Access,
L::Target: Logger,
{
/// Initializes a new [`GossipSync::P2P`] variant.
pub fn p2p(gossip_sync: P) -> Self {
GossipSync::P2P(gossip_sync)
}
}

/// (C-not exported) as the bindings concretize everything and have constructors for us
impl<'a, R: Deref<Target = RapidGossipSync<G, L>>, G: Deref<Target = NetworkGraph<L>>, L: Deref>
GossipSync<
&P2PGossipSync<G, &'a (dyn chain::Access + Send + Sync), L>,
R,
G,
&'a (dyn chain::Access + Send + Sync),
L,
>
where
L::Target: Logger,
{
/// Initializes a new [`GossipSync::Rapid`] variant.
pub fn rapid(gossip_sync: R) -> Self {
GossipSync::Rapid(gossip_sync)
}
}

/// (C-not exported) as the bindings concretize everything and have constructors for us
impl<'a, L: Deref>
GossipSync<
&P2PGossipSync<&'a NetworkGraph<L>, &'a (dyn chain::Access + Send + Sync), L>,
&RapidGossipSync<&'a NetworkGraph<L>, L>,
&'a NetworkGraph<L>,
&'a (dyn chain::Access + Send + Sync),
L,
>
where
L::Target: Logger,
{
/// Initializes a new [`GossipSync::None`] variant.
pub fn none() -> Self {
GossipSync::None
}
}

/// Decorates an [`EventHandler`] with common functionality provided by standard [`EventHandler`]s.
struct DecoratingEventHandler<
'a,
Expand Down

0 comments on commit 6877539

Please sign in to comment.