ei/
port.rs

1use std::io;
2
3use crate::consts::*;
4use crate::error::Error;
5use crate::io::{Reader, Writer};
6
7impl<R> Reader<R>
8where
9    R: io::Read,
10{
11    pub fn recv(&mut self) -> Result<Vec<u8>, Error> {
12        let u = self.read_u16()?;
13
14        if self.read_u8()? != ERL_VERSION_MAGIC {
15            return Err(invalid_data!("ERL_VERSION_MAGIC"));
16        }
17
18        self.read_exact_usize(u as usize - 1)
19    }
20}
21
22impl<W> Writer<W>
23where
24    W: io::Write,
25{
26    pub fn send(&mut self, v: &[u8]) -> Result<(), Error> {
27        self.write_u16(v.len() as u16 + 1)?;
28        self.write_u8(ERL_VERSION_MAGIC)?;
29        self.write_all(v)?;
30        self.flush()
31    }
32}