iota_network_stack/callback/
layer.rs1use tower::Layer;
6
7use super::{Callback, MakeCallbackHandler};
8
9#[derive(Debug, Copy, Clone)]
16pub struct CallbackLayer<M> {
17 pub(crate) make_handler: M,
18}
19
20impl<M> CallbackLayer<M> {
21 pub fn new(make_handler: M) -> Self
23 where
24 M: MakeCallbackHandler,
25 {
26 Self { make_handler }
27 }
28}
29
30impl<S, M> Layer<S> for CallbackLayer<M>
31where
32 M: Clone,
33{
34 type Service = Callback<S, M>;
35
36 fn layer(&self, inner: S) -> Self::Service {
37 Callback {
38 inner,
39 make_callback_handler: self.make_handler.clone(),
40 }
41 }
42}