Custom implement of Serialize for HandshakeMessage
This commit is contained in:
parent
ef4fc02598
commit
df05a1919e
@ -2,7 +2,8 @@ use std::collections::HashMap;
|
||||
|
||||
use anyhow::Result;
|
||||
use rand::{thread_rng, RngCore};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde::ser::SerializeStruct;
|
||||
use serde::{Deserialize, Serialize, Serializer};
|
||||
use serde_json::Value;
|
||||
use sp_client::bitcoin::consensus::serialize;
|
||||
use sp_client::bitcoin::hex::DisplayHex;
|
||||
@ -168,7 +169,7 @@ impl NewTxMessage {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize, Tsify)]
|
||||
#[derive(Debug, PartialEq, Deserialize, Tsify)]
|
||||
#[tsify(into_wasm_abi, from_wasm_abi)]
|
||||
pub struct HandshakeMessage {
|
||||
pub sp_address: String,
|
||||
@ -176,6 +177,32 @@ pub struct HandshakeMessage {
|
||||
pub processes_list: HashMap<OutPoint, Process>,
|
||||
}
|
||||
|
||||
impl Serialize for HandshakeMessage {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
let mut state = serializer.serialize_struct("HandshakeMessage", 3)?;
|
||||
|
||||
state.serialize_field("sp_address", &self.sp_address)?;
|
||||
|
||||
let peers_list: HashMap<String, &OutPoint> = self
|
||||
.peers_list
|
||||
.iter()
|
||||
.map(|(member, outpoint)| {
|
||||
let member_str = serde_json::to_string(member).unwrap();
|
||||
(member_str, outpoint)
|
||||
})
|
||||
.collect();
|
||||
state.serialize_field("peers_list", &peers_list)?;
|
||||
|
||||
// Serialize `processes_list` normally
|
||||
state.serialize_field("processes_list", &self.processes_list)?;
|
||||
|
||||
state.end()
|
||||
}
|
||||
}
|
||||
|
||||
impl HandshakeMessage {
|
||||
pub fn new(sp_address: String, peers_list: HashMap<Member, OutPoint>, processes_list: HashMap<OutPoint, Process>) -> Self {
|
||||
Self {
|
||||
|
Loading…
x
Reference in New Issue
Block a user