Acquire system {{{

The Acquire system is responsible for retrieving files from local or remote URIs and postprocessing them (for instance, verifying their authenticity). The core class in this system is pkgAcquire, which is responsible for managing the download queues during the download. There is at least one download queue for each supported protocol; protocols such as http may provide one queue per host. More...

## Files

file | acquire-item.h
file | acquire-method.h
file | acquire-worker.h
file | acquire.h

## Classes

class | pkgAcqTransactionItem
| baseclass for the indexes files to manage them all together More...
class | pkgAcqMetaBase
| the manager of a transaction More...
class | pkgAcqMetaIndex
| An item that is responsible for downloading the meta-index {{{ file (i.e., Release) itself and verifying its signature. More...
class | pkgAcqMetaSig
| An acquire item that downloads the detached signature {{{ of a meta-index (Release) file, then queues up the release file itself. More...
class | pkgAcqMetaClearSig
| An item responsible for downloading clearsigned metaindexes {{{. More...
class | pkgAcqBaseIndex
| Common base class for all classes that deal with fetching indexes {{{. More...
class | pkgAcqIndex
| An acquire item that is responsible for fetching an index {{{ file (e.g., Packages or Sources). More...
struct | DiffInfo
class | pkgAcqDiffIndex
| An item that is responsible for fetching an index file of {{{ package list diffs and starting the package list's download. More...
class | pkgAcqIndexMergeDiffs
| An item that is responsible for fetching client-merge patches {{{ that need to be applied to a given package index file. More...
class | pkgAcqIndexDiffs
| An item that is responsible for fetching server-merge patches {{{ that need to be applied to a given package index file. More...
class | pkgAcqArchive
| An item that is responsible for fetching a package file. {{{. More...
class | pkgAcqChangelog
| Retrieve the changelog for the given version {{{. More...
class | pkgAcqFile
| Retrieve an arbitrary file to the current directory. {{{. More...
class | pkgAcqAuxFile
class | pkgAcqMethod
class | pkgAcquire
| The core download scheduler. {{{. More...
struct | pkgAcquire::ItemDesc
| Represents a single download source from which an item should be downloaded. More...
class | pkgAcquire::Queue
| A single download queue in a pkgAcquire object. {{{. More...
class | pkgAcquire::UriIterator
| Iterates over all the URIs being fetched by a pkgAcquire object. {{{. More...
struct | pkgAcquire::MethodConfig
| Information about the properties of a single acquire method. {{{. More...
class | pkgAcquireStatus
| A monitor object for downloads controlled by the pkgAcquire class. {{{. More...
class | pkgAcquire::Item
| Represents the process by which a pkgAcquire object should retrieve a file or a collection of files. More...
class | pkgAcquire::Worker
| A fetch subprocess. More...

## Detailed Description

The Acquire system is responsible for retrieving files from local or remote URIs and postprocessing them (for instance, verifying their authenticity). The core class in this system is pkgAcquire, which is responsible for managing the download queues during the download. There is at least one download queue for each supported protocol; protocols such as http may provide one queue per host.

Each file to download is represented by a subclass of pkgAcquire::Item. The files add themselves to the download queue(s) by providing their URI information to pkgAcquire::Item::QueueURI, which calls pkgAcquire::Enqueue.

Once the system is set up, the Run method will spawn subprocesses to handle the enqueued URIs; the scheduler will then take items from the queues and feed them into the handlers until the queues are empty.

Todo
  Acquire supports inserting an object into several queues at once, but it is not clear what its behavior in this case is, and no subclass of pkgAcquire::Item seems to actually use this capability.