2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-09-03 07:25:18 +00:00

[#2448] make class counter methods virtual in LeaseMgr

This commit is contained in:
Andrei Pavel
2022-07-04 21:34:01 +03:00
parent 7c73b87afe
commit 94e0e8d601
7 changed files with 77 additions and 3 deletions

View File

@@ -792,6 +792,8 @@ public:
return (io_service_);
}
// -- The following are memfile only, but defined in the base LeaseMgr for convenience. --
/// @brief Returns the class lease count for a given class and lease type.
///
/// @param client_class client class for which the count is desired
@@ -802,6 +804,15 @@ public:
virtual size_t getClassLeaseCount(const ClientClass& client_class,
const Lease::Type& ltype = Lease::TYPE_V4) const = 0;
/// @brief Recount the leases per class for V4 leases.
virtual void recountClassLeases4() = 0;
/// @brief Recount the leases per class for V6 leases.
virtual void recountClassLeases6() = 0;
/// @brief Clears the class-lease count map.
virtual void clearClassLeaseCounts() = 0;
private:
/// The IOService object, used for all ASIO operations.
static isc::asiolink::IOServicePtr io_service_;

View File

@@ -1256,7 +1256,7 @@ public:
/// user-context.
///
/// Must be called from a thread-safe context.
void recountClassLeases4();
void recountClassLeases4() override;
/// @brief Recount the leases per class for V6 leases.
///
@@ -1265,12 +1265,12 @@ public:
/// user-context.
///
/// Must be called from a thread-safe context.
void recountClassLeases6();
void recountClassLeases6() override;
/// @brief Clears the class-lease count map.
///
/// Must be called from a thread-safe context.
void clearClassLeaseCounts();
void clearClassLeaseCounts() override;
};
} // namespace dhcp

View File

@@ -3195,6 +3195,21 @@ MySqlLeaseMgr::getClassLeaseCount(const ClientClass& client_class,
return count;
}
void
MySqlLeaseMgr::recountClassLeases4() {
isc_throw(NotImplemented, "MySqlLeaseMgr::recountClassLeases4() not implemented");
}
void
MySqlLeaseMgr::recountClassLeases6() {
isc_throw(NotImplemented, "MySqlLeaseMgr::recountClassLeases6() not implemented");
}
void
MySqlLeaseMgr::clearClassLeaseCounts() {
isc_throw(NotImplemented, "MySqlLeaseMgr::clearClassLeaseCounts() not implemented");
}
LeaseStatsQueryPtr
MySqlLeaseMgr::startLeaseStatsQuery4() {
// Get a context

View File

@@ -988,6 +988,15 @@ private:
virtual size_t getClassLeaseCount(const ClientClass& client_class,
const Lease::Type& ltype = Lease::TYPE_V4) const override;
/// @brief Recount the leases per class for V4 leases.
void recountClassLeases4() override;
/// @brief Recount the leases per class for V6 leases.
void recountClassLeases6() override;
/// @brief Clears the class-lease count map.
void clearClassLeaseCounts() override;
/// @brief Check Error and Throw Exception
///
/// This method invokes @ref MySqlConnection::checkError.

View File

@@ -2398,6 +2398,21 @@ PgSqlLeaseMgr::getClassLeaseCount(const ClientClass& client_class,
return count;
}
void
PgSqlLeaseMgr::recountClassLeases4() {
isc_throw(NotImplemented, "PgSqlLeaseMgr::recountClassLeases4() not implemented");
}
void
PgSqlLeaseMgr::recountClassLeases6() {
isc_throw(NotImplemented, "PgSqlLeaseMgr::recountClassLeases6() not implemented");
}
void
PgSqlLeaseMgr::clearClassLeaseCounts() {
isc_throw(NotImplemented, "PgSqlLeaseMgr::clearClassLeaseCounts() not implemented");
}
LeaseStatsQueryPtr
PgSqlLeaseMgr::startLeaseStatsQuery4() {
// Get a context

View File

@@ -962,6 +962,15 @@ private:
virtual size_t getClassLeaseCount(const ClientClass& client_class,
const Lease::Type& ltype = Lease::TYPE_V4) const override;
/// @brief Recount the leases per class for V4 leases.
void recountClassLeases4() override;
/// @brief Recount the leases per class for V6 leases.
void recountClassLeases6() override;
/// @brief Clears the class-lease count map.
void clearClassLeaseCounts() override;
/// @brief Context RAII Allocator.
class PgSqlLeaseContextAlloc {
public:

View File

@@ -379,6 +379,21 @@ public:
isc_throw(NotImplemented, "ConcreteLeaseMgr::getClassLeaseCount() not implemented");
}
/// @brief Pretends to recount the leases per class for V4 leases.
void recountClassLeases4() override {
isc_throw(NotImplemented, "ConcreteLeaseMgr::recountClassLeases4() not implemented");
}
/// @brief Pretends to recount the leases per class for V6 leases.
void recountClassLeases6() override {
isc_throw(NotImplemented, "ConcreteLeaseMgr::recountClassLeases6() not implemented");
}
/// @brief Pretends to clear the class-lease count map.
void clearClassLeaseCounts() override {
isc_throw(NotImplemented, "ConcreteLeaseMgr::clearClassLeaseCounts() not implemented");
}
/// @brief Returns backend type.
///
/// Returns the type of the backend (e.g. "mysql", "memfile" etc.)