r319 - in branches/rewrite: . src
Otavio Salvador
partial-mirror-devel@lists.alioth.debian.org
Tue, 16 Nov 2004 11:26:26 -0700
Author: otavio
Date: Tue Nov 16 11:26:25 2004
New Revision: 319
Modified:
branches/rewrite/ (props changed)
branches/rewrite/src/Dists.py
branches/rewrite/src/Download.py
Log:
r277@nurf: otavio | 2004-11-16T18:26:51.565051Z
Change to handle threads and allow to do next tasks locking the systems to wait while all needed downloads finish.
Modified: branches/rewrite/src/Dists.py
==============================================================================
--- branches/rewrite/src/Dists.py (original)
+++ branches/rewrite/src/Dists.py Tue Nov 16 11:26:25 2004
@@ -31,10 +31,10 @@
def __init__ (self, backend):
self._backend = backend
- self.__files = []
+ self._files = []
self._dir = FileSystem(backend["mirror_dir"], backend["name"])
- def __fill_files(self):
+ def _fill_files(self):
for c in self._backend["components"]:
for d in self._backend["distributions"]:
for a in self._backend["architectures"]:
@@ -43,30 +43,24 @@
% (self._backend["server"], d, c, a)
filename = "%s/dists/%s/%s/binary-%s/Packages.gz" \
% (self._backend["mirror_dir"] + self._backend["name"], d, c, a)
- self.__files.append((server, filename))
+ self._files.append((server, filename))
server = "%s/dists/%s/%s/Release" \
% (self._backend["server"], d, c,)
filename = "%s/dists/%s/%s/Release" \
% (self._backend["mirror_dir"] + self._backend["name"], d, c)
- self.__files.append((server, filename))
+ self._files.append((server, filename))
if self._backend["get_sources"]:
server = "%s/dists/%s/%s/source/Sources.gz" \
% (self._backend["server"], d, c,)
filename = "%s/dists/%s/%s/source/Sources.gz" \
% (self._backend["mirror_dir"] + self._backend["name"], d, c)
- self.__files.append((server, filename))
+ self._files.append((server, filename))
def create (self):
""" Get all files """
- for f in self.__files:
- self._get(f)
-
- def update (self):
- """ Get only files that need updates """
- self.__fill_files()
- for f in self.__files:
+ for f in self._files:
self._get(f)
def get_index(self):
@@ -76,8 +70,8 @@
"""
# TODO: Put checking using Release file when available.
files = []
- self.__fill_files()
- for url, f in self.__files:
+ self._fill_files()
+ for url, f in self._files:
if os.path.basename(str(f)) != "Release":
self._dir.uncompress(f)
files.append(str(f.split('.gz')[0]))
@@ -90,11 +84,19 @@
def __init__(self, backend):
Dists.__init__(self, backend)
- def _get(self, file):
- server, filename = file
- self._dir.create(os.path.dirname(filename))
- Download(server, filename)
-
+ def update (self):
+ """ Get only files that need updates """
+ self._fill_files()
+ for f in self._files:
+ server, filename = f
+ self._dir.create(os.path.dirname(filename))
+ Download().get(server, filename)
+
+ for d in Download().fetchers:
+ d.join()
+
+ print "ACABOU!"
+
class LocalDists (Dists):
"""
This class provides methods to fill dists dir downloading local files
@@ -102,7 +104,12 @@
def __init__(self, backend):
Dists.__init__(self, backend)
- def _get(self, file):
- orig, filename = file
- self._dir.create(os.path.dirname(filename))
- os.link (orig.lstrip('file://'), filename)
+ def update (self):
+ """ Get only files that need updates """
+ self._fill_files()
+ for f in self._files:
+ server, filename = f
+ orig, filename = file
+ self._dir.create(os.path.dirname(filename))
+ os.link (orig.lstrip('file://'), filename)
+
Modified: branches/rewrite/src/Download.py
==============================================================================
--- branches/rewrite/src/Download.py (original)
+++ branches/rewrite/src/Download.py Tue Nov 16 11:26:25 2004
@@ -52,7 +52,7 @@
except Empty:
# Doesn't have any other file to download so exit.
return
-
+
f = open(filename, "wb")
curl = pycurl.Curl()
curl.setopt(pycurl.FOLLOWLOCATION, 1)
@@ -102,7 +102,7 @@
""" Fetcher to use """
fetchers = []
- def __init__(self, uri, destine, max_threads=3):
+ def get(self, uri, destine, max_threads=3):
self.queue.put((uri, destine))
# Alloc all needed threads.
@@ -111,3 +111,7 @@
t = DownloadThread()
self.fetchers.append(t)
t.start()
+
+ def join(self):
+ for t in self.fetchers:
+ t.join()