fidl_next_protocol/
body.rs1use fidl_next_codec::{AsDecoder, DecoderExt};
6
7use crate::Transport;
8use crate::wire::MessageHeader;
9
10pub struct Body<T: Transport> {
15 buffer: T::RecvBuffer,
16}
17
18impl<T: Transport> Body<T> {
19 pub fn new(buffer: T::RecvBuffer) -> Self {
21 Self { buffer }
22 }
23}
24
25unsafe impl<'de, T: Transport> AsDecoder<'de> for Body<T> {
26 type Decoder = <T::RecvBuffer as AsDecoder<'de>>::Decoder;
27
28 fn as_decoder(&'de mut self) -> Self::Decoder {
29 let mut decoder = self.buffer.as_decoder();
30 let _ = decoder.take_slot::<MessageHeader>();
31 decoder
32 }
33}