34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			V
		
	
	
| module io
 | |
| 
 | |
| // new_multi_writer returns a Writer that writes to all writers. The write
 | |
| // function of the returned Writer writes to all writers of the MultiWriter,
 | |
| // returns the length of bytes written, and if any writer fails to write the
 | |
| // full length an error is returned and writing to other writers stops, and if
 | |
| // any writer returns an error the error is returned immediately and writing to
 | |
| // other writers stops.
 | |
| pub fn new_multi_writer(writers ...Writer) Writer {
 | |
| 	return &MultiWriter{
 | |
| 		writers: writers
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // MultiWriter writes to all its writers.
 | |
| pub struct MultiWriter {
 | |
| pub mut:
 | |
| 	writers []Writer
 | |
| }
 | |
| 
 | |
| // write writes to all writers of the MultiWriter. Returns the length of bytes
 | |
| // written. If any writer fails to write the full length an error is returned
 | |
| // and writing to other writers stops. If any writer returns an error the error
 | |
| // is returned immediately and writing to other writers stops.
 | |
| pub fn (mut m MultiWriter) write(buf []u8) ?int {
 | |
| 	for mut w in m.writers {
 | |
| 		n := w.write(buf)?
 | |
| 		if n != buf.len {
 | |
| 			return error('io: incomplete write to writer of MultiWriter')
 | |
| 		}
 | |
| 	}
 | |
| 	return buf.len
 | |
| }
 |