fix(network): fix bad codec for tx monitoring messages (#298)
This commit is contained in:
parent
dea731d58b
commit
90b228492c
2 changed files with 29 additions and 6 deletions
|
|
@ -80,12 +80,13 @@ impl<'b> Decode<'b, ()> for Message {
|
|||
// find the specs
|
||||
4 => Ok(Message::AwaitAcquire),
|
||||
5 => Ok(Message::RequestNextTx),
|
||||
6 => match d.array()? {
|
||||
Some(_) => {
|
||||
let cbor: pallas_codec::utils::CborWrap<Tx> = d.decode()?;
|
||||
Ok(Message::ResponseNextTx(Some(cbor.unwrap())))
|
||||
6 => match d.datatype()? {
|
||||
pallas_codec::minicbor::data::Type::Array
|
||||
| pallas_codec::minicbor::data::Type::ArrayIndef => {
|
||||
let tx = d.decode()?;
|
||||
Ok(Message::ResponseNextTx(Some(tx)))
|
||||
}
|
||||
None => Ok(Message::ResponseNextTx(None)),
|
||||
_ => Ok(Message::ResponseNextTx(None)),
|
||||
},
|
||||
7 => {
|
||||
let id = d.decode()?;
|
||||
|
|
@ -112,3 +113,21 @@ impl<'b> Decode<'b, ()> for Message {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub mod tests {
|
||||
const EXAMPLE_RESPONSE_NEXT_TX_WITH_DATA: &str = "82068205d81859013184a5008282582003e4aea27ebacf5f50b10ac60cc84deba96569ce8a47fdf9199998d1fd16ec0601825820eebf8249544b7eefa7839510dfd58a7ed420f2254bd3bf632baea8cd0928b00102018182583901b98f57f569aba4cffc4d9c791f099374e9403ed5e2cb614eab25b78278b1312c2c271d260db425b8b9847ab142b395b4598d3c0b383aa696821a00924172a1581c09f2d4e4a5c3662f4c1e6a7d9600e9605279dbdcedb22d4507cb6e75a1435350461a0422bb35021a00029f3d031a063ec6470800a100818258208293ac2260e28a07657f77087d1d7ff5e3ced29ff4385abf60a9546e2bcbc04a5840d69ce3a8f9713513a9baf473c1be08fd17d1a85df2881dc107fb1f68ce02c8e7adcf1c91bce7fb58868908f7ac47310a8e97d95780beadcfd8493bebbb914d0df5f6";
|
||||
|
||||
#[test]
|
||||
fn test_next_tx_response() {
|
||||
let bytes = hex::decode(EXAMPLE_RESPONSE_NEXT_TX_WITH_DATA).unwrap();
|
||||
let msg: super::Message = pallas_codec::minicbor::decode(&bytes).unwrap();
|
||||
|
||||
if let super::Message::ResponseNextTx(Some((era, body))) = msg {
|
||||
assert_eq!(era, 5);
|
||||
assert_eq!(body.len(), 305);
|
||||
} else {
|
||||
unreachable!();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
use pallas_codec::utils::TagWrap;
|
||||
|
||||
pub type Slot = u64;
|
||||
pub type TxId = String;
|
||||
pub type Tx = Vec<u8>;
|
||||
pub type Era = u8;
|
||||
pub type TxBody = pallas_codec::utils::Bytes;
|
||||
pub type Tx = (Era, TagWrap<TxBody, 24>);
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Clone)]
|
||||
pub enum State {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue