[]Struct themis::secure_session::TransportError

pub struct TransportError { /* fields omitted */ }

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, 

impl Display for TransportError

impl Debug for TransportError

Auto Trait Implementations

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.