in optee-utee/src/net.rs [276:314]
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
let mut length: u32 = buf.len() as _;
let ret = unsafe {
((*raw::TEE_udpSocket).recv)(
self.handle,
buf.as_mut_ptr() as _,
&mut length,
raw::TEE_TIMEOUT_INFINITE,
)
};
match ret {
raw::TEE_SUCCESS => Ok(length as _),
raw::TEE_ERROR_CANCEL => {
Err(io::Error::new(ErrorKind::Interrupted, "TEE_ERROR_CANCEL"))
}
raw::TEE_ISOCKET_ERROR_TIMEOUT => Err(io::Error::new(
ErrorKind::TimedOut,
"TEE_ISOCKET_ERROR_TIMEOUT",
)),
raw::TEE_ERROR_COMMUNICATION => Err(io::Error::new(
ErrorKind::ConnectionAborted,
"TEE_ERROR_COMMUNICATION",
)),
raw::TEE_ISOCKET_ERROR_REMOTE_CLOSED => Err(io::Error::new(
ErrorKind::ConnectionAborted,
"TEE_ISOCKET_ERROR_REMOTE_CLOSED",
)),
raw::TEE_ISOCKET_ERROR_PROTOCOL => Err(io::Error::new(
ErrorKind::Other,
"TEE_ISOCKET_ERROR_PROTOCOL",
)),
raw::TEE_ISOCKET_WARNING_PROTOCOL => Err(io::Error::new(
ErrorKind::Other,
"TEE_ISOCKET_WARNING_PROTOCOL",
)),
_ => panic!("Unexpected return value"),
}
}