+class GzippedContentWriter(object):
+ def __init__(self, suite, arch):
+ self.queue = Queue.Queue()
+ self.current_file = None
+ self.first_package = True
+ self.output = self.open_file("dists/%s/Contents-%s.gz" % (suite, arch))
+ self.thread = threading.Thread(target=self.write_thread,
+ name='Contents-%s writer'%arch)
+
+ self.thread.start()
+
+ def open_file(self, filename):
+ filepath = Config()["Contents::Root"] + filename
+ filedir = os.path.dirname(filepath)
+ if not os.path.isdir(filedir):
+ os.makedirs(filedir)
+ return gzip.open(filepath, "w")
+
+ def write(self, filename, section, package):
+ self.queue.put((file,section,package))
+
+
+ def write_thread(self):
+ while True:
+ print("hi, i'm a thread" );
+ next = self.queue.get()
+ print("GOT SOMEHTING FROM THE QUEUE" );
+ if isinstance(next, EndOfContents):
+ self.output.write('\n')
+ self.output.close()
+ break
+
+ (filename,section,package)=next
+ if next != current_file:
+ # this is the first file, so write the header first
+ if not current_file:
+ self.output.write(self._getHeader)
+
+ self.output.write('\n%s\t' % filename)
+ self.first_package = True
+ if not first_package:
+ self.output.write(',')
+ else:
+ self.first_package=False
+ self.output.write('%s/%s' % (section,package))