summaryrefslogtreecommitdiff
path: root/apt-pkg/acquire.h
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg/acquire.h')
-rw-r--r--apt-pkg/acquire.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h
new file mode 100644
index 000000000..b728d2133
--- /dev/null
+++ b/apt-pkg/acquire.h
@@ -0,0 +1,97 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: acquire.h,v 1.1 1998/10/15 06:59:59 jgg Exp $
+/* ######################################################################
+
+ Acquire - File Acquiration
+
+ This module contians the Acquire system. It is responsible for bringing
+ files into the local pathname space. It deals with URIs for files and
+ URI handlers responsible for downloading or finding the URIs.
+
+ Each file to download is represented by an Acquire::Item class subclassed
+ into a specialization. The Item class can add itself to several URI
+ acquire queues each prioritized by the download scheduler. When the
+ system is run the proper URI handlers are spawned and the the acquire
+ queues are fed into the handlers by the schedular until the queues are
+ empty. This allows for an Item to be downloaded from an alternate source
+ if the first try turns out to fail. It also alows concurrent downloading
+ of multiple items from multiple sources as well as dynamic balancing
+ of load between the sources.
+
+ Schedualing of downloads is done on a first ask first get basis. This
+ preserves the order of the download as much as possible. And means the
+ fastest source will tend to process the largest number of files.
+
+ Internal methods and queues for performing gzip decompression,
+ md5sum hashing and file copying are provided to allow items to apply
+ a number of transformations to the data files they are working with.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_ACQUIRE_H
+#define PKGLIB_ACQUIRE_H
+
+#include <vector>
+#include <string>
+
+#ifdef __GNUG__
+#pragma interface "apt-pkg/acquire.h"
+#endif
+
+class pkgAcquire
+{
+ public:
+
+ class Item;
+ class Queue;
+ class Worker;
+ struct MethodConfig;
+ friend Item;
+
+ protected:
+
+ vector<Item *> Items;
+ Queue *Queues;
+ MethodConfig *Configs;
+
+ void Add(Item *Item);
+ void Remove(Item *Item);
+ void Enqueue(Item *Item,string URI);
+
+ public:
+
+ pkgAcquire();
+ ~pkgAcquire();
+};
+
+// List of possible items queued for download.
+class pkgAcquire::Queue
+{
+ friend pkgAcquire;
+ Queue *Next;
+
+ protected:
+
+ string Access;
+ string URIMatch;
+
+ vector<Item *> Items;
+
+ public:
+};
+
+// Configuration information from each method
+struct pkgAcquire::MethodConfig
+{
+ string Access;
+
+ string Version;
+ bool SingleInstance;
+ bool PreScan;
+
+ MethodConfig();
+ ~MethodConfig();
+};
+
+#endif