kaspa_rpc_core/convert/
scope.rs1use crate::{
4 NotifyBlockAddedRequest, NotifyFinalityConflictRequest, NotifyNewBlockTemplateRequest, NotifyPruningPointUtxoSetOverrideRequest,
5 NotifySinkBlueScoreChangedRequest, NotifyUtxosChangedRequest, NotifyVirtualChainChangedRequest,
6 NotifyVirtualDaaScoreChangedRequest,
7};
8use kaspa_notify::scope::*;
9
10macro_rules! into_scope {
11 ($variant:tt) => {
12 paste::paste! {
13 impl From<[<Notify $variant Request>]> for Scope {
14 fn from (item: [<Notify $variant Request>]) -> Self {
15 [<$variant Scope>]::from(item).into()
16 }
17 }
18 }
19 };
20}
21
22macro_rules! from {
23 ($name:ident : $variant:tt, $body:block) => {
25 paste::paste! {
26 impl From<[<Notify $variant Request>]> for [<$variant Scope>] {
27 fn from($name: [<Notify $variant Request>]) -> Self {
28 $body
29 }
30 }
31 into_scope!($variant);
32 }
33 };
34
35 ($variant:tt) => {
37 paste::paste! {
38 impl From<[<Notify $variant Request>]> for [<$variant Scope>] {
39 fn from(_: [<Notify $variant Request>]) -> Self {
40 Self {}
41 }
42 }
43 into_scope!($variant);
44 }
45 };
46}
47
48from!(BlockAdded);
49from!(item: VirtualChainChanged, {
50 Self::new(item.include_accepted_transaction_ids)
51});
52from!(FinalityConflict);
53impl From<&NotifyFinalityConflictRequest> for FinalityConflictResolvedScope {
54 fn from(_: &NotifyFinalityConflictRequest) -> Self {
55 Self::default()
56 }
57}
58from!(item: UtxosChanged, {
59 Self::new(item.addresses.clone())
60});
61from!(SinkBlueScoreChanged);
62from!(VirtualDaaScoreChanged);
63from!(PruningPointUtxoSetOverride);
64from!(NewBlockTemplate);