use std::io::{Read, Write};
use mkit_rpc::mkit::rpc::v1::ssh::SshFrame;
use super::session::{FrameIoError, FrameSink, FrameSource};
use crate::rt::MaybeSend;
#[derive(Debug)]
pub struct ReadFrames<R>(pub R);
impl<R: Read + MaybeSend> FrameSource for ReadFrames<R> {
async fn next_frame(&mut self) -> Result<SshFrame, FrameIoError> {
mkit_rpc::read_frame(&mut self.0).map_err(FrameIoError::from)
}
}
#[derive(Debug)]
pub struct WriteFrames<W>(pub W);
impl<W: Write + MaybeSend> FrameSink for WriteFrames<W> {
async fn send(&mut self, frame: &SshFrame) -> Result<(), FrameIoError> {
mkit_rpc::write_frame(&mut self.0, frame).map_err(FrameIoError::from)
}
}