apt
0.9.7.8
Main Page
Related Pages
Modules
Classes
Files
File List
apt-pkg
pkgsystem.h
1
// -*- mode: cpp; mode: fold -*-
2
// Description /*{{{*/
3
// $Id: pkgsystem.h,v 1.6 2002/11/11 06:55:50 doogie Exp $
4
/* ######################################################################
5
6
System - Abstraction for running on different systems.
7
8
Instances of this class can be thought of as factories or meta-classes
9
for a variety of more specialized classes. Together this class and
10
it's speciallized offspring completely define the environment and how
11
to access resources for a specific system. There are several sub
12
areas that are all orthogonal - each system has a unique combination of
13
these sub areas:
14
- Versioning. Different systems have different ideas on versions.
15
Within a system all sub classes must follow the same versioning
16
rules.
17
- Local tool locking to prevent multiple tools from accessing the
18
same database.
19
- Candidate Version selection policy - this is probably almost always
20
managed using a standard APT class
21
- Actual Package installation
22
* Indication of what kind of binary formats are supported
23
- Selection of local 'status' indexes that make up the pkgCache.
24
25
It is important to note that the handling of index files is not a
26
function of the system. Index files are handled through a seperate
27
abstraction - the only requirement is that the index files have the
28
same idea of versioning as the target system.
29
30
Upon startup each supported system instantiates an instance of the
31
pkgSystem class (using a global constructor) which will make itself
32
available to the main APT init routine. That routine will select the
33
proper system and make it the global default.
34
35
##################################################################### */
36
/*}}}*/
37
#ifndef PKGLIB_PKGSYSTEM_H
38
#define PKGLIB_PKGSYSTEM_H
39
40
#include <
apt-pkg/pkgcache.h
>
41
42
#include <vector>
43
44
#ifndef APT_8_CLEANER_HEADERS
45
#include <apt-pkg/depcache.h>
46
#endif
47
48
class
pkgDepCache
;
49
class
pkgPackageManager
;
50
class
pkgVersioningSystem
;
51
class
Configuration
;
52
class
pkgIndexFile
;
53
class
PkgFileIterator;
54
55
class
pkgSystem
56
{
57
public
:
58
59
// Global list of supported systems
60
static
pkgSystem
**GlobalList;
61
static
unsigned
long
GlobalListLen;
62
static
pkgSystem
*GetSystem(
const
char
*Label);
63
64
const
char
*Label;
65
pkgVersioningSystem
*VS;
66
67
/* Prevent other programs from touching shared data not covered by
68
other locks (cache or state locks) */
69
virtual
bool
Lock() = 0;
70
virtual
bool
UnLock(
bool
NoErrors =
false
) = 0;
71
72
/* Various helper classes to interface with specific bits of this
73
environment */
74
virtual
pkgPackageManager
*CreatePM(
pkgDepCache
*Cache)
const
= 0;
75
76
/* Load environment specific configuration and perform any other setup
77
necessary */
78
virtual
bool
Initialize(
Configuration
&
/*Cnf*/
) {
return
true
;};
79
80
/* Type is some kind of Globally Unique way of differentiating
81
archive file types.. */
82
virtual
bool
ArchiveSupported(
const
char
*Type) = 0;
83
84
// Return a list of system index files..
85
virtual
bool
AddStatusFiles(std::vector<pkgIndexFile *> &List) = 0;
86
virtual
bool
FindIndex(
pkgCache::PkgFileIterator
File,
87
pkgIndexFile
*&Found)
const
= 0;
88
89
/* Evauluate how 'right' we are for this system based on the filesystem
90
etc.. */
91
virtual
signed
Score(
Configuration
const
&
/*Cnf*/
) {
return
0;};
92
93
pkgSystem
();
94
virtual
~
pkgSystem
() {};
95
};
96
97
// The environment we are operating in.
98
extern
pkgSystem
*_system;
99
100
#endif
Generated on Thu Mar 21 2013 00:34:09 for apt by
1.8.1.2