mina_p2p_messages/
gossip.rs1use crate::{number::Int32, v2};
2use binprot_derive::{BinProtRead, BinProtWrite};
3use derive_more::{From, TryInto};
4use serde::{Deserialize, Serialize};
5use std::sync::Arc;
6
7#[derive(
8 Clone, Debug, Serialize, Deserialize, BinProtRead, BinProtWrite, PartialEq, From, TryInto,
9)]
10#[serde(tag = "type", content = "message", rename_all = "snake_case")]
11pub enum GossipNetMessageV2 {
12 NewState(Arc<v2::MinaBlockBlockStableV2>),
13 SnarkPoolDiff {
14 message: v2::NetworkPoolSnarkPoolDiffVersionedStableV2,
15 nonce: Int32,
16 },
17 TransactionPoolDiff {
18 message: v2::NetworkPoolTransactionPoolDiffVersionedStableV2,
19 nonce: Int32,
20 },
21}
22
23impl TryFrom<GossipNetMessageV2> for v2::NetworkPoolSnarkPoolDiffVersionedStableV2 {
24 type Error = ();
25
26 fn try_from(value: GossipNetMessageV2) -> Result<Self, Self::Error> {
27 match value {
28 GossipNetMessageV2::SnarkPoolDiff { message, .. } => Ok(message),
29 _ => Err(()),
30 }
31 }
32}
33
34impl TryFrom<GossipNetMessageV2> for v2::NetworkPoolTransactionPoolDiffVersionedStableV2 {
35 type Error = ();
36
37 fn try_from(value: GossipNetMessageV2) -> Result<Self, Self::Error> {
38 match value {
39 GossipNetMessageV2::TransactionPoolDiff { message, .. } => Ok(message),
40 _ => Err(()),
41 }
42 }
43}