Manage access to librpm database.
More...
#include <target/rpm/librpmDb.h>
|
| librpmDb (const Pathname &root_r, const Pathname &dbPath_r, bool readonly_r) |
| Private constructor! librpmDb objects are to be created via static interface only.
|
|
virtual void | unref_to (unsigned refCount_r) const |
| Trigger from Rep, after refCount was decreased.
|
|
virtual std::ostream & | dumpOn (std::ostream &str) const |
| Overload to realize std::ostream & operator<<.
|
|
virtual void | ref_to (unsigned) const |
| Trigger derived classes after refCount was increased.
|
|
virtual void | unref_to (unsigned) const |
| Trigger derived classes after refCount was decreased.
|
|
Manage access to librpm database.
Definition at line 37 of file librpmDb.h.
◆ Ptr
◆ constPtr
◆ librpmDb()
zypp::target::rpm::librpmDb::librpmDb |
( |
const Pathname & |
root_r, |
|
|
const Pathname & |
dbPath_r, |
|
|
bool |
readonly_r |
|
) |
| |
|
protected |
Private constructor! librpmDb objects are to be created via static interface only.
Definition at line 362 of file librpmDb.cc.
◆ ~librpmDb()
zypp::target::rpm::librpmDb::~librpmDb |
( |
| ) |
|
|
virtual |
◆ dbAccess() [1/4]
static void zypp::target::rpm::librpmDb::dbAccess |
( |
librpmDb::Ptr & |
ptr_r | ) |
|
|
staticprivate |
INTENTIONALLY UNDEFINED<\B> because of bug in Ptr classes which allows implicit conversion from librpmDb::Ptr to librpmDb::constPtr.
Currently we don't want to provide non const handles, as the database is opened READONLY.
- Exceptions
-
◆ newLibrpmDb()
librpmDb * zypp::target::rpm::librpmDb::newLibrpmDb |
( |
| ) |
|
|
staticprivate |
For internal use.
Pointer returned should immediately be wrapped into librpmDb::Ptr.
- Exceptions
-
Definition at line 162 of file librpmDb.cc.
◆ dbAccess() [2/4]
void zypp::target::rpm::librpmDb::dbAccess |
( |
| ) |
|
|
staticprivate |
Access the database at the current default location.
If necessary (eg. after dbRelease), the database is opened. This just creates the internal handle. Once the handle is passed to e.g. some db_const_iterator, the database will be closed if the last outstanding reference goes out of scope. If no external reference is created, you'll have to explicitly call dbRelease to close the database.
- Exceptions
-
Definition at line 244 of file librpmDb.cc.
◆ globalInit()
bool zypp::target::rpm::librpmDb::globalInit |
( |
| ) |
|
|
static |
Initialize lib librpm (read configfiles etc.).
It's called on demand but you may call it anytime.
- Returns
- Whether librpm is initialized.
Definition at line 111 of file librpmDb.cc.
◆ expand()
std::string zypp::target::rpm::librpmDb::expand |
( |
const std::string & |
macro_r | ) |
|
|
static |
- Returns
- librpm macro expansion.
Definition at line 142 of file librpmDb.cc.
◆ stringPath()
static std::string zypp::target::rpm::librpmDb::stringPath |
( |
const Pathname & |
root_r, |
|
|
const Pathname & |
sub_r |
|
) |
| |
|
inlinestatic |
- Returns
- String '(root_r)sub_r' used in debug output.
Definition at line 130 of file librpmDb.h.
◆ defaultRoot()
static const Pathname & zypp::target::rpm::librpmDb::defaultRoot |
( |
| ) |
|
|
inlinestatic |
- Returns
- Current root directory for all operations.
Definition at line 140 of file librpmDb.h.
◆ defaultDbPath()
static const Pathname & zypp::target::rpm::librpmDb::defaultDbPath |
( |
| ) |
|
|
inlinestatic |
- Returns
- Current directory (below root) that contains the rpmdb.
Definition at line 148 of file librpmDb.h.
◆ suggestedDbPath()
Pathname zypp::target::rpm::librpmDb::suggestedDbPath |
( |
const Pathname & |
root_r | ) |
|
|
static |
- Returns
- The preferred location of the rpmdb below root_r. It's the location of an already exising db, otherwise the default location sugested by rpms config.
- Exceptions
-
no symlink
Definition at line 190 of file librpmDb.cc.
◆ dbAccess() [3/4]
void zypp::target::rpm::librpmDb::dbAccess |
( |
const Pathname & |
root_r | ) |
|
|
static |
Adjust access to the given database location, making it the new default location on success.
No relative Pathnames are allowed.
It's not possible to access a database while access is blocked (see blockAccess), but valid Pathnames provided will be stored as new default location.
It's not allowed to switch to another location while a database is accessed. Use dbRelease to force releasing the database first.
- Exceptions
-
Definition at line 219 of file librpmDb.cc.
◆ dbAccess() [4/4]
Same as &ref dbAccess(), but returns the database handle if avaialble, otherwise NULL.
This creates an external reference, thus it should not be used longer than necessary. Be prepared that the handle might become invalid (see dbRelease) later.
- Exceptions
-
Definition at line 264 of file librpmDb.cc.
◆ dbRelease()
unsigned zypp::target::rpm::librpmDb::dbRelease |
( |
bool |
force_r = false | ) |
|
|
static |
If there are no outstanding references to the database (e.g.
by db_const_iterator), the database is closed. Subsequent calls to dbAccess may however open the database again.
If forced, the internal reference is dropped and it will look like the database was closed. But physically the database will be closed after all outstanding references are gone.
- Returns
- The number of outstandig references to the database, 0 if if database was physically closed.
Definition at line 277 of file librpmDb.cc.
◆ blockAccess() [1/2]
unsigned zypp::target::rpm::librpmDb::blockAccess |
( |
| ) |
|
|
static |
Blocks further access to rpmdb.
Basically the same as dbRelease( true ), but subsequent calls to dbAccess will fail returning E_RpmDB_access_blocked.
- Returns
- The number of outstandig references to the database, 0 if if database was physically closed.
Definition at line 314 of file librpmDb.cc.
◆ blockAccess() [2/2]
static unsigned zypp::target::rpm::librpmDb::blockAccess |
( |
const Pathname & |
root_r, |
|
|
const Pathname & |
dbPath_r |
|
) |
| |
|
inlinestatic |
◆ unblockAccess()
void zypp::target::rpm::librpmDb::unblockAccess |
( |
| ) |
|
|
static |
Allow access to rpmdb e.g.
after blockAccess. Subsequent calls to dbAccess will perform.
NOTE: Initially we're in blocked mode. So you must call unblockAccess unblockAccess at least once. Othwise nothing will happen.
- Returns
- The number of outstandig references to the database, 0 if if database was physically closed.
Definition at line 327 of file librpmDb.cc.
◆ isBlocked()
static bool zypp::target::rpm::librpmDb::isBlocked |
( |
| ) |
|
|
inlinestatic |
- Returns
- Whether database access is blocked.
Definition at line 236 of file librpmDb.h.
◆ dumpState()
std::ostream & zypp::target::rpm::librpmDb::dumpState |
( |
std::ostream & |
str | ) |
|
|
static |
◆ unref_to()
void zypp::target::rpm::librpmDb::unref_to |
( |
unsigned |
refCount_r | ) |
const |
|
protectedvirtual |
◆ root()
const Pathname & zypp::target::rpm::librpmDb::root |
( |
| ) |
const |
- Returns
- This handles root directory for all operations.
Definition at line 399 of file librpmDb.cc.
◆ dbPath()
const Pathname & zypp::target::rpm::librpmDb::dbPath |
( |
| ) |
const |
- Returns
- This handles directory that contains the rpmdb.
Definition at line 410 of file librpmDb.cc.
◆ error()
Return any database error.
Usg. if the database was blocked by calling dbRelease(true) or blockAccess.
Definition at line 421 of file librpmDb.cc.
◆ valid()
bool zypp::target::rpm::librpmDb::valid |
( |
| ) |
const |
|
inline |
- Returns
- Whether handle is valid.
Definition at line 305 of file librpmDb.h.
◆ empty()
bool zypp::target::rpm::librpmDb::empty |
( |
| ) |
const |
- Returns
- True if handle is valid and database is empty.
Definition at line 432 of file librpmDb.cc.
◆ size()
unsigned zypp::target::rpm::librpmDb::size |
( |
| ) |
const |
- Returns
- Number of entries in the database (0 if not valid).
Definition at line 443 of file librpmDb.cc.
◆ dont_call_it()
void * zypp::target::rpm::librpmDb::dont_call_it |
( |
| ) |
const |
Dont call it ;) It's for development and testing only.
Definition at line 461 of file librpmDb.cc.
◆ dumpOn()
std::ostream & zypp::target::rpm::librpmDb::dumpOn |
( |
std::ostream & |
str | ) |
const |
|
virtual |
◆ _defaultRoot
Pathname zypp::target::rpm::librpmDb::_defaultRoot { "/" } |
|
staticprivate |
Current root directory for all operations.
(initially /)
Definition at line 67 of file librpmDb.h.
◆ _defaultDbPath
Pathname zypp::target::rpm::librpmDb::_defaultDbPath |
|
staticprivate |
Current directory (below root) that contains the rpmdb.
Definition at line 72 of file librpmDb.h.
◆ _rpmDefaultDbPath
Pathname zypp::target::rpm::librpmDb::_rpmDefaultDbPath |
|
staticprivate |
_dbpath configured in rpm config.
Definition at line 77 of file librpmDb.h.
◆ _defaultDb
Current rpmdb handle.
Definition at line 82 of file librpmDb.h.
◆ _dbBlocked
bool zypp::target::rpm::librpmDb::_dbBlocked = true |
|
staticprivate |
Whether access is blocked (no _defaultDb will be available).
Definition at line 87 of file librpmDb.h.
◆ _d
D& zypp::target::rpm::librpmDb::_d |
|
private |
The documentation for this class was generated from the following files: