use crate::session::{Session, SessionError};
pub trait IntoSession {
fn into_session(self) -> Result<Session, SessionError>;
fn is_handshake_finished(&self) -> bool;
}
pub trait Channel<Error, Message> {
fn write_message_external_encoding(&mut self, payload: &[u8]) -> Result<Message, Error>;
fn read_message_external_encoding(&mut self, message: &Message) -> Result<Vec<u8>, Error>;
fn write_message(&mut self, payload: &[u8], out: &mut [u8]) -> Result<usize, Error>;
fn read_message(&mut self, message: &[u8], payload: &mut [u8])
-> Result<(usize, usize), Error>;
}