Package backend :: Package satellite_tools :: Package disk_dumper :: Module string_buffer
[hide private]
[frames] | no frames]

Source Code for Module backend.satellite_tools.disk_dumper.string_buffer

 1  # 
 2  # Copyright (c) 2008--2015 Red Hat, Inc. 
 3  # 
 4  # This software is licensed to you under the GNU General Public License, 
 5  # version 2 (GPLv2). There is NO WARRANTY for this software, express or 
 6  # implied, including the implied warranties of MERCHANTABILITY or FITNESS 
 7  # FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 
 8  # along with this software; if not, see 
 9  # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 
10  # 
11  # Red Hat trademarks are not licensed under GPLv2. No permission is 
12  # granted to use or replicate Red Hat trademarks that are incorporated 
13  # in this software or its documentation. 
14  # 
15  # 
16  # Simple string buffer that wraps around streams to speed up writes 
17  # 
18   
19  import sys 
20  import time 
21   
22 -class StringBuffer:
23
24 - def __init__(self, stream):
25 self.stream = stream 26 self.buffer_size = 65536 27 self.buffer = ""
28
29 - def write(self, data):
30 self.buffer = self.buffer + data 31 if len(self.buffer) < self.buffer_size: 32 return 33 # The buffer is full, send it 34 self.stream.write(self.buffer[:self.buffer_size]) 35 self.buffer = self.buffer[self.buffer_size:]
36
37 - def flush(self):
38 if self.buffer: 39 self.stream.write(self.buffer) 40 self.buffer = ""
41
42 - def close(self):
43 self.flush()
44
45 - def __del__(self):
46 self.close()
47 48 49 if __name__ == '__main__': 50 sb = StringBuffer(sys.stdout) 51 sb.buffer_size = 10 52 53 while 1: 54 sb.write('a') 55 time.sleep(.2) 56