apt  0.9.15
Public Member Functions | Protected Types | Protected Attributes | List of all members
pkgAcqIndexMergeDiffs Class Reference

An item that is responsible for fetching client-merge patches {{{ that need to be applied to a given package index file. More...

#include <acquire-item.h>

Inheritance diagram for pkgAcqIndexMergeDiffs:
pkgAcquire::Item WeakPointable

Public Member Functions

virtual void Failed (std::string Message, pkgAcquire::MethodConfig *Cnf)
 Called when the patch file failed to be downloaded. 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 std::string DescURI ()
 A "descriptive" URI-like string. More...
 
 pkgAcqIndexMergeDiffs (pkgAcquire *Owner, std::string const &URI, std::string const &URIDesc, std::string const &ShortDesc, HashString const &ExpectedHash, DiffInfo const &patch, std::vector< pkgAcqIndexMergeDiffs * > const *const allPatches)
 Create an index merge-diff item. More...
 
- Public Member Functions inherited from pkgAcquire::Item
virtual void Start (std::string Message, unsigned long long Size)
 Invoked when the worker starts to fetch this object. More...
 
virtual std::string Custom600Headers ()
 Custom headers to be sent to the fetch process. More...
 
virtual std::string ShortDesc ()
 Short item description. More...
 
virtual void Finished ()
 Invoked by the worker when the download is completely done.
 
virtual std::string HashSum ()
 HashSum. More...
 
pkgAcquireGetOwner ()
 
virtual bool IsTrusted ()
 
void ReportMirrorFailure (std::string FailCode)
 Report mirror problem. More...
 
 Item (pkgAcquire *Owner)
 Initialize an item. More...
 
virtual ~Item ()
 Remove this item from its owner's queue by invoking pkgAcquire::Remove.
 
- Public Member Functions inherited from WeakPointable
void AddWeakPointer (WeakPointable **weakptr)
 
void RemoveWeakPointer (WeakPointable **weakptr)
 
 ~WeakPointable ()
 

Protected Types

enum  DiffState { StateFetchDiff, StateApplyDiff, StateDoneDiff, StateErrorDiff }
 
- Protected Types inherited from pkgAcquire::Item
enum  RenameOnErrorState { HashSumMismatch, SizeMismatch, InvalidFormat }
 

Protected Attributes

bool Debug
 If true, debugging output will be written to std::clog.
 
pkgAcquire::ItemDesc Desc
 description of the item that is currently being downloaded.
 
std::string RealURI
 URI of the package index file that is being reconstructed.
 
HashString ExpectedHash
 HashSum of the package index file that is being reconstructed.
 
std::string Description
 description of the file being downloaded.
 
struct DiffInfo const patch
 information about the current patch
 
std::vector
< pkgAcqIndexMergeDiffs * >
const *const 
allPatches
 list of all download items for the patches
 
enum
pkgAcqIndexMergeDiffs::DiffState 
State
 
- Protected Attributes inherited from pkgAcquire::Item
pkgAcquireOwner
 The acquire object with which this item is associated.
 

Additional Inherited Members

- Public Types inherited from pkgAcquire::Item
enum  ItemState {
  StatIdle, StatFetching, StatDone, StatError,
  StatAuthError, StatTransientNetworkError
}
 The current status of this item. More...
 
- Public Attributes inherited from pkgAcquire::Item
enum pkgAcquire::Item::ItemState Status
 
std::string ErrorText
 Contains a textual description of the error encountered if #Status is StatError or StatAuthError.
 
unsigned long long FileSize
 The size of the object to fetch.
 
unsigned long long PartialSize
 How much of the object was already fetched.
 
const char * Mode
 If not NULL, contains the name of a subprocess that is operating on this object (for instance, "gzip" or "gpgv").
 
unsigned long ID
 A client-supplied unique identifier. More...
 
bool Complete
 If true, the entire object has been successfully fetched. More...
 
bool Local
 If true, the URI of this object is "local". More...
 
std::string UsedMirror
 
unsigned int QueueCounter
 The number of fetch queues into which this item has been inserted. More...
 
std::string DestFile
 The name of the file into which the retrieved object will be written.
 
- Protected Member Functions inherited from pkgAcquire::Item
void QueueURI (ItemDesc &Item)
 Insert this item into its owner's queue. More...
 
void Dequeue ()
 Remove this item from its owner's queue.
 
void Rename (std::string From, std::string To)
 Rename a file without modifying its timestamp. More...
 
bool RenameOnError (RenameOnErrorState const state)
 Rename failed file and set error. More...
 

Detailed Description

An item that is responsible for fetching client-merge patches {{{ that need to be applied to a given package index file.

Instead of downloading and applying each patch one by one like its sister pkgAcqIndexDiffs this class will download all patches at once and call rred with all the patches downloaded once. Rred will then merge and apply them in one go, which should be a lot faster – but is incompatible with server-based merges of patches like reprepro can do.

See Also
pkgAcqDiffIndex, pkgAcqIndex

Member Enumeration Documentation

enum DiffState
protected

The current status of this patch.

Enumerator
StateFetchDiff 

The diff is currently being fetched.

StateApplyDiff 

The diff is currently being applied.

StateDoneDiff 

the work with this diff is done

StateErrorDiff 

something bad happened and fallback was triggered

Constructor & Destructor Documentation

pkgAcqIndexMergeDiffs ( pkgAcquire Owner,
std::string const &  URI,
std::string const &  URIDesc,
std::string const &  ShortDesc,
HashString const &  ExpectedHash,
DiffInfo const &  patch,
std::vector< pkgAcqIndexMergeDiffs * > const *const  allPatches 
)

Create an index merge-diff item.

Parameters
OwnerThe pkgAcquire object that owns this item.
URIThe URI of the package index file being reconstructed.
URIDescA long description of this item.
ShortDescA brief description of this item.
ExpectedHashThe expected md5sum of the completely reconstructed package index file; the index file will be tested against this value when it is entirely reconstructed.
patchcontains infos about the patch this item is supposed to download which were read from the index
allPatchescontains all related items so that each item can check if it was the last one to complete the download step

References Debug, Desc, pkgAcquire::ItemDesc::Description, Description, pkgAcquire::Item::DestFile, DiffInfo::file, pkgAcquire::ItemDesc::Owner, pkgAcquire::Item::QueueURI(), RealURI, pkgAcquire::Item::ShortDesc(), pkgAcquire::ItemDesc::ShortDesc, and pkgAcquire::ItemDesc::URI.

Member Function Documentation

virtual std::string 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.

void 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
MessageData from the acquire method. Use LookupTag() to parse it.
SizeThe size of the object that was fetched.
HashThe HashSum of the object that was fetched.
CnfThe method via which the object was fetched.
See Also
pkgAcqMethod

Reimplemented from pkgAcquire::Item.

References allPatches, pkgAcquire::Item::Complete, Debug, Desc, pkgAcquire::Item::DestFile, ExpectedHash, DiffInfo::file, pkgAcquire::Item::Local, pkgAcquire::Item::Mode, patch, pkgAcquire::Item::QueueURI(), RealURI, pkgAcquire::Item::Rename(), pkgAcquire::Item::RenameOnError(), StateApplyDiff, StateDoneDiff, StateFetchDiff, and pkgAcquire::ItemDesc::URI.

void Failed ( std::string  Message,
pkgAcquire::MethodConfig Cnf 
)
virtual

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.

References allPatches, pkgAcquire::Item::Complete, Debug, pkgAcquire::Item::Dequeue(), Desc, Description, ExpectedHash, pkgAcquire::Item::Owner, RealURI, pkgAcquire::ItemDesc::ShortDesc, pkgAcquire::Item::StatDone, StateDoneDiff, StateErrorDiff, and pkgAcquire::ItemDesc::URI.


The documentation for this class was generated from the following files: