An item that is responsible for fetching all the patches {{{ that need to be applied to a given package index file.
More...
#include <acquire-item.h>
|
| pkgAcqIndexDiffs (pkgAcquire *Owner, std::string URI, std::string URIDesc, std::string ShortDesc, HashString ExpectedHash, std::string ServerSha1, std::vector< DiffInfo > diffs=std::vector< DiffInfo >()) |
| Create an index diff item. More...
|
|
void | AddWeakPointer (WeakPointable **weakptr) |
| Add a new weak pointer. More...
|
|
virtual std::string | Custom600Headers () |
| Custom headers to be sent to the fetch process. More...
|
|
virtual std::string | DescURI () |
| A "descriptive" URI-like string. More...
|
|
virtual void | Done (std::string Message, unsigned long long Size, std::string Md5Hash, pkgAcquire::MethodConfig *Cnf) |
| Invoked by the acquire worker when the object was fetched successfully. More...
|
|
virtual void | Failed (std::string Message, pkgAcquire::MethodConfig *Cnf) |
| Called when the patch file failed to be downloaded. More...
|
|
virtual void | Finished () |
| Invoked by the worker when the download is completely done. More...
|
|
pkgAcquire * | GetOwner () |
|
virtual std::string | HashSum () |
| HashSum. More...
|
|
virtual bool | IsTrusted () |
|
void | RemoveWeakPointer (WeakPointable **weakptr) |
| Remove the weak pointer from the list of weak pointers. More...
|
|
void | ReportMirrorFailure (std::string FailCode) |
| Report mirror problem. More...
|
|
virtual std::string | ShortDesc () |
| Short item description. More...
|
|
virtual void | Start (std::string Message, unsigned long long Size) |
| Invoked when the worker starts to fetch this object. More...
|
|
|
void | Dequeue () |
| Remove this item from its owner's queue. More...
|
|
void | QueueURI (ItemDesc &Item) |
| Insert this item into its owner's queue. More...
|
|
void | Rename (std::string From, std::string To) |
| Rename a file without modifying its timestamp. More...
|
|
|
void | Finish (bool allDone=false) |
| Handle tasks that must be performed after the item finishes downloading. More...
|
|
bool | QueueNextDiff () |
| Queue up the next diff download. More...
|
|
An item that is responsible for fetching all the patches {{{ that need to be applied to a given package index file.
After downloading and applying a single patch, this item will enqueue a new pkgAcqIndexDiffs to download and apply the remaining patches. If no patch can be found that applies to an intermediate file or if one of the patches cannot be downloaded, falls back to downloading the entire package index file using pkgAcqIndex.
- See Also
- pkgAcqDiffIndex, pkgAcqIndex
The current status of this patch.
Enumerator |
---|
StateFetchUnkown |
The diff is in an unknown state.
|
StateFetchDiff |
The diff is currently being fetched.
|
StateUnzipDiff |
The diff is currently being uncompressed.
|
StateApplyDiff |
The diff is currently being applied.
|
The current status of this item.
Enumerator |
---|
StatIdle |
The item is waiting to be downloaded.
|
StatFetching |
The item is currently being downloaded.
|
StatDone |
The item has been successfully downloaded.
|
StatError |
An error was encountered while downloading this item.
|
StatAuthError |
The item was downloaded but its authenticity could not be verified.
|
StatTransientNetworkError |
The item was could not be downloaded because of a transient network error (e.g.
network down)
|
pkgAcqIndexDiffs::pkgAcqIndexDiffs |
( |
pkgAcquire * |
Owner, |
|
|
std::string |
URI, |
|
|
std::string |
URIDesc, |
|
|
std::string |
ShortDesc, |
|
|
HashString |
ExpectedHash, |
|
|
std::string |
ServerSha1, |
|
|
std::vector< DiffInfo > |
diffs = std::vector< DiffInfo >() |
|
) |
| |
Create an index diff item.
After filling in its basic fields, this invokes Finish(true) if #diffs is empty, or QueueNextDiff() otherwise.
- Parameters
-
Owner | The pkgAcquire object that owns this item. |
URI | The URI of the package index file being reconstructed. |
URIDesc | A long description of this item. |
ShortDesc | A brief description of this item. |
ExpectedHash | The expected md5sum of the completely reconstructed package index file; the index file will be tested against this value when it is entirely reconstructed. |
diffs | The remaining diffs from the index of diffs. They should be ordered so that each diff appears before any diff that depends on it. |
virtual std::string pkgAcquire::Item::Custom600Headers |
( |
| ) |
|
|
inlinevirtualinherited |
void pkgAcquire::Item::Dequeue |
( |
| ) |
|
|
inlineprotectedinherited |
virtual std::string pkgAcqIndexDiffs::DescURI |
( |
| ) |
|
|
inlinevirtual |
A "descriptive" URI-like string.
- Returns
- a URI that should be used to describe what is being fetched.
Implements pkgAcquire::Item.
References RealURI.
virtual void pkgAcqIndexDiffs::Done |
( |
std::string |
Message, |
|
|
unsigned long long |
Size, |
|
|
std::string |
Hash, |
|
|
pkgAcquire::MethodConfig * |
Cnf |
|
) |
| |
|
virtual |
Invoked by the acquire worker when the object was fetched successfully.
Note that the object might not have been written to DestFile; check for the presence of an Alt-Filename entry in Message to find the file to which it was really written.
Done is often used to switch from one stage of the processing to the next (e.g. fetching, unpacking, copying). It is one branch of the continuation of the fetch process.
- Parameters
-
Message | Data from the acquire method. Use LookupTag() to parse it. |
Size | The size of the object that was fetched. |
Hash | The HashSum of the object that was fetched. |
Cnf | The method via which the object was fetched. |
- See Also
- pkgAcqMethod
Reimplemented from pkgAcquire::Item.
Called when the patch file failed to be downloaded.
This method will fall back to downloading the whole index file outright; its arguments are ignored.
Reimplemented from pkgAcquire::Item.
void pkgAcqIndexDiffs::Finish |
( |
bool |
allDone = false | ) |
|
|
private |
Handle tasks that must be performed after the item finishes downloading.
Dequeues the item and checks the resulting file's md5sum against ExpectedHash after the last patch was applied. There is no need to check the md5/sha1 after a "normal" patch because QueueNextDiff() will check the sha1 later.
- Parameters
-
allDone | If true, the file was entirely reconstructed, and its md5sum is verified. |
virtual void pkgAcquire::Item::Finished |
( |
| ) |
|
|
inlinevirtualinherited |
Invoked by the worker when the download is completely done.
Reimplemented in pkgAcqArchive.
virtual std::string pkgAcquire::Item::HashSum |
( |
| ) |
|
|
inlinevirtualinherited |
virtual bool pkgAcquire::Item::IsTrusted |
( |
| ) |
|
|
inlinevirtualinherited |
- Returns
- true if this object is being fetched from a trusted source.
Reimplemented in pkgAcqArchive.
bool pkgAcqIndexDiffs::QueueNextDiff |
( |
| ) |
|
|
private |
Queue up the next diff download.
Search for the next available diff that applies to the file that currently exists on disk, and enqueue it by calling QueueURI().
- Returns
- true if an applicable diff was found, false otherwise.
void pkgAcquire::Item::QueueURI |
( |
ItemDesc & |
Item | ) |
|
|
inlineprotectedinherited |
void WeakPointable::RemoveWeakPointer |
( |
WeakPointable ** |
weakptr | ) |
|
|
inlineinherited |
void pkgAcquire::Item::Rename |
( |
std::string |
From, |
|
|
std::string |
To |
|
) |
| |
|
protectedinherited |
Rename a file without modifying its timestamp.
Many item methods call this as their final action.
- Parameters
-
From | The file to be renamed. |
To | The new name of #From. If #To exists it will be overwritten. |
void pkgAcquire::Item::ReportMirrorFailure |
( |
std::string |
FailCode | ) |
|
|
inherited |
Report mirror problem.
This allows reporting mirror failures back to a centralized server. The apt-report-mirror-failure script is called for this
- Parameters
-
FailCode | A short failure string that is send |
virtual std::string pkgAcquire::Item::ShortDesc |
( |
| ) |
|
|
inlinevirtualinherited |
virtual void pkgAcquire::Item::Start |
( |
std::string |
Message, |
|
|
unsigned long long |
Size |
|
) |
| |
|
virtualinherited |
Invoked when the worker starts to fetch this object.
- Parameters
-
Message | RFC822-formatted data from the worker process. Use LookupTag() to parse it. |
Size | The size of the object being fetched. |
- See Also
- pkgAcqMethod
std::vector<DiffInfo> pkgAcqIndexDiffs::available_patches |
|
protected |
The patches that remain to be downloaded, including the patch being downloaded right now.
This list should be ordered so that each diff appears before any diff that depends on it.
- Todo:
- These are indexed by sha1sum; why not use some sort of dictionary instead of relying on ordering and stripping them off the front?
bool pkgAcquire::Item::Complete |
|
inherited |
If true, the entire object has been successfully fetched.
Subclasses should set this to true when appropriate.
bool pkgAcqIndexDiffs::Debug |
|
protected |
If true, debugging output will be written to std::clog.
A description of the item that is currently being downloaded.
std::string pkgAcqIndexDiffs::Description |
|
protected |
A description of the file being downloaded.
std::string pkgAcquire::Item::DestFile |
|
inherited |
The name of the file into which the retrieved object will be written.
std::string pkgAcquire::Item::ErrorText |
|
inherited |
The HashSum of the package index file that is being reconstructed.
unsigned long long pkgAcquire::Item::FileSize |
|
inherited |
The size of the object to fetch.
unsigned long pkgAcquire::Item::ID |
|
inherited |
A client-supplied unique identifier.
This field is initalized to 0; it is meant to be filled in by clients that wish to use it to uniquely identify items.
- Todo:
- it's unused in apt itself
bool pkgAcquire::Item::Local |
|
inherited |
If true, the URI of this object is "local".
The only effect of this field is to exclude the object from the download progress indicator's overall statistics.
const char* pkgAcquire::Item::Mode |
|
inherited |
If not NULL, contains the name of a subprocess that is operating on this object (for instance, "gzip" or "gpgv").
unsigned long long pkgAcquire::Item::PartialSize |
|
inherited |
How much of the object was already fetched.
unsigned int pkgAcquire::Item::QueueCounter |
|
inherited |
The number of fetch queues into which this item has been inserted.
There is one queue for each source from which an item could be downloaded.
- See Also
- pkgAcquire
std::string pkgAcqIndexDiffs::RealURI |
|
protected |
The URI of the package index file that is being reconstructed.
Referenced by DescURI().
std::string pkgAcqIndexDiffs::ServerSha1 |
|
protected |
Stop applying patches when reaching that sha1.
std::string pkgAcquire::Item::UsedMirror |
|
inherited |
The documentation for this class was generated from the following file: