[−]Struct themis::secure_session::TransportError
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 }
Methods
impl TransportError
pub fn new(description: impl Into<String>) -> TransportError
Returns a new error with a human-readable description.
pub fn unspecified() -> TransportError
Returns an unspecified error.
Trait Implementations
impl<T> From<T> for TransportError where
T: Error + Send + Sync + 'static,
T: Error + Send + Sync + 'static,
fn from(error: T) -> Self
impl Display for TransportError
impl Debug for TransportError
Auto Trait Implementations
impl Send for TransportError
impl Sync for TransportError
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T> From for T
[src]
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,