libzypp 17.37.17
zypp::target::rpm::librpmDb Class Reference

Manage access to librpm database. More...

#include <zypp/target/rpm/librpmDb.h>

Inheritance diagram for zypp::target::rpm::librpmDb:

Classes

class  D
 librpmDb internal database handle More...
class  db_const_iterator
 Subclass to retrieve rpm database content. More...

Public Types

using Ptr = intrusive_ptr<librpmDb>
using constPtr = intrusive_ptr<const librpmDb>

Public Member Functions

 ~librpmDb () override
 Destructor.
const Pathnameroot () const
const PathnamedbPath () const
std::ostream & dumpOn (std::ostream &str) const override
 Dump debug info.
Public Member Functions inherited from zypp::base::ReferenceCounted
 ReferenceCounted ()
 Default ctor.
 ReferenceCounted (const ReferenceCounted &rhs)
 Copy ctor.
virtual ~ReferenceCounted ()
 Dtor.
ReferenceCountedoperator= (const ReferenceCounted &)
 Assignment.
unsigned refCount () const
 Return reference counter value.
void ref () const
 Add a reference.
void unref () const
 Release a reference.

Static Public Member Functions

static bool globalInit ()
 Initialize lib librpm (read configfiles etc.).
static std::string expand (const std::string &macro_r)
static Pathname suggestedDbPath (const Pathname &root_r)
static bool dbExists (const Pathname &root_r, const Pathname &dbPath_r=Pathname())
static librpmDb::constPtr dbOpenIf (const Pathname &root_r, const Pathname &dbPath_r=Pathname())
 Open the rpmdb below the system at root_r (if it exists).
static librpmDb::constPtr dbOpenCreate (const Pathname &root_r, const Pathname &dbPath_r=Pathname())
 Assert the rpmdb below the system at root_r exists.
Static Public Member Functions inherited from zypp::base::ReferenceCounted
static void add_ref (const ReferenceCounted *ptr_r)
 Called by zypp::intrusive_ptr to add a reference.
static void release (const ReferenceCounted *ptr_r)
 Called by zypp::intrusive_ptr to add a reference.

Private Member Functions

 librpmDb (const Pathname &root_r, const Pathname &dbPath_r, bool readonly_r=true)
 Private constructor!
void unref_to (unsigned refCount_r) const override
 Trigger from Rep, after refCount was decreased.

Static Private Member Functions

static void dbAccess (librpmDb::Ptr &ptr_r)
 INTENTIONALLY UNDEFINED<\B> because of bug in Ptr classes which allows implicit conversion from librpmDb::Ptr to librpmDb::constPtr.
static librpmDb::constPtr dbAccess (const Pathname &root_r, const Pathname &dbPath_r, bool create_r=false)
 Internal workhorse managing database creation and access.

Private Attributes

D_d

(Note that these are not member symbols.)

std::ostream & operator<< (std::ostream &str, const librpmDb::db_const_iterator &obj) ZYPP_API
 stream output

Additional Inherited Members

Protected Member Functions inherited from zypp::base::ReferenceCounted
virtual void ref_to (unsigned) const
 Trigger derived classes after refCount was increased.

Detailed Description

Manage access to librpm database.

Definition at line 51 of file librpmDb.h.

Member Typedef Documentation

◆ Ptr

◆ constPtr

Definition at line 55 of file librpmDb.h.

Constructor & Destructor Documentation

◆ librpmDb()

zypp::target::rpm::librpmDb::librpmDb ( const Pathname & root_r,
const Pathname & dbPath_r,
bool readonly_r = true )
private

Private constructor!

librpmDb objects are to be created via static interface only.

Definition at line 227 of file librpmDb.cc.

◆ ~librpmDb()

zypp::target::rpm::librpmDb::~librpmDb ( )
override

Destructor.

Closes rpmdb.

Definition at line 231 of file librpmDb.cc.

Member Function Documentation

◆ dbAccess() [1/2]

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
RpmException

◆ 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 139 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 159 of file librpmDb.cc.

◆ 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 existing db, otherwise the default location suggested by rpm's config.
Exceptions
RpmExceptionif root is not an absolute path or no directory for the rpmdb can determined.

Definition at line 171 of file librpmDb.cc.

◆ dbExists()

bool zypp::target::rpm::librpmDb::dbExists ( const Pathname & root_r,
const Pathname & dbPath_r = Pathname() )
static
Returns
whether the rpmdb below the system at root_r exists. Unless a dbPath_r is explicitly specified, the systems default rpmdb is used (
See also
suggestedDbPath).
Exceptions
RpmExceptionif no directory for the rpmdb can be determined.

Definition at line 183 of file librpmDb.cc.

◆ dbOpenIf()

librpmDb::constPtr zypp::target::rpm::librpmDb::dbOpenIf ( const Pathname & root_r,
const Pathname & dbPath_r = Pathname() )
static

Open the rpmdb below the system at root_r (if it exists).

If the database does not exist a nullptr is returned. Unless a dbPath_r is explicitly specified, the systems default rpmdb is used (

See also
suggestedDbPath).
Exceptions
RpmExceptionif an existing database can not be opened.

Definition at line 195 of file librpmDb.cc.

◆ dbOpenCreate()

librpmDb::constPtr zypp::target::rpm::librpmDb::dbOpenCreate ( const Pathname & root_r,
const Pathname & dbPath_r = Pathname() )
static

Assert the rpmdb below the system at root_r exists.

If the database does not exist an empty one is created. Unless a dbPath_r is explicitly specified, the systems default rpmdb is used (

See also
suggestedDbPath).
Exceptions
RpmExceptionif the database can not be created or opened.

Definition at line 198 of file librpmDb.cc.

◆ dbAccess() [2/2]

librpmDb::constPtr zypp::target::rpm::librpmDb::dbAccess ( const Pathname & root_r,
const Pathname & dbPath_r,
bool create_r = false )
staticprivate

Internal workhorse managing database creation and access.

Exceptions
RpmExceptionif an existing database can not be opened.

Definition at line 201 of file librpmDb.cc.

◆ unref_to()

void zypp::target::rpm::librpmDb::unref_to ( unsigned refCount_r) const
overrideprivatevirtual

Trigger from Rep, after refCount was decreased.

Reimplemented from zypp::base::ReferenceCounted.

Definition at line 237 of file librpmDb.cc.

◆ root()

const Pathname & zypp::target::rpm::librpmDb::root ( ) const
Returns
This handles root directory for all operations.

Definition at line 240 of file librpmDb.cc.

◆ dbPath()

const Pathname & zypp::target::rpm::librpmDb::dbPath ( ) const
Returns
This handles directory that contains the rpmdb.

Definition at line 243 of file librpmDb.cc.

◆ dumpOn()

std::ostream & zypp::target::rpm::librpmDb::dumpOn ( std::ostream & str) const
overridevirtual

Dump debug info.

Reimplemented from zypp::base::ReferenceCounted.

Definition at line 246 of file librpmDb.cc.

Member Data Documentation

◆ _d

D& zypp::target::rpm::librpmDb::_d
private

Definition at line 147 of file librpmDb.h.


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