src/tools/std_channel_writer.rs: new StdChannelWriter helper class
This commit is contained in:
		@ -28,6 +28,10 @@ pub mod ticket;
 | 
			
		||||
pub mod timer;
 | 
			
		||||
pub mod tty;
 | 
			
		||||
pub mod wrapped_reader_stream;
 | 
			
		||||
 | 
			
		||||
mod std_channel_writer;
 | 
			
		||||
pub use std_channel_writer::*;
 | 
			
		||||
 | 
			
		||||
pub mod xattr;
 | 
			
		||||
 | 
			
		||||
mod process_locker;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								src/tools/std_channel_writer.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/tools/std_channel_writer.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
use std::io::Write;
 | 
			
		||||
use std::sync::mpsc::SyncSender;
 | 
			
		||||
 | 
			
		||||
use failure::*;
 | 
			
		||||
 | 
			
		||||
/// Wrapper around SyncSender, which implements Write
 | 
			
		||||
///
 | 
			
		||||
/// Each write in translated into a send(Vec<u8>).
 | 
			
		||||
pub struct StdChannelWriter(SyncSender<Result<Vec<u8>, Error>>);
 | 
			
		||||
 | 
			
		||||
impl StdChannelWriter {
 | 
			
		||||
    pub fn new(sender: SyncSender<Result<Vec<u8>, Error>>) -> Self {
 | 
			
		||||
        Self(sender)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl Write for StdChannelWriter {
 | 
			
		||||
    fn write(&mut self, buf: &[u8]) -> Result<usize, std::io::Error> {
 | 
			
		||||
        self.0
 | 
			
		||||
            .send(Ok(buf.to_vec()))
 | 
			
		||||
            .map_err(proxmox::sys::error::io_err_other)
 | 
			
		||||
            .and(Ok(buf.len()))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn flush(&mut self) -> Result<(), std::io::Error> {
 | 
			
		||||
        Ok(())
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user