+/// Decorates an [`EventHandler`] with common functionality provided by standard [`EventHandler`]s.
+struct DecoratingEventHandler<
+ E: EventHandler,
+ N: Deref<Target = NetGraphMsgHandler<A, L>>,
+ A: Deref,
+ L: Deref,
+>
+where A::Target: chain::Access, L::Target: Logger {
+ event_handler: E,
+ net_graph_msg_handler: Option<N>,
+}
+
+impl<
+ E: EventHandler,
+ N: Deref<Target = NetGraphMsgHandler<A, L>>,
+ A: Deref,
+ L: Deref,
+> EventHandler for DecoratingEventHandler<E, N, A, L>
+where A::Target: chain::Access, L::Target: Logger {
+ fn handle_event(&self, event: &Event) {
+ if let Some(event_handler) = &self.net_graph_msg_handler {
+ event_handler.handle_event(event);
+ }
+ self.event_handler.handle_event(event);
+ }
+}
+