in optee-utee/src/net.rs [148:186]
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
let mut length: u32 = buf.len() as _;
let ret = unsafe {
((*raw::TEE_tcpSocket).send)(
self.handle,
buf.as_ptr() as *const u8 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_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",
)),
raw::TEE_ISOCKET_ERROR_LARGE_BUFFER => Err(io::Error::new(
ErrorKind::Other,
"TEE_ISOCKET_ERROR_LARGE_BUFFER",
)),
_ => panic!("Unexpected return value"),
}
}