// Channel管理(辅助模块) // 管理ssh2::Channel生命周期和路由 use anyhow::Result; use ssh2::Channel; use log::{info, debug}; /// Channel Manager pub struct ChannelManager { channel: Channel, } impl ChannelManager { pub fn new(channel: Channel) -> Self { Self { channel } } /// 读取数据 pub fn read(&mut self, buf: &mut [u8]) -> Result { let len = self.channel.read(buf)?; debug!("Read {} bytes from channel", len); Ok(len) } /// 写入数据 pub fn write(&mut self, data: &[u8]) -> Result<()> { self.channel.write_all(data)?; debug!("Write {} bytes to channel", data.len()); Ok(()) } /// 读取字符串 pub fn read_string(&mut self) -> Result { let mut buf = String::new(); self.channel.read_to_string(&mut buf)?; debug!("Read string: {} bytes", buf.len()); Ok(buf) } /// 发送EOF pub fn send_eof(&mut self) -> Result<()> { self.channel.send_eof()?; info!("Sent EOF to channel"); Ok(()) } /// 等待EOF pub fn wait_eof(&mut self) -> Result<()> { self.channel.wait_eof()?; info!("Wait EOF completed"); Ok(()) } /// 关闭channel pub fn close(&mut self) -> Result<()> { self.channel.close()?; info!("Channel closed"); Ok(()) } /// 等待关闭 pub fn wait_close(&mut self) -> Result<()> { self.channel.wait_close()?; info!("Channel wait close completed"); Ok(()) } }