apt: apt-pkg/acquire-worker.h Source File

apt 2.7.6 commandline package manager

acquire-worker.h
Go to the documentation of this file.
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
3/* ######################################################################
4
5 Acquire Worker - Worker process manager
6
7 Each worker class is associated with exactly one subprocess.
8
9 ##################################################################### */
10 /*}}}*/
11
18#ifndef PKGLIB_ACQUIRE_WORKER_H
19#define PKGLIB_ACQUIRE_WORKER_H
20
21#include <apt-pkg/acquire.h>
22#include <apt-pkg/weakptr.h>
23
24#include <string>
25#include <vector>
26#include <sys/types.h>
27
47class APT_PUBLIC pkgAcquire::Worker : public WeakPointable
48{
50 void * const d;
51
52 friend class pkgAcquire;
53
54 protected:
55 friend class Queue;
56
61 Worker *NextQueue;
62
64 Worker *NextAcquire;
65
67 Queue *OwnerQ;
68
72 pkgAcquireStatus *Log;
73
78 MethodConfig *Config;
79
84 std::string Access;
85
87 pid_t Process;
88
94 int InFd;
95
101 int OutFd;
102
105 int PrivSepSocketFd;
106 int PrivSepSocketFdChild;
107
113 bool InReady;
114
120 bool OutReady;
121
123 bool Debug;
124
128 std::vector<std::string> MessageQueue;
129
134 std::string OutQueue;
135
142 void Construct();
143
154 bool ReadMessages();
155
165 bool RunMessages();
166
173 bool InFdReady();
174
182 bool OutFdReady();
183
193 bool Capabilities(std::string Message);
194
211 bool SendConfiguration();
212
224 bool MediaChange(std::string Message);
225
235 bool MethodFailure();
236
242 void ItemDone();
243
244 public:
245
247 pkgAcquire::Queue::QItem *CurrentItem;
248
252 std::string Status;
253
263 bool QueueItem(pkgAcquire::Queue::QItem *Item);
264 APT_HIDDEN bool ReplyAux(pkgAcquire::ItemDesc const &Item);
265
273 bool Start();
274
278 void Pulse();
279
281 inline const MethodConfig *GetConf() const {return Config;};
282
294 Worker(Queue *OwnerQ,MethodConfig *Config,pkgAcquireStatus *Log);
295
306 explicit Worker(MethodConfig *Config);
307
313 virtual ~Worker();
314
315private:
316 APT_HIDDEN void PrepareFiles(char const * const caller, pkgAcquire::Queue::QItem const * const Itm);
317 APT_HIDDEN void HandleFailure(std::vector<pkgAcquire::Item *> const &ItmOwners,
318 pkgAcquire::MethodConfig *const Config, pkgAcquireStatus *const Log,
319 std::string const &Message, bool const errTransient, bool const errAuthErr);
320};
321
324#endif
acquire.h
WeakPointable
Definition weakptr.h:34
pkgAcquireStatus
A monitor object for downloads controlled by the pkgAcquire class. {{{.
Definition acquire.h:703
pkgAcquire
Represents the process by which a pkgAcquire object should retrieve a file or a collection of files.
Definition acquire-item.h:59
pkgAcquire::Access
std::string Access
The access method to be used by this worker.
Definition acquire-worker.h:84
pkgAcquire::OutReady
bool OutReady
Set to true if the worker is in a state in which it is legal to send commands to it.
Definition acquire-worker.h:120
pkgAcquire::ReadMessages
bool ReadMessages()
Retrieve any available messages from the subprocess.
pkgAcquire::RunMessages
bool RunMessages()
Parse and dispatch pending messages.
pkgAcquire::OutQueue
std::string OutQueue
Buffers pending writes to the subprocess.
Definition acquire-worker.h:134
pkgAcquire::OutFdReady
bool OutFdReady()
Send any pending commands to the subprocess.
pkgAcquire::InFd
int InFd
A file descriptor connected to the standard output of the subprocess.
Definition acquire-worker.h:94
pkgAcquire::Config
MethodConfig * Config
The configuration of this method. On startup, the target of this pointer is filled in with basic data...
Definition acquire-worker.h:78
pkgAcquire::QueueItem
bool QueueItem(pkgAcquire::Queue::QItem *Item)
Tell the subprocess to download the given item.
pkgAcquire::NextAcquire
Worker * NextAcquire
The next link on the Acquire list.
Definition acquire-worker.h:64
pkgAcquire::Process
pid_t Process
The PID of the subprocess.
Definition acquire-worker.h:87
pkgAcquire::InFdReady
bool InFdReady()
Read and dispatch any pending messages from the subprocess.
pkgAcquire::MediaChange
bool MediaChange(std::string Message)
Handle a 403 Media Change message.
pkgAcquire::ItemDone
void ItemDone()
Invoked when a fetch job is completed, either successfully or unsuccessfully.
pkgAcquire::NextQueue
Worker * NextQueue
The next link on the Queue list.
Definition acquire-worker.h:61
pkgAcquire::Log
pkgAcquireStatus * Log
The download progress indicator to which progress messages should be sent.
Definition acquire-worker.h:72
pkgAcquire::InReady
bool InReady
Set to true if the worker is in a state in which it might generate data or command responses.
Definition acquire-worker.h:113
pkgAcquire::MethodFailure
bool MethodFailure()
Invoked when the worked process dies unexpectedly.
pkgAcquire::OwnerQ
Queue * OwnerQ
The Queue with which this worker is associated.
Definition acquire-worker.h:67
pkgAcquire::Construct
void Construct()
Common code for the constructor.
pkgAcquire::Capabilities
bool Capabilities(std::string Message)
Handle a 100 Capabilities response from the subprocess.
pkgAcquire::Start
bool Start()
Start up the worker and fill in Config.
pkgAcquire::Worker
Worker(Queue *OwnerQ, MethodConfig *Config, pkgAcquireStatus *Log)
Create a new Worker to download files.
pkgAcquire::GetConf
const MethodConfig * GetConf() const
Definition acquire-worker.h:281
pkgAcquire::Debug
bool Debug
Definition acquire-worker.h:123
pkgAcquire::MessageQueue
std::vector< std::string > MessageQueue
The raw text values of messages received from the worker, in sequence.
Definition acquire-worker.h:128
pkgAcquire::PrivSepSocketFd
int PrivSepSocketFd
The socket to send SCM_RIGHTS message through.
Definition acquire-worker.h:105
pkgAcquire::CurrentItem
pkgAcquire::Queue::QItem * CurrentItem
The queue entry that is currently being downloaded.
Definition acquire-worker.h:247
pkgAcquire::Status
std::string Status
The most recent status string received from the subprocess.
Definition acquire-worker.h:252
pkgAcquire::Worker
Worker(MethodConfig *Config)
Create a new Worker that should just retrieve information about the fetch method.
pkgAcquire::~Worker
virtual ~Worker()
Clean up this worker.
pkgAcquire::Pulse
void Pulse()
Update the worker statistics (CurrentSize, TotalSize, etc).
pkgAcquire::OutFd
int OutFd
A file descriptor connected to the standard input of the subprocess.
Definition acquire-worker.h:101
pkgAcquire::SendConfiguration
bool SendConfiguration()
Send a 601 Configuration message (containing the APT configuration) to the subprocess.