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 anyhow::Result;
|
||||||
use rand::{thread_rng, RngCore};
|
use rand::{thread_rng, RngCore};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::ser::SerializeStruct;
|
||||||
|
use serde::{Deserialize, Serialize, Serializer};
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
use sp_client::bitcoin::consensus::serialize;
|
use sp_client::bitcoin::consensus::serialize;
|
||||||
use sp_client::bitcoin::hex::DisplayHex;
|
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)]
|
#[tsify(into_wasm_abi, from_wasm_abi)]
|
||||||
pub struct HandshakeMessage {
|
pub struct HandshakeMessage {
|
||||||
pub sp_address: String,
|
pub sp_address: String,
|
||||||
@ -176,6 +177,32 @@ pub struct HandshakeMessage {
|
|||||||
pub processes_list: HashMap<OutPoint, Process>,
|
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 {
|
impl HandshakeMessage {
|
||||||
pub fn new(sp_address: String, peers_list: HashMap<Member, OutPoint>, processes_list: HashMap<OutPoint, Process>) -> Self {
|
pub fn new(sp_address: String, peers_list: HashMap<Member, OutPoint>, processes_list: HashMap<OutPoint, Process>) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user