transaction_pool/
listener.rs1use crate::error::Error;
10use std::{
11 fmt::{Debug, LowerHex},
12 sync::Arc,
13};
14
15pub trait Listener<T> {
19 fn added(&mut self, _tx: &Arc<T>, _old: Option<&Arc<T>>) {}
24
25 fn rejected<H: Debug + LowerHex>(&mut self, _tx: &Arc<T>, _reason: &Error<H>) {}
28
29 fn dropped(&mut self, _tx: &Arc<T>, _by: Option<&T>) {}
31
32 fn invalid(&mut self, _tx: &Arc<T>) {}
34
35 fn canceled(&mut self, _tx: &Arc<T>) {}
37
38 fn culled(&mut self, _tx: &Arc<T>) {}
40}
41
42#[derive(Debug)]
44pub struct NoopListener;
45impl<T> Listener<T> for NoopListener {}
46
47impl<T, A, B> Listener<T> for (A, B)
48where
49 A: Listener<T>,
50 B: Listener<T>,
51{
52 fn added(&mut self, tx: &Arc<T>, old: Option<&Arc<T>>) {
53 self.0.added(tx, old);
54 self.1.added(tx, old);
55 }
56
57 fn rejected<H: Debug + LowerHex>(&mut self, tx: &Arc<T>, reason: &Error<H>) {
58 self.0.rejected(tx, reason);
59 self.1.rejected(tx, reason);
60 }
61
62 fn dropped(&mut self, tx: &Arc<T>, by: Option<&T>) {
63 self.0.dropped(tx, by);
64 self.1.dropped(tx, by);
65 }
66
67 fn invalid(&mut self, tx: &Arc<T>) {
68 self.0.invalid(tx);
69 self.1.invalid(tx);
70 }
71
72 fn canceled(&mut self, tx: &Arc<T>) {
73 self.0.canceled(tx);
74 self.1.canceled(tx);
75 }
76
77 fn culled(&mut self, tx: &Arc<T>) {
78 self.0.culled(tx);
79 self.1.culled(tx);
80 }
81}