Struct TransportError
pub struct TransportError { /* private fields */ }Expand description
Transport layer error.
This is a type representing failure in transport layer of SecureSessionTransport,
namely its send_data and receive_data methods.
§Examples
TransportError can conveniently wrap any other error using ? operator.
You can also explicitly construct an error with a descriptive string.
use std::io::{Read, Write};
use std::net::TcpStream;
use themis::secure_session::{SecureSessionTransport, TransportError};
struct SocketTransport {
socket: TcpStream,
}
impl SecureSessionTransport for SocketTransport {
fn send_data(&mut self, data: &[u8]) -> Result<usize, TransportError> {
if data.len() >= 256 {
return Err(TransportError::new(format!("too long data: {} bytes", data.len())));
}
let len_buffer = [data.len() as u8];
self.socket.write_all(&len_buffer)?;
self.socket.write_all(data)?;
Ok(data.len())
}
fn receive_data(&mut self, data: &mut [u8]) -> Result<usize, TransportError> {
let mut len_buffer = [0];
self.socket.read_exact(&mut len_buffer)?;
let len = len_buffer[0] as usize;
if data.len() < len {
return Err(TransportError::new("buffer too short"));
}
self.socket.read_exact(&mut data[0..len])?;
Ok(len)
}
// Other methods omitted
}Implementations§
§impl TransportError
impl TransportError
pub fn new(description: impl Into<String>) -> TransportError
pub fn new(description: impl Into<String>) -> TransportError
Returns a new error with a human-readable description.
pub fn unspecified() -> TransportError
pub fn unspecified() -> TransportError
Returns an unspecified error.
Trait Implementations§
§impl Debug for TransportError
impl Debug for TransportError
§impl Display for TransportError
impl Display for TransportError
Auto Trait Implementations§
impl Freeze for TransportError
impl !RefUnwindSafe for TransportError
impl Send for TransportError
impl Sync for TransportError
impl Unpin for TransportError
impl !UnwindSafe for TransportError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more