fidl_next_protocol/
buffer.rs
1use fidl_next_codec::{
6 DecodeError, DecoderExt as _, EncodeError, EncoderExt as _, WireU32, WireU64,
7};
8
9use crate::{Transport, WireMessageHeader, FLAG_0_WIRE_FORMAT_V2_BIT, MAGIC_NUMBER};
10
11pub fn encode_header<T: Transport>(
13 buffer: &mut T::SendBuffer,
14 txid: u32,
15 ordinal: u64,
16) -> Result<(), EncodeError> {
17 buffer.encode_next(&mut WireMessageHeader {
18 txid: WireU32(txid),
19 flags: [FLAG_0_WIRE_FORMAT_V2_BIT, 0, 0],
20 magic_number: MAGIC_NUMBER,
21 ordinal: WireU64(ordinal),
22 })
23}
24
25pub fn decode_header<T: Transport>(
27 mut buffer: &mut T::RecvBuffer,
28) -> Result<(u32, u64), DecodeError> {
29 let (txid, ordinal) = {
30 let header = buffer.decode_next::<WireMessageHeader>()?;
31 (*header.txid, *header.ordinal)
32 };
33
34 Ok((txid, ordinal))
35}