Kea: isc::dhcp::LeaseMgrFactory Class Reference

| Kea 2.2.0

Static Public Member Functions | List of all members
isc::dhcp::LeaseMgrFactory Class Reference

Lease Manager Factory. More...

`#include <lease_mgr_factory.h>`

## Static Public Member Functions
static void | create (const std::string &dbaccess)
| Create an instance of a lease manager. More...
static void | destroy ()
| Destroy lease manager. More...
static bool | haveInstance ()
| Indicates if the lease manager has been instantiated. More...
static LeaseMgr & | instance ()
| Return current lease manager. More...

## Detailed Description

Lease Manager Factory.

This class comprises nothing but static methods used to create a lease manager. It analyzes the database information passed to the creation function and instantiates an appropriate lease manager based on the type requested.

Strictly speaking these functions could be stand-alone functions. However, it is convenient to encapsulate them in a class for naming purposes.

Todo:
  : Will need to develop some form of registration mechanism for user-supplied backends (so that there is no need to modify the code).

Definition at line 44 of file lease_mgr_factory.h.

## Member Function Documentation

## ◆ create()

void isc::dhcp::LeaseMgrFactory::create | ( | const std::string & | dbaccess | ) |
| static

Create an instance of a lease manager.

Each database backend has its own lease manager type. This static method sets the "current" lease manager to be a manager of the appropriate type. The actual lease manager is returned by the "instance" method.

Note
  When called, the current lease manager is always destroyed and a new one created - even if the parameters are the same.

dbaccess is a generic way of passing parameters. Parameters are passed in the "name=value" format, separated by spaces. The data MUST include a keyword/value pair of the form "type=dbtype" giving the database type, e.q. "mysql" or "sqlite3".

Parameters

  dbaccess | Database access parameters. These are in the form of "keyword=value" pairs, separated by spaces. They are backend- -end specific, although must include the "type" keyword which gives the backend in use.

Exceptions

  isc::InvalidParameter | dbaccess string does not contain the "type" keyword.
  isc::dhcp::InvalidType | The "type" keyword in dbaccess does not identify a supported backend.

Definition at line 42 of file lease_mgr_factory.cc.

References isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_MEMFILE_DB, isc::dhcp::DHCPSRV_MYSQL_DB, isc::dhcp::DHCPSRV_NOTYPE_DB, isc::dhcp::DHCPSRV_PGSQL_DB, isc::dhcp::DHCPSRV_UNKNOWN_DB, isc_throw, LOG_ERROR, LOG_INFO, isc::db::DatabaseConnection::parse(), and isc::db::DatabaseConnection::redactedAccessString().

Referenced by isc::dhcp::CfgDbAccess::createManagers(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), and isc::dhcp::PgSqlLeaseMgr::dbReconnect().

Here is the call graph for this function:

## ◆ destroy()

void isc::dhcp::LeaseMgrFactory::destroy | ( |  | ) |
| static

Destroy lease manager.

Destroys the current lease manager object. This should have the effect of closing the database connection. The method is a no-op if no lease manager is available.

Definition at line 94 of file lease_mgr_factory.cc.

References isc::dhcp::DHCPSRV_CLOSE_DB, isc::dhcp::DHCPSRV_DBG_TRACE, isc::dhcp::dhcpsrv_logger, and LOG_DEBUG.

Referenced by isc::dhcp::ControlledDhcpv4Srv::~ControlledDhcpv4Srv(), isc::dhcp::ControlledDhcpv6Srv::~ControlledDhcpv6Srv(), isc::dhcp::Dhcpv4Srv::~Dhcpv4Srv(), isc::dhcp::Dhcpv6Srv::~Dhcpv6Srv(), isc::dhcp::CfgDbAccess::createManagers(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), and isc::dhcp::PgSqlLeaseMgr::dbReconnect().

## ◆ haveInstance()

bool isc::dhcp::LeaseMgrFactory::haveInstance | ( |  | ) |
| static

Indicates if the lease manager has been instantiated.

Returns
  True if the lease manager instance exists, false otherwise.

Definition at line 105 of file lease_mgr_factory.cc.

Referenced by isc::dhcp::SrvConfig::updateStatistics().

## ◆ instance()

LeaseMgr & isc::dhcp::LeaseMgrFactory::instance | ( |  | ) |
| static

Return current lease manager.

Returns an instance of the "current" lease manager. An exception will be thrown if none is available.

Exceptions

  isc::dhcp::NoLeaseManager | No lease manager is available: use create() to create one before calling this method.

Definition at line 110 of file lease_mgr_factory.cc.

References isc_throw.

Referenced by isc::dhcp::AllocEngine::allocateLeases6(), isc::dhcp::Dhcpv4Srv::assignLease(), isc::dhcp::Dhcpv6Srv::checkDynamicSubnetChange(), isc::dhcp::Dhcpv6Srv::declineIA(), isc::dhcp::Dhcpv4Srv::declineLease(), isc::dhcp::Dhcpv6Srv::declineLease(), isc::dhcp::AllocEngine::deleteExpiredReclaimedLeases4(), isc::dhcp::AllocEngine::deleteExpiredReclaimedLeases6(), isc::dhcp::Dhcpv4Srv::postAllocateNameUpdate(), isc::dhcp::Dhcpv4Srv::processDecline(), isc::dhcp::Dhcpv4Srv::processRelease(), isc::dhcp::AllocEngine::reclaimExpiredLeases4(), isc::dhcp::AllocEngine::reclaimExpiredLeases6(), isc::dhcp::Dhcpv6Srv::releaseIA_NA(), isc::dhcp::Dhcpv6Srv::releaseIA_PD(), isc::dhcp::AllocEngine::renewLeases6(), isc::dhcp::CfgSubnets4::updateStatistics(), and isc::dhcp::CfgSubnets6::updateStatistics().

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

- lease_mgr_factory.h
- lease_mgr_factory.cc